@
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 代码来拉近这些距离。