我的目标是开发一套交易平台。做项目要定技术方向,定技术方向首先要选语言。我在过去相当长时间里评估了目前市面上的多种语言。谨以此文说明下探索的路程和一点浅薄的心得。
1. C++
我首先排除了C++,原因有几个:
第一,T. Linus痛恨C++。我赞同T. Linus的观点,C++很危险,C++的OO抽象是错误的和反自然的,勉为其难事后必然一地鸡毛。Class是罪恶之源。
第二,我读过C++代码,里面的类继承让人想不开。
第三,复杂烧脑,花在学C++上面的时间可能比花在业务逻辑上的时间还要长。
C++的优点:快,直接。
我看过Seastar,充满了C++14的各种新特性,难以上手。
2. C
然后我暂时排除了C,原因是:
第一,工作量太大,细节太多,
第二,缺少库支持,libuv应该可以用,但我需要更多。
C的优点:
第一,我熟,
第二,基于过程,我痛恨假OO,
第三,快,很快。
未来或许会用C,但在早期阶段不适合,因为辛苦很久可能连系统的影子都看不到。
3. Node.js
之后我排除了node.js,原因是:
第一,自从创始人离开之后,node.js就没有过本质的提升,只支持单个loop,多个loop没有支持也不打算支持,cluster不好用,
第二,内存管理功能不足,超过2G内存系统可能崩掉。
4. JAVA
然后我又排除了JAVA,原因是:
第一,我极度讨厌假OO,同C++,
第二,我看过vert.x,感觉太复杂,
JAVA的优点,稳定,较快。
5. Go
再说说GO语言。
Go刚出道的时候声势很大,所有讨厌C++的工人对Go都抱有期待,包括我。
但Go的问题是,缺少灵魂上的闪光点,在娘胎里就开始考虑各种细枝末节。
其实,做人嘛,你只要有一个杀手锏,其他缺点都能被容忍,
但,Go就是这种努力克服各种缺点却没啥杀手锏的角色。
不上不下。
6. Rust
Rust野心很大,远胜于Go。
定位明确,就是要死磕C++。不要GC。
Rust的语法有点怪,但语法其实根本不重要,语法就像衣服。
关键是要能解决问题。
Rust还不够成熟,未来会尝试。
7. Python
Python当初之所以出人头地,就是因为对工人友好,和蔼可亲,不像C++那么复杂,也不像C那么高冷。但Python连多线程这个坎都过不去。
8. Erlang
重点来了,我选了erlang,
第一,支持多个loop,随便加Process,满分,
第二,基于消息的正儿八经的对象设计,没有狗屁不通的类和继承关系,满分,
第三,得到工业界肯定,内存几十G上百G都没问题,满分,
第四,原生的分布式编程模型,轻松实现多核应用,满分,
第五,I/O性能较强,70分,
再说说缺点,
第一,计算慢,erlang支持任意大的数字,意味着背后的实现逻辑复杂,
第二,解释性语言,慢。
如果erlang能够进化为一个编译型语言,计算速度提升到JAVA的水平,有希望一统江湖。

浙公网安备 33010602011771号