Erlang开源20周年:这门编程语言见证了互联网的技术成长-程序员宅基地

技术标签: 大数据  嵌入式  ruby  

Erlang于1998年12月8日星期二以开源的形式发布。你还记得那个星期你在哪里吗?我在达拉斯(德克萨斯州);我多次访问爱立信美国分公司,帮助他们建立了一个从事AXD301交换机研发的Erlang团队。星期二早上醒来,我得到了这个消息。

\"image\"

这次发布平淡无奇。没有关于此次发布的公关活动,没有造势或媒体报道。有的只是一个简单的erlang.org网站(使用vi手工编写)。一封电子邮件被发送到Erlang邮件列表中,一篇文章登上了slasdot的头版,同时,comp.lang.functional上也有提及(得益于Joe尽职尽责地跟进)。没有其他任何营销活动可以证明,爱立信发布了一个庞大的开源项目。那一周,我最感兴趣的不是Erlang的发布,而是去达拉斯市中心的一家夜总会看Marky Ramone and the Intruders乐队的演出。我几乎不知道Erlang开源会对科技行业、我的职业生涯以及我周围许多人的职业生涯产生什么样的影响。

走出爱立信

这一切是怎么发生的?出于各种原因,我们中的许多人希望Erlang以开源的形式发布。我在爱立信的一些同事想离开目前的职位,但仍在用被他们视为银弹的东西开发产品。其他人则希望把用于构建具有容错性和可扩展性的系统的高级工具提供给大众,让世界更美好。对爱立信管理层来说,Erlang更广泛地采用将意味着有一个更大的人才池供他们招聘人才。

Jane Walerud和我们一起试图将Erlang推广到爱立信之外的公司,她是当时少数懂得如何与管理层沟通的人之一;她明白,销售编程语言的时代已经结束了。爱立信软件架构实验室负责人Hakan Millroth建议尝试这个叫做“开源”的新事物。Jane带着论文The Cathedral and the Bazaar的早期版本,说服爱立信的管理层发布Erlang VM、标准库的源代码和OTP的部分源代码。

\"image\"

在Erlang被放出来之前,许多人都不相信这会发生。人们担心,在最后一刻,爱立信会把这个主意全盘否定。开源,这个几个月前刚出现的术语是一个大公司都不知道该如何应对的奇怪而可怕的新怪物。对于进入未知领域,爱立信当然会有许多担忧。坊间传说,为了降低Erlang无法发布的风险,我们的朋友,当时在新西兰奥塔哥大学工作Richard O’Keefe前来增援。东部的午夜来得更早一些,所以新西兰午夜的钟声一响,erlang.org网站就已经上线几分钟了。刚好足够确保匿名用户下载完第一个Erlang发行版。当确认下载完成后,网站再次下线,12小时后,在瑞典时间的午夜再次上线。我在达拉斯,睡得很熟,所以我既不能确认也不能否认这一切是否真的发生过。但就像每一个传说一样,我确信它的背后有一点真相。

互联网泡沫时代

在最初的几年里,采用进展缓慢。尽管如此,Kenneth Lundin领导的OTP团队仍在努力地工作。1999年5月,经Bjorn Gustavsson重构的BEAM VM (Bogdan的Erlang抽象机)正式取代了JAM (Joe的抽象机)。Joe早在一年前就离开了爱立信,BEAM虽然速度更快,但仍需要这么长一段时间才能生产就绪。

每当我们新发现一家使用Erlang/OTP的公司时,我都会感到兴奋。瑞典电话公司Telia正在研究一个呼叫中心解决方案。英国移动运营商One2One最初将其用于增值服务,然后将其应用范围扩大至核心网络。巴黎的IdealX首先在消息传递和XMPP中进行了尝试。芝加哥的Vail System和多伦多的Motivity将其用于自动拨号软件。当然,Bluetail也有许多产品帮助互联网服务提供商实现可伸缩性和弹性。

Erlang在爱立信核心产品中的使用继续扩大。与此同时,我在1999年搬到伦敦,在那里,我越来越多地遇到爱立信内部对Erlang专业知识的需求。Erlang Solutions诞生了。公司成立不到一年,我的客户就遍及瑞典、挪威、澳大利亚、爱尔兰、法国、美国,当然还有英国。2000年,我们有了第一个非爱立信客户;IdealX在巴黎的培训、指导和代码审查。

