Erlang 之父去世,忠告程序员:先思考再编程,累的时候不要写代码
Erlang之父Joe Armstrong于4月20日去世,享年68岁。
Erlang Solutions、Erlang Factories的创始人Francesco在推特上怀念道:“尽管他不在了,但他的工作已经打下的基础,将对未来几代人都有用的。”
如果你对 Erlang不熟悉,至少听说或使用过RabbitMQ吧, RabbitMQ 的服务器就是用 Erlang 写的。
有幸 跟Jo e Armstrong博士做过 短暂的交流, 在2016年11月,CSDN举办的“SDCC中国软件开发者大会”上, 他分享的几个观点,至今仍印象深刻:
“人们总认为产品开发流程是这样: Specify→Build→Test→Sell→$$$,然而实际上却是这样的: Start→??????????→Product。 ”
“一件事情如果过于复杂,那么一定是哪里出问题了 —— 大部分情况下是对问题的理解出现偏差”
这一观点,跟他发明Erlang语言的初衷是一样的: 简单优雅,一次编写,永远运行。
记得当时跟 Armstrong 博士请教,他是如何保持数十年对编程的热爱。
“我就是热爱编程,并且擅长调试程序,上大学的时候我帮同学调试程序,他们给我买啤酒。”
“调bug换啤酒?酷!”
Armstrong曾在一次访谈中,分享过他在编程习惯上的改变,值得全世界程序员们借鉴。
第一: 先思考再编程
他在编程的20年都犯着一个错: 在年轻的时候,会不停地写程序,直到完成。
等写完后他会突然发现: “啊? 搞错了! ”等到重新编写程序,会再次发现: “噢,程序是错的。 ”于是又推翻重来。
他于是开始思考改变: “先不要动手写代码,把这些东西都想好,这样做不是很好吗? ”
第二: 不要在疲惫时写代码
在年轻的时候,他会通宵地写程序,例如一个小时接着一个小时不休息,不停地编写代码,一口气写到凌晨4点钟。 即使身体状况不好他也坚持不懈,因为他要让代码能够跑起来。
后来他发现程序员在疲惫的时候编写的程序都是垃圾,第二天就要把它们废弃掉。 他认为真正好的代码是程序员完全进入状态的时候编写,人甚至没有在考虑程序,只是很放松地坐在那里,输入代码,这样的代码会很不错。
他建议如果程序员觉得自己状态不对,“不能再写了。 ”停下来,干点别的。
Erlang是一种什么样的语言?
Erlang是一种结构化,动态类型编程语言,内建并行计算支持。最初是由爱立信专门为通信应用设计的,比如控制交换机或者变换协议等,因此非常适合于构建分布式,实时软并行计算系统。 使用Erlang编写出的应用运行时通常由成千上万个轻量级进程组成,并通过消息传递相互通讯。 进程间上下文切换对于Erlang来说仅仅只是一两个环节,比起C程序的线程切换要高效得多了。
使用Erlang来编写分布式应用要简单的多,因为它的分布式机制是透明的: 对于程序来说并不知道自己是在分布式运行。 Erlang运行时环境是一个虚拟机,有点像Java虚拟机,这样代码一经编译,同样可以随处运行。 它的运行时系统甚至允许代码在不被中断 的情况下更新。 另外如果需要更高效的话,字节代码也可以编译成本地代码运行。
Joe Armstrong 博士生平
1950年12月27日,Joe Armstrong出生于英国伯恩茅斯。
虽然Joe Armstrong 17岁时开始接触到Fortran编程,但他从本科直到博士念的是物理学,后来因为积蓄用完无法完成学业,而转向计算机科学。
为了谋生,他成为Donald Michie(英国人工智能领域奠基人之一)的研究员。 在此期间,他撰写了一些有关机器人视觉的论文。
后来政府削减了对人工智能的研究经费,Armstrong又回到了物理学领域,从事5年多与物理学编程相关的工作。 开始时他在欧洲非相干散射科学协会(EISCAT)工作,后来又到了瑞典空间研究中心工作,协助开发应用程序系统。 最后Armstrong加入爱立信计算机科学实验室,在那发明Erlang,成为容错系统开发领域的世界级专家。