热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

“周末一直在公司加班,正准备关电脑下班时,看到CSDN公众号(csdnnews)推送了Armstrong去世的消息ÿ

周末一直在公司加班,正准备关电脑下班时,看到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怀念道:“尽管他不在了,但他的工作已经打下的基础,将对未来几代人都有用的。”

640?wx_fmt=jpeg



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

老码农的两条忠告


640?wx_fmt=png

ArmstrongSDCC 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访谈
640?wx_fmt=png

架构文摘

ID:ArchDigest

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

640?wx_fmt=png


推荐阅读
  • 2018年人工智能大数据的爆发,学Java还是Python?
    本文介绍了2018年人工智能大数据的爆发以及学习Java和Python的相关知识。在人工智能和大数据时代,Java和Python这两门编程语言都很优秀且火爆。选择学习哪门语言要根据个人兴趣爱好来决定。Python是一门拥有简洁语法的高级编程语言,容易上手。其特色之一是强制使用空白符作为语句缩进,使得新手可以快速上手。目前,Python在人工智能领域有着广泛的应用。如果对Java、Python或大数据感兴趣,欢迎加入qq群458345782。 ... [详细]
  • Google Play推出全新的应用内评价API,帮助开发者获取更多优质用户反馈。用户每天在Google Play上发表数百万条评论,这有助于开发者了解用户喜好和改进需求。开发者可以选择在适当的时间请求用户撰写评论,以获得全面而有用的反馈。全新应用内评价功能让用户无需返回应用详情页面即可发表评论,提升用户体验。 ... [详细]
  • IT方面的论坛太多了,有综合,有专业,有行业,在各个论坛里混了几年,体会颇深,以前是论坛哪里人多 ... [详细]
  • GPT-3发布,动动手指就能自动生成代码的神器来了!
    近日,OpenAI发布了最新的NLP模型GPT-3,该模型在GitHub趋势榜上名列前茅。GPT-3使用的数据集容量达到45TB,参数个数高达1750亿,训练好的模型需要700G的硬盘空间来存储。一位开发者根据GPT-3模型上线了一个名为debuid的网站,用户只需用英语描述需求,前端代码就能自动生成。这个神奇的功能让许多程序员感到惊讶。去年,OpenAI在与世界冠军OG战队的表演赛中展示了他们的强化学习模型,在限定条件下以2:0完胜人类冠军。 ... [详细]
  • 本文介绍了JavaScript进化到TypeScript的历史和背景,解释了TypeScript相对于JavaScript的优势和特点。作者分享了自己对TypeScript的观察和认识,并提到了在项目开发中使用TypeScript的好处。最后,作者表示对TypeScript进行尝试和探索的态度。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • 如何搭建Java开发环境并开发WinCE项目
    本文介绍了如何搭建Java开发环境并开发WinCE项目,包括搭建开发环境的步骤和获取SDK的几种方式。同时还解答了一些关于WinCE开发的常见问题。通过阅读本文,您将了解如何使用Java进行嵌入式开发,并能够顺利开发WinCE应用程序。 ... [详细]
  • 本文介绍了响应式页面的概念和实现方式,包括针对不同终端制作特定页面和制作一个页面适应不同终端的显示。分析了两种实现方式的优缺点,提出了选择方案的建议。同时,对于响应式页面的需求和背景进行了讨论,解释了为什么需要响应式页面。 ... [详细]
  • Java 11相对于Java 8,OptaPlanner性能提升有多大?
    本文通过基准测试比较了Java 11和Java 8对OptaPlanner的性能提升。测试结果表明,在相同的硬件环境下,Java 11相对于Java 8在垃圾回收方面表现更好,从而提升了OptaPlanner的性能。 ... [详细]
  • 本文介绍了OkHttp3的基本使用和特性,包括支持HTTP/2、连接池、GZIP压缩、缓存等功能。同时还提到了OkHttp3的适用平台和源码阅读计划。文章还介绍了OkHttp3的请求/响应API的设计和使用方式,包括阻塞式的同步请求和带回调的异步请求。 ... [详细]
  • OpenMap教程4 – 图层概述
    本文介绍了OpenMap教程4中关于地图图层的内容,包括将ShapeLayer添加到MapBean中的方法,OpenMap支持的图层类型以及使用BufferedLayer创建图像的MapBean。此外,还介绍了Layer背景标志的作用和OMGraphicHandlerLayer的基础层类。 ... [详细]
  • 云原生应用最佳开发实践之十二原则(12factor)
    目录简介一、基准代码二、依赖三、配置四、后端配置五、构建、发布、运行六、进程七、端口绑定八、并发九、易处理十、开发与线上环境等价十一、日志十二、进程管理当 ... [详细]
author-avatar
手机用户2502937257
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有