Alteon Web Systems以1.52亿美元收购了Bluetail(几天后,Alteon被Nortel收购),这在Erlang社区引发了第一波反响。爱立信的一个竞争对手正在开发Erlang产品!大量有资金的成功企业家参与了许多其他创业公司,其中包括Synapse、Klarna和Tail-f。

在Bluetail取得成功之后不久,互联网泡沫破裂了,整个行业进入了生存模式,然后是复苏模式。然而,此次泡沫破裂并未影响那些全力以赴的学者。2002年,查默斯大学的John Hughes教授使Erlang研讨会成功获得了SIGPLAN和ACM认证。我们真的不知道这一切意味着什么,但我们仍然感到非常自豪。匹兹堡(宾夕法尼亚州)的ACM SIGPLAN Erlang研讨会是第一个获得认证的研讨会。在这里,来自乌普萨拉大学的博士生Richard Carlsson向世界展示了Erlang版本的try-catch。

在2004年9月,乌普萨拉大学的Kostis Sagonas在雪鸟(犹他州)主持了ACM SIGPLAN Erlang研讨会的闪电秀,第一次公开演示了Dialyzer。他在南非Teba银行的一个代码库上运行了它。这是他和他的学生向Erlang生态系统贡献的许多令人大为惊奇的工具中的第一个。

在很长一段时间里,Erlang被世界各地许多大学用于计算机科学各方面的教学。这反过来又催生了研究、硕士论文和博士项目。研讨会提供了一个论坛,让学者们发表他们的成果,并与工业伙伴进行验证。erlang.org站点的下载次数不断增加,采用率也在增加。

2003年,哥德堡IT大学的项目经理Thomas Arts邀请我给他的本科班教授Erlang课程。虽然John Hughes教授已经具备了Erlang的相关知识,但是他想向在生产中使用过Erlang的人学习这门语言,所以他也加入了这个班。一天早上,他上课累了,他刚刚熬了一整夜。他开发了Erlang QuickCheck的第一个版本,并用它非常认真地测试课程练习。这是Quviq也就是QuickCheck商业版的开端。这是一款一流的基于属性的测试工具。最终,我在IT大学教了10年书,有700多名学生参加了这个课程。

进入消息传递领域

在网络泡沫破裂期间,Alexey Shchepin开始开发一个基于XMPP协议的即时消息服务器,名为Ejabberd。经过三年的研发,他在2005年12月1日发布了第一个版本。Facebook Chat生成了它的一个分支,向7000万用户推出了一项聊天服务。大约是在相同的时间,Brian Acton和Jan Koum创建了WhatsApp,也是基于Ejabberd的一个分支。那会儿,创建Ejabberd的分支很热门,MongooseIM做了同样的事,成为一个通用大型信息平台的解决方案。

2006年5月,RabbitMQ诞生了,因为我们发现一种新的发布/订阅消息传递标准AMQP正在定义和实现当中。现在,RabbitMQ已经成为数万个系统的基础。到本世纪末,Erlang已经成为许多消息传递解决方案的首选语言。

多核年代

在互联网复苏期间,不仅仅是大学进行了创新。2005年5月,OTP团队发布了BEAM VM的多核版本,证明Erlang的并发编程模型是未来多核体系结构的理想选择。大多数兴奋来自Erlang的邮件列表,因为没有多少人意识到免费午餐时代已经结束。我们使用Ejabberd,仅仅通过将其编译到Erlang的最新版本,在四核机器上运行时,其吞吐量就增加了280%。

2007年5月,拍摄于1991年的影片Erlang the Movie的原声带从爱立信保险箱里的一盘VHS录像带中被匿名泄露,并被放到了erlang.org网站上,最终传到了YouTube上。目前还没有人公开对这一行为负责。然而,这个世界终于明白了,那些仍然在爱立信NDA工作的人所感受到的宽慰:影片中出现的计算机科学家中,没有一个放弃了自己的日常工作,转而投身演艺事业。2013年,一名潮人试图让Erlang看起来更炫酷,这部电影有了一部续集。这一次,发布者的身份被确认为芝加哥居民Garrett Smith

\"image\"

2007年,Joe Armstrong的《Erlang编程》由The Pragmatic Programmers出版。第二年,2008年6月,我拿到了《Erlang编程》的第一份纸质副本;这是我和Simon Thompson花了18个月的时间写的一本书。当时,O’Reilly的一本书是新兴编程语言获得认可所需的印章,为许多语言的其他许多精彩而多样的图书开辟了道路。

