V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zn
V2EX  ›  程序员

求推荐一门比 PHP 还要好的、完美的程序开发语言, 详见正文

  •  
  •   zn · 2017-11-29 13:41:32 +08:00 · 14297 次点击
    这是一个创建于 2554 天前的主题,其中的信息可能已经有所发展或是发生改变。

    本人程渣一个,5+年开发经验,正儿八经做过的项目有 PHP 前后端、Java 后端、网游服务端、iOS 和 Mac App。

    现在能熟练使用的语言有 PHP、Java、C、Objective-C,不熟练使用的多了。其中作为主力语言的是“最好的语言 PHP ”,真的不开玩笑,各种内置函数超级方便。我平时开发中碰到的需要重复操作的东西我基本上统统写成各种小工具来对付,其中大部分都是 PHP 写的,真的好用。

    最近在玩逆向中碰到的一个问题是:PHP 对二进制操作实在是不方便,写小工具很麻烦,用 C、Objective-C 写的话每次修改后都要重新编译,更麻烦,同时也不方便跨平台。所以有想换一个主力语言的想法。大致要求如下:

    硬性要求:

    • 可以跨平台交叉编译,要支持 Mac、Linux,最好能支持 iOS、Android 移动平台
    • 原生支持二进制操作、二进制数组操作,能方便地对二进制协议数据拆包、打包
    • 比较成熟,有长期存活潜力,不能用了一两年后就 discontinued 了。

    加分项:

    • 能方便地和 C 混编
    • 能像 Exlixir 那样可以编译运行,也可以脚本方式运行(大大加分)
    • 能像 Go 那样静态编译( Go 语法是在太古老,无爱,但是 Go 真的是好东西啊)
    • 有比较好用的开发环境,有 JetBrains 家族 IDE 支持更好

    轻微加分项:

    • 语法简洁,不要像 Java 那样啰嗦
    • 性能不太差

    目前知道的备选语言有:

    • Rust (感觉过于重量级了)
    • Kotlin Native (缺点是还处于 beta 状态)
    • Go (就语法无爱,别的都很满意)
    • Exlixir (缺点是无法和其他语言混编,也不知道能活多久)

    要求好像很苛刻,我也不知道存不存在满足我的要求的语言,欢迎大家提出自己意见和建议。

    第 1 条附言  ·  2017-12-02 16:32:17 +08:00
    感谢各位的回复,此次发帖大家很积极提建议,让我了解到了 nim 等等挺有意思的新语言,非常非常感谢!
    现在基本上就是决定 Go 和 Python 了,毕竟 IDA 和 Python 是可以无缝配合办事的。

    再次感谢各位!!

    还有那个呵呵呵呵什么的,再给你说一句:呵你妹。
    144 条回复    2017-12-03 12:18:18 +08:00
    1  2  
    blless
        101
    blless  
       2017-11-29 22:25:38 +08:00 via Android   ❤️ 2
    朋友,你听过 nim 吗
    pynix
        102
    pynix  
       2017-11-29 22:35:35 +08:00
    朋友,听说过 crystal 吗?
    wekw
        103
    wekw  
       2017-11-30 00:40:33 +08:00
    跨平台 + 操作二进制 === GoLang (去浪)
    lrxiao
        104
    lrxiao  
       2017-11-30 03:59:31 +08:00
    西加加 锈
    搞逆向不用 Py 写 POC ?
    ericgui
        105
    ericgui  
       2017-11-30 04:35:42 +08:00 via Android
    啥叫 php 前后端啊? php 前端是啥?
    vegito2002
        106
    vegito2002  
       2017-11-30 05:47:45 +08:00
    认识的一个超级大神对 swift 笃信不疑, 所以我现在也是 swift 的脑残粉了, 虽然还没有特别上手.
    Mutoo
        107
    Mutoo  
       2017-11-30 06:22:18 +08:00
    Luajit 完全满足

    硬性要求:

    [*] 可以跨平台交叉编译,要支持 Mac、Linux,最好能支持 iOS、Android 移动平台
    [*] 原生支持二进制操作、二进制数组操作,能方便地对二进制协议数据拆包、打包
    [*] 比较成熟,有长期存活潜力,不能用了一两年后就 discontinued 了。

    加分项:

    [*] 能方便地和 C 混编
    [*] 能像 Exlixir 那样可以编译运行,也可以脚本方式运行(大大加分)
    [*] 能像 Go 那样静态编译( Go 语法是在太古老,无爱,但是 Go 真的是好东西啊)
    [*] 有比较好用的开发环境,有 JetBrains 家族 IDE 支持更好

    轻微加分项:

    [*] 语法简洁,不要像 Java 那样啰嗦
    [*] 性能不太差
    clino
        108
    clino  
       2017-11-30 07:09:19 +08:00 via Android
    前一段有人新发布了一个语言,很容易和 c 继承
    官网就用的这个语言写的
    https://www.v2ex.com/t/405696
    royceyong
        109
    royceyong  
       2017-11-30 08:27:31 +08:00
    拍黄片就好好的拍黄片,不要东想西想的。
    hnbcinfo
        110
    hnbcinfo  
       2017-11-30 08:36:42 +08:00
    .net core 平台下的 C#
    huage
        111
    huage  
       2017-11-30 09:05:53 +08:00
    朋友,你听说过安利吗?
    forbreak
        112
    forbreak  
       2017-11-30 09:11:23 +08:00
    php 这么好,为啥还要找其他语言?
    Clarencep
        113
    Clarencep  
       2017-11-30 09:15:13 +08:00
    同 @hnbcinfo,C#, F#, VB.net +1
    ioth
        114
    ioth  
       2017-11-30 10:01:51 +08:00
    delphi 6
    ioth
        115
    ioth  
       2017-11-30 10:02:15 +08:00
    还有他儿子:c#
    coolcoffee
        116
    coolcoffee  
       2017-11-30 10:03:41 +08:00
    不用找了,PHP 已经是最好的语言了
    eliteYang
        117
    eliteYang  
       2017-11-30 10:09:38 +08:00
    朋友,kotlin 1.2
    pming1
        118
    pming1  
       2017-11-30 10:15:37 +08:00
    .net core 平台下的 C#
    alber1986
        119
    alber1986  
       2017-11-30 10:19:54 +08:00
    萝卜青菜,各有所爱
    zzf2017
        120
    zzf2017  
       2017-11-30 10:26:29 +08:00
    我来引波战:java 才是世界上最好的语言
    hackxing
        121
    hackxing  
       2017-11-30 10:32:41 +08:00
    asp.net core

    C# 才是世界上最好的语言
    xifengzhu
        122
    xifengzhu  
       2017-11-30 10:40:33 +08:00
    ruby
    srlp
        123
    srlp  
       2017-11-30 12:49:58 +08:00 via iPhone
    scala, the better java
    noli
        124
    noli  
       2017-11-30 13:01:27 +08:00
    @hackxing #121
    @pming1 #118
    @Clarencep #113
    @hnbcinfo #110

    同以上这几位推荐 C#. 理由:

    硬性要求:

    [x] 可以跨平台交叉编译,要支持 Mac、Linux,最好能支持 iOS、Android 移动平台
    不光以上这些,还可以支持 Unity3d, Xenko 等等游戏平台。并且 github 上有库可以把 CIL 的 DLL 编译成 C 语言等可用的库。

    [x] 原生支持二进制操作、二进制数组操作,能方便地对二进制协议数据拆包、打包
    Protobuffer, MessagePack, Bson, Thrift 各种协议欢迎你,都有支持 .net 和 .net core 上的库,多数是用原生 C# 写的,意味者实际上可以移植到任何支持 C# 的环境。

    [x] 比较成熟,有长期存活潜力,不能用了一两年后就 discontinued 了。
    C# 编译器、.net core 整个平台(底层 + 库) 都是开源的,生态庞大、体量惊人

    加分项:

    [x] 能方便地和 C 混编
    C# 里面可以直接写 unsafe 代码操作指针,也可以不需要任何第三方工具直接调用 C 库导出的函数。

    [x] 能像 Exlixir 那样可以编译运行,也可以脚本方式运行(大大加分)
    编译运行不用说,visual studio 有 C# REPL,mono 在其他没有 visual studio 的地方也提供了 REPL。

    [x] 能像 Go 那样静态编译( Go 语法是在太古老,无爱,但是 Go 真的是好东西啊)
    C# 的类型比 Go 严格多了,有比 Java 好用得多的泛型、协变、Delegate, 也有像 go 那样方便地支持 异步高性能 (async await )

    [x] 有比较好用的开发环境,有 JetBrains 家族 IDE 支持更好
    只说免费的,Windows 下有 Visual Studio Community, Linux 和 Mac 下有 MonoDevelop(或者其衍生版 Xamarin Studio, Visual Studio for Mac) ,不喜欢太重量级的还有 Visual Studio Code 同样跨多平台开源。
    JetBrains 有 Rider , 付费的,没用过,但可以以开源作者的身份申请一个免费使用的期限。

    轻微加分项:

    [*] 语法简洁,不要像 Java 那样啰嗦
    和 Java 比看上去差不多,但是有超多有用的语法糖,例如 lambda Delegate 等等 Java 8 Java 9 才加入的特性。你若愿意,你可以全程 Linq 和函数式 编程完成全部功能。没有 checked exception (是好是坏可以保留意见),所以代码自由度很高。

    [*] 性能不太差
    比起纯 C 语言的运行速度,差距在一个量级以内的,在某些高并发项目上比 go 慢 2-3 倍——但是,你始终可以用 C 或者 unsafe 代码来拉近这些距离。
    noli
        125
    noli  
       2017-11-30 13:15:35 +08:00
    @noli #124

    关于 C# 跨平台我补充一个我觉得最颠覆世界观的,C# 可以编译成对应的 js,支持 WebGL 等等技术,在浏览器内玩 C# 写的 游戏,详见 JSIL。 现在还可以编译成 webassembly ……
    superkeke
        126
    superkeke  
       2017-11-30 13:24:45 +08:00 via iPhone
    C/C++全满足吧
    mmdsun
        127
    mmdsun  
       2017-11-30 13:26:42 +08:00 via Android
    .NET Core 平台 C#满足你要求。iOS,Android,服务器都吃。支持 Linux
    qfdk
        128
    qfdk  
       2017-11-30 15:03:39 +08:00 via iPhone
    你需要自己定义一门语言 用 xtext 弄个 ide 出来 自动补全都有 编译看自己喜好
    chenxytw
        129
    chenxytw  
       2017-11-30 15:06:48 +08:00
    各种内置函数超级方便的 PHP 不支持二进制操作 0 0 笑死我了
    就凭这点,我觉得 Python 就足以打破你对 PHP 的印象
    anmaz
        130
    anmaz  
       2017-11-30 15:11:51 +08:00 via Android
    你觉得你的主力开发语言 php 好处居然是函数,那我还推荐你学啥。
    shuizhengqi
        131
    shuizhengqi  
       2017-11-30 15:12:42 +08:00
    vhdl
    chuanwu
        132
    chuanwu  
       2017-11-30 15:33:59 +08:00
    @zn 哈哈哈哈 被 Python 的缩进坑过...
    justyy
        133
    justyy  
       2017-11-30 22:16:24 +08:00
    PHP 是最好的语言
    inflationaaron
        134
    inflationaaron  
       2017-12-01 04:19:51 +08:00
    C++

    [x] 可以跨平台交叉编译,要支持 Mac、Linux,最好能支持 iOS、Android 移动平台 --- 有 C 的地方就可以有 C++
    [x] 原生支持二进制操作、二进制数组操作,能方便地对二进制协议数据拆包、打包 --- 非常底层
    [x] 比较成熟,有长期存活潜力,不能用了一两年后就 discontinued 了。--- C++17 已经算是新语言了

    加分项:

    [x] 能方便地和 C 混编 --- 简单
    [ ] 能像 Exlixir 那样可以编译运行,也可以脚本方式运行(大大加分)--- Elixir? 基于 Erlang 的都有虚拟机啊,没法直接编译成二进制
    [x] 能像 Go 那样静态编译( Go 语法是在太古老,无爱,但是 Go 真的是好东西啊)--- C++17 语法新颖过头了(
    [x] 有比较好用的开发环境,有 JetBrains 家族 IDE 支持更好 --- CLion 欢迎你

    轻微加分项:

    [?] 语法简洁,不要像 Java 那样啰嗦 --- 额,看你习惯了
    性能不太差
    php01
        135
    php01  
       2017-12-01 09:01:47 +08:00
    对不起,没有比 php 还要好的语言。世界上最好的语言这个名头,不是轻轻松松捡来的。
    zn
        136
    zn  
    OP
       2017-12-02 16:35:29 +08:00
    @noli 感谢回复! C#确实是个非常好的语言,我蛮喜欢的。但是目前我主要工作环境在 Mac、Linux 下,这些环境下 C# 成熟项目貌似太少了。
    zn
        137
    zn  
    OP
       2017-12-02 16:36:52 +08:00
    @qfdk 大佬说笑啦,自己弄个玩具语言还可以,拿来干活赚钱是不可能的。
    zn
        138
    zn  
    OP
       2017-12-02 16:37:44 +08:00
    @Mutoo LuaJIT 不就是 lua 加强版嘛,本身并不能提供太多东西,主要还是作为胶水使用的。
    noli
        139
    noli  
       2017-12-02 16:43:02 +08:00
    @zn 有什么 C# 项目是其他平台上成熟了,Mac Linux 下就不成熟的呢?你这个提法真是…… php 程序员思维啊……
    zn
        140
    zn  
    OP
       2017-12-02 16:49:32 +08:00
    @noli 毕竟 mono 和微软的实现还是有差距的。毕竟 Mac 和 Linux 下使用 .net 的项目还是太少。
    zn
        141
    zn  
    OP
       2017-12-02 16:50:57 +08:00
    @royceyong 老是拍黄片也会腻的嘛,偶尔做做别的角色也不错啊
    zn
        142
    zn  
    OP
       2017-12-02 16:51:56 +08:00
    @zzf2017 PHP 是最好的语言这个已经是钦定的了,你就不要乱传播谣言了,不然你也有责任,识不识得啊!
    royceyong
        143
    royceyong  
       2017-12-02 17:22:59 +08:00
    @zn 人生苦短,恭喜卤煮入坑。
    zn
        144
    zn  
    OP
       2017-12-03 12:18:18 +08:00
    @royceyong 也不算入什么坑,就是确定再熟练掌握哪一门语言,从此多一把熟练使用的锤子,并不是说从此就钦定这门语言了,如此而已。
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1067 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 22:20 · PVG 06:20 · LAX 14:20 · JFK 17:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.