路德威

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

我的目标是开发一套交易平台。做项目要定技术方向,定技术方向首先要选语言。我在过去相当长时间里评估了目前市面上的多种语言。谨以此文说明下探索的路程和一点浅薄的心得。

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的水平,有希望一统江湖。

 

posted on 2018-09-20 17:47  路德威  阅读(144)  评论(0)    收藏  举报