新书发布会与2008年6月在伦敦举行的第一届商业性Erlang大会Erlang eXchange同时举行。这并不是第一次,因为爱立信计算机科学实验室前负责人Bjarne Dacker在斯德哥尔摩主持每年一度的Erlang用户大会已经将近十年了。但是,瑞典的11月很冷,征服世界的时候到了。Erlang eXchange让位给第一届Erlang Factory,后者于2009年3月在加州帕洛阿尔托举行。一个同样美丽但更具异国情调的地方。

欧洲Erlang社区首次与美国同行见面。正如你所想象的那样,我们一见如故。在大会上,Tony Arcieri展示了Reia,这是在BEAM上运行的Ruby版的Erlang。谁说类似Ruby的语法是一个坏主意?那一年的其他演讲者和与会者都是科技界的企业家和领导者,他们的职业生涯都非常出色。

当时,美国有一个名为Tom Preston Werner的Erlang用户。他使用它来扩展一个名为GitHub的社交编程公司的Ruby前端。2009年11月,在斯德哥尔摩参加Erlang用户大会时,我向OTP团队介绍了他和Scott Chacon。他们一起度过了一个下午,促使OTP团队将Erlang的开发转移到GitHub,使其成为他们的主存储库。

会议遍布世界各地。活动已经在阿姆斯特丹、班加罗尔、柏林、布宜诺斯艾利斯、布鲁塞尔、芝加哥(许多地方我都不认识)、中国、克拉科夫、洛杉矶、巴黎、莫斯科、墨西哥城、米兰、慕尼黑、纽约、罗马、旧金山、圣安德鲁斯、特拉维夫、温哥华、华盛顿特区和许多许多其他地方举行。

卡布其诺年代

2010年,我在牛津大学教授我的第一门研究生课程。Erlang被选为面向并发的编程课程。也是在这一年,Bruce Tate的《七周七语言》问世。正是通过这本书,Rails的核心提交者之一Jose Valim认识到,Erlang在并发性竞赛中领先于所有人,因为它还改进了发行版。

2011年1月,Elixir库出现首次提交。其成果于次年在克拉科夫Erlang Factory大会上公布,并于2014年9月发布了1.0版本。像所有成功的语言一样,它试图解决一个问题,即把Erlang的力量带给更广泛的社区,而Web是起点。

恰逢其时。2012年1月,WhatsApp宣布,通过修改FreeBSD和BEAM,他们在一个虚拟机和主机上实现了200万个TCP/IP连接。他们的目标是降低运营成本,在尽可能少的硬件上运行可伸缩的服务。这些结果适用于许多垂直领域,Web就是其中之一。

就在WhatsApp发布该消息的同一个月,一些公司汇集了知识、时间和资源,创建了“工业企业Erlang用户组(Industrial Erlang User Group)”。他们与爱立信合作,将Erlang从开源Mozilla公共许可协议的派生版本转移到Apache许可协议,为“脏调度器(dirty scheduler)”做贡献,推出Bug跟踪工具,资助建立了一个新的erlang.org网站,发布了Erlang Central,并共同致力于建立一个基金会。

Elixir成熟

2014年7月,Jim Freeze在德克萨斯州奥斯汀市组织了第一届Elixir大会。参会者有106名,其中包括主讲人Dave Thomas的小狗。Chris Mccord介绍了浴火重生的Phoenix。Robert Virding和我是这个团队的成员,我清楚地记得我想说的话:不要因为你了解Ruby,就不相信他们“Elixir很容易学习”的说法。你的挑战是并发思维。

Elixir背后的主要思想是并发,知道如何处理并发对项目的成功至关重要。一年后,2015年8月,Phoenix 1.0发布。它与Rails对Ruby的影响相同,将人们带到了Elixir。现在,你可以使用并发编程而不需要掌握它了!不久之后,Nerves出现了,使得Elixir不再仅仅是一种Web语言。

