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

2017-11-29 13:41:32 +08:00
 zn

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

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

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

硬性要求:

加分项:

轻微加分项:

目前知道的备选语言有:

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

14396 次点击
所在节点    程序员
144 条回复
hackxing
2017-11-30 10:32:41 +08:00
asp.net core

C# 才是世界上最好的语言
xifengzhu
2017-11-30 10:40:33 +08:00
ruby
srlp
2017-11-30 12:49:58 +08:00
scala, the better java
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
2017-11-30 13:15:35 +08:00
@noli #124

关于 C# 跨平台我补充一个我觉得最颠覆世界观的,C# 可以编译成对应的 js,支持 WebGL 等等技术,在浏览器内玩 C# 写的 游戏,详见 JSIL。 现在还可以编译成 webassembly ……
superkeke
2017-11-30 13:24:45 +08:00
C/C++全满足吧
mmdsun
2017-11-30 13:26:42 +08:00
.NET Core 平台 C#满足你要求。iOS,Android,服务器都吃。支持 Linux
qfdk
2017-11-30 15:03:39 +08:00
你需要自己定义一门语言 用 xtext 弄个 ide 出来 自动补全都有 编译看自己喜好
chenxytw
2017-11-30 15:06:48 +08:00
各种内置函数超级方便的 PHP 不支持二进制操作 0 0 笑死我了
就凭这点,我觉得 Python 就足以打破你对 PHP 的印象
anmaz
2017-11-30 15:11:51 +08:00
你觉得你的主力开发语言 php 好处居然是函数,那我还推荐你学啥。
shuizhengqi
2017-11-30 15:12:42 +08:00
vhdl
chuanwu
2017-11-30 15:33:59 +08:00
@zn 哈哈哈哈 被 Python 的缩进坑过...
justyy
2017-11-30 22:16:24 +08:00
PHP 是最好的语言
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
2017-12-01 09:01:47 +08:00
对不起,没有比 php 还要好的语言。世界上最好的语言这个名头,不是轻轻松松捡来的。
zn
2017-12-02 16:35:29 +08:00
@noli 感谢回复! C#确实是个非常好的语言,我蛮喜欢的。但是目前我主要工作环境在 Mac、Linux 下,这些环境下 C# 成熟项目貌似太少了。
zn
2017-12-02 16:36:52 +08:00
@qfdk 大佬说笑啦,自己弄个玩具语言还可以,拿来干活赚钱是不可能的。
zn
2017-12-02 16:37:44 +08:00
@Mutoo LuaJIT 不就是 lua 加强版嘛,本身并不能提供太多东西,主要还是作为胶水使用的。
noli
2017-12-02 16:43:02 +08:00
@zn 有什么 C# 项目是其他平台上成熟了,Mac Linux 下就不成熟的呢?你这个提法真是…… php 程序员思维啊……
zn
2017-12-02 16:49:32 +08:00
@noli 毕竟 mono 和微软的实现还是有差距的。毕竟 Mac 和 Linux 下使用 .net 的项目还是太少。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/410480

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX