周末一直在公司加班,正准备关电脑下班时,看到CSDN公众号(csdnnews)推送了Armstrong去世的消息,微博上刘江老师也提及了他11年前引进出版《Erlang程序设计》的故事,强调了他对编程语言和程序员社区的影响,而且也会一直持续下去。

技术上,Armstrong是分布式系统编程的先驱者,社区影响方面也有中国的声影。2016年中国软件开发者大会(SDCC)曾邀请他来到中国,希望能够给国内开发者们分享一些别样的东西——《如何设计高可靠的分布式并行系统》,当时我作为大会组织者,希望他能多分享一些内容,最大化利用他的这趟中国行(这点不是很好,很商业),所以又组织了一个单独的“Erlang编程语言专题”,请他分享《Erlang和我的编程人生》,对中国的Erlang生态起到了很好的推动作用,如刘老师所言。

有两点现在想起有些许安慰,当时负责接待Armstrong的同事给我说他身体不好,所以安排了公务舱;知道他老伴也同行,后续请同事带他到北京的一些景点游玩。

一件事情如果过于复杂,那么一定是哪里出问题了 —— 大部分情况下是对问题的理解出现偏差。

走好。

他在SDCC上面的两个分享PPT还可以下载:

  • Growing A Language:https://download.csdn.net/meeting/speech_preview/186

  • 如何设计高可靠的分布式并行系统:https://download.csdn.net/meeting/speech_preview/121

以下内容来自CSDN:

北京时间 4月20日,据Erlang Solutions、Erlang Factories的创始人Francesco Cesarini的推特称,Erlang之父Joe Armstrong于4月20日去世,享年68岁。

Francesco怀念道:“尽管他不在了,但他的工作已经打下的基础,将对未来几代人都有用的。”

01

Joe Armstrong 是谁?

1950年12月27日,Joe Armstrong出生于英国伯恩茅斯。

虽然Joe Armstrong 17岁时开始接触到Fortran编程,但他从本科直到博士念的是物理学,后来因为积蓄用完无法完成学业,而转向计算机科学。

后来为了谋生,他成为Donald Michie(英国人工智能领域奠基人之一)的研究员。在此期间,他撰写了一些有关机器人视觉的论文。

后来政府削减了对人工智能的研究经费,Armstrong又回到了物理学领域,从事5年多与物理学编程相关的工作。开始时他在欧洲非相干散射科学协会(EISCAT)工作,后来又到了瑞典空间研究中心工作,协助开发应用程序系统。最后Armstrong加入爱立信计算机科学实验室,在那发明Erlang,成为容错系统开发领域的世界级专家。

并在2003 年,Armstrong获得瑞典皇家工学院(KTH)的计算机科学博士学位,发表的博士论文《Making reliable distributed systems in the presence of software errors》对研究并发有不菲的参考价值。

在念本科时,Armstrong有件趣事:他那时已特别喜欢编程和善于调试程序。如果别人程序出了问题,他就会以一杯、两杯、三杯啤酒的“收费”去帮助同学调试程序。

02

为什么他的贡献如此重要?

Armstrong发明的Erlang在全球范围内是个小众语言,根据TIOBE发布的最新语言排行榜,Erlang排名第47位,市场份额占有仅为0.177%。它不是像Java、C++是面向对象语言的,它是函数编程语言。

早在1986年,Armstrong开始编写Erlang,当时Erlang设计初衷针对的软件是类似于电话交换机那样的高可用性、高可靠性系统。并在1998年,Erlang作为开源项目发布。

当程序员们开始努力应对多核系统未来的发展趋势时,并发性引起了他们的注意。而Erlang正是拥有强大的并行处理能力和容错机制,并成就了可靠性达到99.9999999%的目前世界上最复杂的 ATM 交换机。

对于编程语言,Armstrong认为编程语言必须简单好用,才能便于开发者去学。

03

老码农的两条忠告

Armstrong在SDCC 2016中国软件开发者大会

Armstrong曾在CSDN主办的“SDCC 2016中国软件开发者大会”上,幽默地分享了他编程20年来对软件开发的一些思考,他说:“人们总认为产品开发流程是这样:Specify→Build→Test→Sell→$$$,然而实际上却是这样的:Start→??????????→Product”。

为什么他会这么说呢?

Armstrong曾在《编程人生》中分享过他在编程习惯上有了两个改变,值得我们开发者借鉴。

  • 第一:先思考再编程。

他在编程的20年都犯着一个错:在年轻的时候,会不停地写程序,直到完成。

等写完后他会突然发现:“啊!搞错了!”等到重新编写程序,会再次发现:“噢,程序是错的。”于是又重新编写。

他于是开始思考改变:“先不要动手写代码,把这些东西都想好,这样做不是很好吗?”

  • 第二:不要在疲惫时写代码。

在年轻的时候,他会通宵地写程序,例如一个小时接着一个小时不休息,不停地编写代码,一口气写到凌晨4点钟。即使身体状况不好他也坚持不懈,因为他要让代码能够跑起来。

后来他发现程序员在疲惫的时候编写的程序都是垃圾,第二天就要把它们废弃掉。他认为真正好的代码是程序员完全进入状态的时候编写,人甚至没有在考虑程序,只是很放松地坐在那里,输入代码,这样的代码会很不错。

他建议如果程序员觉得自己状态不对,“不能再写了。”停下来,干点别的。

在开发者大会上,Armstrong预言在未来二十年,所有与关键性能相关的软件将与硬件相融合。

可惜Armstrong无法亲自参与这当中来,我们仅在此感谢如此热爱编程的Joe Armstrong,一生为编程所作出的贡献。

参考资料:

Joe Armstrong:关于Erlang,有很多东西我想改变

程序调试与啤酒——Erlang之父Joe Armstrong访谈

架构文摘

ID:ArchDigest

互联网应用架构丨架构技术丨大型网站丨大数据

Erlang之父Joe Armstrong去世,他留给程序员两点忠告相关推荐

  1. Erlang 之父去世,他留给程序员两点忠告

    整理 | 伍杏玲     出品 | CSDN(ID:CSDNnews) 北京时间 4月20日,据Erlang Solutions.Erlang Factories的创始人Francesco Cesar ...

  2. Erlang之父Joe Armstrong去世

    允中 发自 凹非寺 量子位 出品 | 公众号 QbitAI 4月20日,Erlang语言的设计者Joe Armstrong去世,享年68岁. Erlang Solutions.Erlang Facto ...

  3. Erlang 之父 Joe Armstrong 逝世,享年 68 岁

    4月20日,Erlang 语言设计者 Joe Armstrong 去世,享年 68 岁. Photo by Brian Troutwine Erlang Solutions 创始人 Francesco ...

  4. 程序员的损失!Erlang 之父 Joe Armstrong 离世

    (给技术最前线加星标,每天看技术热点) 原创整理:技术最前线(id:TopITNews) 对于 Erlang 技术社区来说,这是一个难过的周末. 据 Francesco 的推特消息,Erlang 之父 ...

  5. Erlang之父Joe Armstrong近期回顾的一些旧事

    Erlang 之父 Joe Armstrong 于2013年1月24日在 Erlang 邮件列表里发了文章.详细解说了他自己从开始学习编码到发明 Erlang 的整个历史.并且,对如何学习编程:如何成 ...

  6. Erlang之父Joe Armstrong确认将参加中国软件开发者大会

    2019独角兽企业重金招聘Python工程师标准>>> 2016年11月18日-20日,由CSDN重磅打造的年终技术盛会,SDCC 2016中国软件开发者大会将在北京举行,大会面向国 ...

  7. Erlang之父Joe Armstrong确认出席SDCC 2016中国软件开发者大会,并发表主题演讲

    2016年11月18日-20日,由CSDN重磅打造的年终技术盛会,SDCC 2016中国软件开发者大会将在北京举行,大会面向国内外的中高端技术人员,聚焦最前沿技术及一线的实践经验,从而助力企业的技术升 ...

  8. 程序调试与啤酒——Erlang之父Joe Armstrong访谈

    文 / Peter Seibel  译 / 米全喜 以啤酒收取程序调试报酬 Seibel:你是如何开始学习编程的?是从什么时候开始的? Armstrong:是从中学时开始的.我出生于1950年,上中学 ...

  9. Erlang User Conference 2010见闻(兼谈程序员职业生涯)

    Parallel LabsThoughts on computer systems and my life.You are here: Home / 2010 / 十一月 / 29 / Erlang ...

最新文章

  1. 初探Git git基本用法
  2. 一个典型的参数型跨站脚本漏洞
  3. html5 斜率画线,一次函数的斜率与图像的关系
  4. 生产环境Go程序内存泄露,用pprof如何快速定位
  5. QT子文件的建立和调用
  6. centos系统下搭建网站环境 php+mysql+apache
  7. Qt窗口操作函数(最大化,全屏,隐藏最大化,最小化)
  8. iOS深入学习(Block全面分析)
  9. 卷积神经网络解决拼图_使用神经网络解决拼图难题
  10. linux ppsspp速度,PPSSPP模拟器详细使用技巧
  11. 多元统计分析基于r课后答案_智慧树多元统计分析及R语言建模课后答案
  12. Python+PyQt5构建电影天堂电影搜索工具
  13. 【C语言细节】计算自然对数的底 e遇坑
  14. phpstudyv8集成环境下,用Dwcs6链接数据库失败并显示:your php server doesnot have the Mysql module……
  15. CSS字体如何设置字体变小,为什么设置不了字体变小?
  16. tplink显示网络连接已断开_TP-link无线路由器无法上网排查方案及解决办法(图文教程)...
  17. 【基础编程】猜数字游戏的提示
  18. 杭州师范大学计算机考研难度,考研难度低的师范大学是哪所
  19. 红蓝对抗——蓝队手册
  20. 使用Hbuilder X配合uniapp开发5+APP时无法开启真机调试。

热门文章

  1. 【每日早报】2019/12/06
  2. UVa 202 - Repeating Decimals —— 分数循环节
  3. springMVC自动获取jsp页面input中的值,封装成对象传入后台
  4. 七问企业CEO:为可持续和包容性增长创造条件
  5. keil与source insght项目重命名
  6. 魅蓝s6手机sim卡不显示无服务器,魅蓝S6图赏:拥有家族式设计风格的全面屏
  7. tidb学习-如何查看ddl状态
  8. CentOS 8防火墙配置
  9. Revit开发__三维视图创建和设置
  10. [英语学习]表示将来时的几种常用法