在Elixir大会上,我谈到了与Steve Vinoski合著的一本书,即《高伸缩性系统:Erlang/OTP大型分布式容错设计》。当时,它还是Beta版。我一点也不知道,我不得不等到2016年6月才拿到一份纸质副本。最后四章本应是一本独立的书,最终花了一年半才写成。别人写书的主要经验是,如果你的伴侣告诉你“你将成为一个父亲”,那么你有8个月的时间来完成这本书。另一种情况则是像我一样,在第二个孩子出生前的几天还在参加发布庆祝会。这本书是献给Alison、Peter 和我们的“孕宝宝”。7月初,“孕宝宝”诞生了,这证明了一句Erlang谚语:“只有当你有了第二个孩子,你才能真正理解并发。”

Erlang生态系统

2016年,Elixir的使用持续增长。关于Lisp Flavoured Erlang和Effene(BEAM上的另两种语言)的大会演讲表明,它们的代码已经在生产环境中运行。新的试验性移植不断地出现在我们的雷达上;语言的时代结束了。正如.NET包含C#、F#、Visual Basic等语言,而JVM生态系统则包含Java、Scala、Clojure、Groovy等等。Erlang和BEAM也发生了同样的事情,这使得Bruce Tate提出了Erlang生态系统这个术语。

Alpaca、Clojerl、Efene、Elixir、Elm-beam、Erlog、Erlua、Fez、Joxa、Lisp Flavoured Erlang和Reia,与Erlang和Elixir一起,开启了一个跨语言交互与协作的时代。在一起,我们更强大,我们可以不断进化!

2018年12月,Erlang生态系统基金会的全部文件提交完成,一个以培育生态系统为目标的非营利组织成立了。随着我们对互操作性、通用工具和库的改进,我期待更多的BEAM语言得到普及。随着可伸缩和容错系统需求的增加,Erlang的结构和语义对生态系统内外的新语言的影响也在增加。我希望,随着新一代科技领袖和企业家们展翅翱翔,这将为未来20年设定方向。

未来展望

2018年,在提出Erlang生态系统(以前称为Erlang用户大会)的Code BEAM斯德哥尔摩大会上,来自思科的Johan Bevemyr宣布,他们每年交付200万台运行Erlang应用程序的设备。这让观众大吃一惊,因为这意味着90%的互联网流量都通过由Erlang控制的路由器和交换机。Erlang支撑着爱立信GPRS、3G、4G/LTE网络,如果最近的招聘广告可以作为参考的话,还有他们的5G网络,以及用于物联网基础设施的MQTT代理VerneMQ和EMQ(最流行的AMQP代理)。Erlang不仅支撑着互联网和移动数据网络,还是成千上万的分布式容错系统的骨干。每天通过其金融交换机的交易金额达数十亿美元,通过其消息传递解决方案的消息更多。这可不是编出来的!

这些只是我个人过去20年中看到的一些亮点。所有这一切让我们意识到,我们的工作还远远没有完成。1995年,Joe Armstrong告诉我,Erlang不会永远存在。有一天,他说,更好的东西将会出现。时间快进到2018年12月,我仍然怀着开放的心态等待着那个预言成真。无论如何,Erlang无疑会对它产生重大的影响。

非常感谢Joe、Mike和Robert打通了第一个电话,也非常感谢Bjarne的推动。Jane喊了一声,使它走出爱立信,保证了它的生存。你们都开创了一项事业,使我能够与那些令人惊叹、才华横溢的人们碰面,与他们一起工作和学习,并使用我们都热爱的技术。它为我们提供了一个平台,使我们中的许多人能够推动未来20年(至少)的创新!

查看英文原文:Twenty Years of Open Source Erlang

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_33937778/article/details/89139727

智能推荐

while循环&CPU占用率高问题深入分析与解决方案_main函数使用while(1)循环cpu占用99-程序员宅基地

