采访Joe Armstrong的podcast ErlangSmalltalk编程OO八卦
早上上班,听Software Engineering Radio对Joe Armstrong的访谈。Software Engineering Radio办得真不错。请来业界风云人物娱乐大众。访谈前主持人做了功课,提的问题颇为有趣,引得被采访着侃侃而谈。上期对Galen Hunt的访谈也挺精彩,把Singularity OS吹得比Singularity还有卖点。
Joe在谈到并发编程对程序员冲击时提到2006年的新闻:2010年Intel会推出32核的CPU Keifer。到时候,写惯顺序处理程序的程序员在老板面前抱怨性能问题时需要三思。因为老板到你机器上一看,保证怒从心头起,恶向胆边生:靠!你丫才用了3%的CPU cycle,也好意思说遇到性能问题!想来一枚对并发编程无所谓的程序员,听了这段话应该对并发编程兴趣大增吧?
除开便于跟踪状态出错地点外,我以前一直奇怪Erlang的变量只能赋值一次的原因。要说支持合理并发,进程间禁止共享数据,强化消息传递就行了。进程内还是可以支持私有状态嘛。结果Joe说Erlang变量赋值的规则是当年用Prolog时传承下来的风格,并没有特别的原因。
还有两个好玩儿的。提到Erlang的容错处理机制。Joe说Erlang在某种程度上不鼓励defensive programming,而鼓励happy case programming。也就是大家高高兴兴照着spec编程就行了,至于spec没有提到的黑暗角落嘛,搞死进程重启就是。然后Joe和采访人Marcus一起笑得花枝乱颤。Marcus问Joe是否认为Erlang会像Ralph Johnson博客所说,Erlang是下一个Java。Joe的回答甚为老到。他说Erlang也许像Smalltalk。虽然Smalltalk的确是最先把OO搞周正的,Smalltalk的拥趸也总是酸不拉叽地鄙视Java,喊着Smalltalk才是OO正宗的口号,但不可否认其它语言学了Smalltalk的精华,再灭掉Smalltalk的市场,比如Java。Erlang也许是第一个把并发做好的语言,但也许下一个支持花括号的Java++跳出来,吸取Erlang的精华,再占有Erlang的市场。而Joe看得挺开。Erlang当年就是Ericsson内部的小语言,以后是小语种也无所谓。
Joe还解释了关于Erlang系统实现5个9的八卦。他说这则消息没错,Ericsson出品的一坨系统的确一年才当掉5分钟。不过这是最佳条件下的数据。 并不是普适情况。当然,我们不必指望学了Erlang就能写出99.999%可靠的系统。这个量级的工程强度已不能单靠语言搞定。系统设计、实现、测试、部署、对业务领域长期的积累和专精都得到位。
另外Joe也看reddit。他说如果你只上reddit,你会觉得世界上只有两门主流语言:Haskell和Erlang。
再次感慨表达能力太重要了。Joe的能写能说,应该对推广Erlang大有帮助。有道是,码农会著述,挡也挡不住。