• 请不要在回答技术问题时复制粘贴 AI 生成的内容
zn
V2EX  ›  程序员

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

  •  
  •   zn · Nov 29, 2017 · 16899 views
    This topic created in 3261 days ago, the information mentioned may be changed or developed.

    本人程渣一个,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 (缺点是无法和其他语言混编,也不知道能活多久)

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

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

    再次感谢各位!!

    还有那个呵呵呵呵什么的,再给你说一句:呵你妹。
    144 replies  •  2017-12-03 12:18:18 +08:00
    1  2  
    ❮ ❯
    shanechiu
    shanechiu
    Nov 29, 2017
    1
    golang 语法怎么了?
    wspsxing
    wspsxing
    Nov 29, 2017
    2
    Crystal?

    还有 fb 的那个 php 备胎.
    alinwu05
    alinwu05
    Nov 29, 2017
    3
    有句话怎么说的,就是没有银蛋!每个语言都有其擅长的地方
    afeicool
    afeicool
    Nov 29, 2017❤️3
    4
    看到楼主的需求,我情不自禁的掏出了我的大蟒蛇,楼主,啃它吧!
    zn
    zn
    OP
    Nov 29, 2017
    5
    @alinwu05 不存在 Silver Bullet,也不需要,只是想找一个更适合我的语言而已。
    zn
    zn
    OP
    Nov 29, 2017
    6
    @afeicool 被 Python 的缩进坑过,咬牙切齿了很久,无爱。
    bilberry
    bilberry
    Nov 29, 2017
    7
    @afeicool 头像好厉害
    afeicool
    afeicool
    Nov 29, 2017❤️2
    8
    @zn 骚年,偏见是人类最大的缺陷之一
    zn
    zn
    OP
    Nov 29, 2017
    9
    @afeicool 骚年,偏见是一种事实存在并且无法避免的缺陷,接受它的存在吧。就像你只会喜欢美女一样,你无法强迫自己喜欢一个哔哔哔哔的女人。
    Gonejack
    Gonejack
    Nov 29, 2017 via iPhone
    10
    除了 Kotlin 和 Swift 还有什么有出息
    zn
    zn
    OP
    Nov 29, 2017
    11
    @shanechiu “ 70 年代的陈旧语法”,大家是这么说的,我很认同。
    mcfog
    mcfog
    Nov 29, 2017
    12
    你的硬性要求里根本没有语法帅气这一条啊,go 的语法不同人的感受不一样,但至少不影响干活嘛

    顺便,我倒是觉得 php 对二进制和字符编码这块的处理挺好的啊,不如说我觉得对比其他家的 string / buffer / byte[] / unicode 等等啰啰嗦嗦一堆,php 抛开一切直接把 byte[]叫做 string 的作法用起来特别舒服啊。
    嘛,说到跨平台、静态编译,或者是大量二进制操作的性能的话确实出局了就是

    楼主既然是 C 选手的话,不如考虑 Lua ?
    jyf007
    jyf007
    Nov 29, 2017
    13
    @mcfog 英雄所见略同,虽然我只会 shell script
    90safe
    90safe
    Nov 29, 2017
    14
    看了要求,第一反应就是 Go 了
    gouchaoer
    gouchaoer
    Nov 29, 2017
    15
    c 咯
    johnny23
    johnny23
    Nov 29, 2017 via iPhone
    16
    只能是 golang 了 虽然我是 c#爱好者
    simo
    simo
    Nov 29, 2017
    17
    抛弃偏见,go 满足你
    tonymitcher
    tonymitcher
    Nov 29, 2017
    18
    Typescript
    gouchaoer
    gouchaoer
    Nov 29, 2017
    19
    我也不喜欢 go 的语法,另外 java 语法那么完美为什么还嫌弃
    askfilm
    askfilm
    Nov 29, 2017
    20
    对楼主 呵呵
    whypool
    whypool
    Nov 29, 2017
    21
    ruby ?
    huclengyue
    huclengyue
    Nov 29, 2017
    22
    python 感觉不错
    zn
    zn
    OP
    Nov 29, 2017❤️3
    23
    @askfilm 我在征求意见建议,你没意见没建议的话,不说话不会死人。呵呵呵,呵你妹。
    zn
    zn
    OP
    Nov 29, 2017
    24
    @mcfog PHP 处理二进制数组还是很麻烦的,自己计算长度 unpack,有时候还要自己 ord(char) 然后再 chr(num) 转换回去,挺麻烦的,这方面还是 C 家族的指针好用
    zn
    zn
    OP
    Nov 29, 2017
    25
    @gouchaoer Java 在做正经项目方面是好用,但是个人项目使用的时候显得很啰嗦烦人。
    crabRunning
    crabRunning
    Nov 29, 2017
    26
    比第一语言还好的语言,少年不存在的。
    SuperMild
    SuperMild
    Nov 29, 2017 via iPhone
    27
    Java 在 ide 的加持下,啰嗦完全不是问题啊!
    zn
    zn
    OP
    Nov 29, 2017
    28
    @SuperMild 是问题。啰嗦一次两次没问题,三次四次也没事,但是每次都啰嗦心里就很不爽。
    master13
    master13
    Nov 29, 2017❤️1
    29
    人人为我,额下一句怎么说来着?
    Kilerd
    Kilerd
    Nov 29, 2017❤️4
    30
    如果你是嫌弃 Python 的缩进问题,那么只能证明你在写其他语言的时候都没有正确或者良好的缩进习惯。
    pluschen
    pluschen
    Nov 29, 2017
    31
    我一条条要求对比下来,没发现 C 语言不符合的条目呢。
    acgnsstech
    acgnsstech
    Nov 29, 2017
    32
    我正在开发类似于楼主需求的这种编程语言。。。

    但是 进展太慢。。。

    楼主再等等 大概 3 年后再见~~
    zn
    zn
    OP
    Nov 29, 2017
    33
    @Kilerd 我是嫌弃它的缩进头重脚轻看着不舒服
    thankuu
    thankuu
    Nov 29, 2017
    34
    觉得 java 啰嗦不妨试试全宇宙最复杂语言 Scala ?
    zn
    zn
    OP
    Nov 29, 2017
    35
    @pluschen C 主要是基础设施太简陋,要办点稍微复杂的事情就需要自己造各种轮子或者找别人造好的轮子。
    userff
    userff
    Nov 29, 2017
    36
    Golang Python
    zn
    zn
    OP
    Nov 29, 2017
    37
    @acgnsstech 哈哈哈,骚年,我信你,我等你。
    zhengxiaowai
    zhengxiaowai
    Nov 29, 2017
    38
    这世界上哪有银弹
    zn
    zn
    OP
    Nov 29, 2017
    39
    @thankuu 用 Scala 的话我还不如投入 kotlin 的怀抱
    SuperMild
    SuperMild
    Nov 29, 2017 via iPhone
    40
    @zn 自动补全,代码自动生成,自动隐藏啰嗦部分的代码,写起来简直如行云流水
    zn
    zn
    OP
    Nov 29, 2017
    41
    @zhengxiaowai 语言并不是银弹,语言只是工具。然而工具有趁手的和不趁手的。而一个人的认知范围是有限的,大家的认知范围加起来就很广。也许碰巧有位朋友介绍了一种我之前并不知道的语言,而这种语言恰恰满足我的大部分要求,我想要的就是这种碰巧,至于有没有运气碰上,那就不知道了。that's all.
    zn
    zn
    OP
    Nov 29, 2017
    42
    @SuperMild Java 是我最喜欢的语言之一,然而我觉得并不适合我个人项目的要求。
    keenwon
    keenwon
    Nov 29, 2017
    43
    php 语法都能忍,忍不了 go ?
    robertlyc
    robertlyc
    Nov 29, 2017
    44
    ruby
    skadi
    skadi
    Nov 29, 2017
    45
    可以试试 nim
    natforum
    natforum
    Nov 29, 2017
    46
    c plus
    SuperMild
    SuperMild
    Nov 29, 2017 via iPhone
    47
    我觉得,楼主你对各种语言都有了解,如果有人说出一种你没想到的语言,那要么是小众语言,不符合你要轮子丰富的要求,要么就是有特色的语言,不符合你的语法审美。
    iiusky
    iiusky
    Nov 29, 2017
    48
    学汇编吧
    owenliang
    owenliang
    Nov 29, 2017
    49
    golang 倒是真的和 C"混编"。
    zn
    zn
    OP
    Nov 29, 2017
    50
    @keenwon 你说得很对,我一开始也是这么觉得的,只是越用越觉得难受。至于 PHP,可能是先入为主然后不觉得难受吧。
    roricon
    roricon
    Nov 29, 2017
    51
    elixir 名字先拼对了可以吗?
    zn
    zn
    OP
    Nov 29, 2017
    52
    @roricon 嗯,拼错了,抱歉。
    freejewu
    freejewu
    Nov 29, 2017 via Android
    53
    @afeicool 最近也在玩蟒蛇,缩进太特么坑爹了
    LokiSharp
    LokiSharp
    Nov 29, 2017
    54
    朋友,你听说过 Python 嘛?
    mooncakejs
    mooncakejs
    Nov 29, 2017
    55
    javascript 或者 typescript
    zztt168
    zztt168
    Nov 29, 2017
    56
    我是来凑热闹的,我只会 python,就推荐 python 吧,对缩进有意见用 pycharm 就好。
    overflowHidden
    overflowHidden
    Nov 29, 2017
    57
    @afeicool anaconda ?
    linuxfans
    linuxfans
    Nov 29, 2017 via Android
    58
    居然没人推荐 forth,简直条条都中
    vescape920
    vescape920
    Nov 29, 2017
    59
    PHP 是世界上最好的语言 你还想找比 PHP 还好的语言???
    parkcg
    parkcg
    Nov 29, 2017 via Android
    60
    技术栈跟我有点像啊,我目前也是做 php,移动端也都做过。曾经学习过 Elixir Erlang, 因为精力有限放弃了。
    xvx
    xvx
    Nov 29, 2017
    61
    推一把蟒蛇( Python )。
    因为我最熟悉也最喜欢的就这个。
    joeke
    joeke
    Nov 29, 2017
    62
    学 go 吧
    zn
    zn
    OP
    Nov 29, 2017
    63
    @vescape920 没有最好,只有更好,哈哈哈哈
    zn
    zn
    OP
    Nov 29, 2017
    64
    @linuxfans 特意去了解了一下 Forth,感觉太非主流了,除了个人自用之外貌似没用武之地啊。
    x8
    x8
    Nov 29, 2017
    65
    Go,语法这种问题都是小问题,能适应
    我深恶痛绝 Go 的花括号的换行,现在也觉得难看
    但是 Go 带给我的便利远远超过语法带来的不适应
    des
    des
    Nov 29, 2017 via Android
    66
    还是推荐 Python,不然就是要么吐槽一堆,要么没人用
    des
    des
    Nov 29, 2017 via Android
    67
    @des 而且逆向的话,不少都和 Python 有关,比如 ida。再说了胶水语言真不是吹的
    8355
    8355
    Nov 29, 2017
    68
    感觉只有 Golang
    linuxfans
    linuxfans
    Nov 29, 2017
    69
    @zn 因为很多地方偷偷用都不愿意让人知道,比如 NASA、SUN、IBM 等等…
    如果 C 语言让你觉得它是世界上最好的语言(好吧,你们说 PHP 我也不反对,反正有这话的时候 PHP 可能还没出生呢)
    那么 Forth 会让你觉得自己是世界上最好的程序员
    beginor
    beginor
    Nov 29, 2017 via Android
    70
    玩逆向肯定少不了 IDA,IDA 支持 Python 脚本, 所以还是推荐 Python。
    zn
    zn
    OP
    Nov 29, 2017 via iPhone
    71
    @beginor @des 嗯,从这点考虑的话,Python 确实是最佳选择
    wenxiuzh
    wenxiuzh
    Nov 29, 2017
    72
    没有人推荐 hh 哦,支持 hvvm 的,兼容 PHP,php 代码可以转成 hh,hh 有一些 php 没有的特性
    cuebyte
    cuebyte
    Nov 29, 2017❤️1
    73
    笑看楼上一群 go 粉,go 语法就是烂,还说不得了?作为一个 2000 年后的语言向下比 PHP 有意思?
    zn
    zn
    OP
    Nov 29, 2017 via iPhone
    74
    @cuebyte Go 语法真是烂,还有不方便代码重用,除此之外别的都很好
    qq976739120
    qq976739120
    Nov 29, 2017❤️2
    75
    python 的缩进很舒服啊....大括号看起来才眼花呢
    zn
    zn
    OP
    Nov 29, 2017 via iPhone
    76
    @qq976739120 这是宗教信仰,哈哈哈
    respawn
    respawn
    Nov 29, 2017
    77
    Cython,注意不是 CPython,前提是"会用 Python",所以还是推荐 Python.
    zjsxwc
    zjsxwc
    Nov 29, 2017
    78
    偏个题,楼主, php 二进制操作推荐用哪个库?
    这个好用吗? https://packagist.org/packages/TrafficCophp/ByteBuffer
    zjsxwc
    zjsxwc
    Nov 29, 2017
    79
    zn
    zn
    OP
    Nov 29, 2017 via iPhone
    80
    @zjsxwc 我都没用过,现在涉及到二进制处理我都是用 C 和 Objective C
    zn
    zn
    OP
    Nov 29, 2017 via iPhone
    81
    @respawn 有空去看看
    codecrash
    codecrash
    Nov 29, 2017 via Android
    82
    少年来学 Lisp 吧
    zn
    zn
    OP
    Nov 29, 2017 via iPhone
    83
    @codecrash 久闻大名,但是不知道有什么特别吸引人的特性?
    codecrash
    codecrash
    Nov 29, 2017
    84
    @zn #83
    1,跨平台.手机差那么点意思
    2,活的那是相当得长久了
    3 能方便地和 C 混编 有 ffi 呀
    4 能像 Exlixir 那样可以编译运行,也可以脚本方式运行(大大加分)
    5 语法你要是没接触过,那绝对新奇
    6 IDE 没什么好用的,emacs 算一个吧
    7 性能看你选的是哪种 lisp 实现,不差
    8,强大的宏

    缺点:
    小众,不太适合用来找工作,作为兴趣学学还不错
    betwinyou
    betwinyou
    Nov 29, 2017
    85
    装的一手好 B
    respawn
    respawn
    Nov 29, 2017
    86
    @codecrash 请问敲碎过几个键盘了?来这推荐 LISP.
    kran
    kran
    Nov 29, 2017
    87
    littleshy
    littleshy
    Nov 29, 2017
    88
    swift 就语言上还是挺好的,希望快速发展了。
    winglight2016
    winglight2016
    Nov 29, 2017
    89
    我来推荐 js 吧,js 才是真正的万能语言啊,从后台到 APP,从平台到智能硬件,有啥活做不了的?
    k9982874
    k9982874
    Nov 29, 2017
    90
    php 用 pack/unpack 到 16 进制也没什么不方便
    IllBeBack
    IllBeBack
    Nov 29, 2017
    91
    http://www.pilotlogic.com/sitejoom/index.php/codetyphon

    FP (free pascal),几乎满足你所有条件

    唯一不足:不能以脚本方式运行。但编译速度绝对一流

    中国最近出了个 FP 吹,已经在沪江跨平台用上了:
    http://rarnu.com
    zn
    zn
    OP
    Nov 29, 2017
    92
    @IllBeBack Interesting,我去瞧瞧
    pezy
    pezy
    Nov 29, 2017 via iPhone
    93
    非常符合 C++
    IllBeBack
    IllBeBack
    Nov 29, 2017
    95
    @zn

    http://www.itdks.com/eventlist/detail/1491

    可以看视频回放,听一下他是怎么安利 FP 的,2:09:00 起
    zn
    zn
    OP
    Nov 29, 2017
    96
    @IllBeBack 看视频居然需要登录。
    zn
    zn
    OP
    Nov 29, 2017
    97
    @0w0b 有点意思。

    这贴值了,认识了好几个挺有意思的语言。
    jobtesting
    jobtesting
    Nov 29, 2017 via iPhone
    98
    html
    codecrash
    codecrash
    Nov 29, 2017
    99
    @respawn #86 这和敲碎多少键盘没什么太大关系吧?
    bigknife
    bigknife
    Nov 29, 2017
    100
    Scala Or Haskell
    1  2  
    ❮ ❯
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1489 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 246ms · UTC 23:00 · PVG 07:00 · LAX 15:00 · JFK 18:00
    ♥ Do have faith in what you're doing.