2009年的时候,Joe Armstrong出了一本书《Programming Erlang》,那个时候我对函数式编程非常感兴趣,就学了Erlang。

我拿Erlang做了很多有意思的事,比如在自己的计算机上模拟swarm computing,也做了很多探索性的研究,比如研究BEAM的底层实现。但是这一切都没什么结果。我用Erlang做的最大的项目,是2014年创业项目的一个手游后端。

用Erlang可以非常快地加一个高效稳定的实时平台,然而在带有大量状态的时候就变得不给力了,状态必须得以函数参数的形式传入,所以你必须得实现状态机,而不是状态。此外Erlang是个非常弱类型的语言,类型检查必须得通过运行时传入tuple和模式匹配来实现。这使得快速编写可复用的代码变得非常困难,因为编译器几乎帮不上什么忙,你必须得亲自写出所有错误该怎么处理。

我仍然非常喜欢Erlang精巧的设计和概念,这让它非常强大,但是这种强大来自于强大的约束,这种强大的约束让很多事情变得不方便。所以后来渐渐用不上Erlang了,但是今天流行的的JavaScript和Rust很多地方都受到Erlang的影响。

顺便一提,那个时候知道了研究Erlang的余锋老师,后来他的花名褚霸变得更有名。

Joe Armstrong也是我很敬仰的程序员,他写的书深入浅出,然而他对复杂实时系统有着非常清晰的认识,以及不遗余力地批判现今OOP掌控的世界到处充满的过度设计。Joe在2019年4月20日去世了。2018年底他的博客换成了TiddlyWiki,还写了不少研究TiddlyWiki的文章。
展开
1