文章浏览阅读3.8k次,点赞9次,收藏28次。直接上一个工作中碰到的问题,另外一个系统开启多线程调用我这边的接口,然后我这边会开启多线程批量查询第三方接口并且返回给调用方。使用的是两三年前别人遗留下来的方法,放到线上后发现确实是可以正常取到结果,但是一旦调用,CPU占用就直接100%(部署环境是win server服务器)。因此查看了下相关的老代码并使用JProfiler查看发现是在某个while循环的时候有问题。具体项目代码就不贴了,类似于下面这段代码。​​​​​​while(flag) {//your code;}这里的flag._main函数使用while(1)循环cpu占用99

【无标题】jetbrains idea shift f6不生效_idea shift +f6快捷键不生效-程序员宅基地

文章浏览阅读347次。idea shift f6 快捷键无效_idea shift +f6快捷键不生效

node.js学习笔记之Node中的核心模块_node模块中有很多核心模块,以下不属于核心模块,使用时需下载的是-程序员宅基地

文章浏览阅读135次。Ecmacript 中没有DOM 和 BOM核心模块Node为JavaScript提供了很多服务器级别,这些API绝大多数都被包装到了一个具名和核心模块中了,例如文件操作的 fs 核心模块 ,http服务构建的http 模块 path 路径操作模块 os 操作系统信息模块// 用来获取机器信息的var os = require('os')// 用来操作路径的var path = require('path')// 获取当前机器的 CPU 信息console.log(os.cpus._node模块中有很多核心模块,以下不属于核心模块,使用时需下载的是

数学建模【SPSS 下载-安装、方差分析与回归分析的SPSS实现(软件概述、方差分析、回归分析)】_化工数学模型数据回归软件-程序员宅基地

文章浏览阅读10w+次,点赞435次,收藏3.4k次。SPSS 22 下载安装过程7.6 方差分析与回归分析的SPSS实现7.6.1 SPSS软件概述1 SPSS版本与安装2 SPSS界面3 SPSS特点4 SPSS数据7.6.2 SPSS与方差分析1 单因素方差分析2 双因素方差分析7.6.3 SPSS与回归分析SPSS回归分析过程牙膏价格问题的回归分析_化工数学模型数据回归软件

利用hutool实现邮件发送功能_hutool发送邮件-程序员宅基地

文章浏览阅读7.5k次。如何利用hutool工具包实现邮件发送功能呢?1、首先引入hutool依赖<dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.7.19</version></dependency>2、编写邮件发送工具类package com.pc.c..._hutool发送邮件

docker安装elasticsearch,elasticsearch-head,kibana,ik分词器_docker安装kibana连接elasticsearch并且elasticsearch有密码-程序员宅基地

文章浏览阅读867次,点赞2次,收藏2次。docker安装elasticsearch,elasticsearch-head,kibana,ik分词器安装方式基本有两种,一种是pull的方式,一种是Dockerfile的方式,由于pull的方式pull下来后还需配置许多东西且不便于复用,个人比较喜欢使用Dockerfile的方式所有docker支持的镜像基本都在https://hub.docker.com/docker的官网上能找到合..._docker安装kibana连接elasticsearch并且elasticsearch有密码

随便推点

Python 攻克移动开发失败!_beeware-程序员宅基地

文章浏览阅读1.3w次,点赞57次,收藏92次。整理 | 郑丽媛出品 | CSDN(ID:CSDNnews)近年来,随着机器学习的兴起,有一门编程语言逐渐变得火热——Python。得益于其针对机器学习提供了大量开源框架和第三方模块,内置..._beeware

Swift4.0_Timer 的基本使用_swift timer 暂停-程序员宅基地

文章浏览阅读7.9k次。//// ViewController.swift// Day_10_Timer//// Created by dongqiangfei on 2018/10/15.// Copyright 2018年 飞飞. All rights reserved.//import UIKitclass ViewController: UIViewController { ..._swift timer 暂停

元素三大等待-程序员宅基地

文章浏览阅读986次,点赞2次,收藏2次。1.硬性等待让当前线程暂停执行,应用场景:代码执行速度太快了,但是UI元素没有立马加载出来,造成两者不同步,这时候就可以让代码等待一下,再去执行找元素的动作线程休眠,强制等待 Thread.sleep(long mills)package com.example.demo;import org.junit.jupiter.api.Test;import org.openqa.selenium.By;import org.openqa.selenium.firefox.Firefox.._元素三大等待

Java软件工程师职位分析_java岗位分析-程序员宅基地

文章浏览阅读3k次,点赞4次,收藏14次。Java软件工程师职位分析_java岗位分析

Java:Unreachable code的解决方法_java unreachable code-程序员宅基地

文章浏览阅读2k次。Java:Unreachable code的解决方法_java unreachable code

标签data-*自定义属性值和根据data属性值查找对应标签_如何根据data-*属性获取对应的标签对象-程序员宅基地

文章浏览阅读1w次。1、html中设置标签data-*的值 标题 11111 222222、点击获取当前标签的data-url的值$('dd').on('click', function() { var urlVal = $(this).data('ur_如何根据data-*属性获取对应的标签对象

推荐文章

热门文章

相关标签