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

智能推荐

使用nginx解决浏览器跨域问题_nginx不停的xhr-程序员宅基地

文章浏览阅读1k次。通过使用ajax方法跨域请求是浏览器所不允许的,浏览器出于安全考虑是禁止的。警告信息如下:不过jQuery对跨域问题也有解决方案,使用jsonp的方式解决,方法如下:$.ajax({ async:false, url: 'http://www.mysite.com/demo.do', // 跨域URL ty..._nginx不停的xhr

在 Oracle 中配置 extproc 以访问 ST_Geometry-程序员宅基地

文章浏览阅读2k次。关于在 Oracle 中配置 extproc 以访问 ST_Geometry,也就是我们所说的 使用空间SQL 的方法,官方文档链接如下。http://desktop.arcgis.com/zh-cn/arcmap/latest/manage-data/gdbs-in-oracle/configure-oracle-extproc.htm其实简单总结一下,主要就分为以下几个步骤。..._extproc

Linux C++ gbk转为utf-8_linux c++ gbk->utf8-程序员宅基地

文章浏览阅读1.5w次。linux下没有上面的两个函数,需要使用函数 mbstowcs和wcstombsmbstowcs将多字节编码转换为宽字节编码wcstombs将宽字节编码转换为多字节编码这两个函数,转换过程中受到系统编码类型的影响,需要通过设置来设定转换前和转换后的编码类型。通过函数setlocale进行系统编码的设置。linux下输入命名locale -a查看系统支持的编码_linux c++ gbk->utf8

IMP-00009: 导出文件异常结束-程序员宅基地

文章浏览阅读750次。今天准备从生产库向测试库进行数据导入,结果在imp导入的时候遇到“ IMP-00009:导出文件异常结束” 错误,google一下,发现可能有如下原因导致imp的数据太大,没有写buffer和commit两个数据库字符集不同从低版本exp的dmp文件,向高版本imp导出的dmp文件出错传输dmp文件时,文件损坏解决办法:imp时指定..._imp-00009导出文件异常结束

python程序员需要深入掌握的技能_Python用数据说明程序员需要掌握的技能-程序员宅基地

文章浏览阅读143次。当下是一个大数据的时代,各个行业都离不开数据的支持。因此,网络爬虫就应运而生。网络爬虫当下最为火热的是Python,Python开发爬虫相对简单,而且功能库相当完善,力压众多开发语言。本次教程我们爬取前程无忧的招聘信息来分析Python程序员需要掌握那些编程技术。首先在谷歌浏览器打开前程无忧的首页,按F12打开浏览器的开发者工具。浏览器开发者工具是用于捕捉网站的请求信息,通过分析请求信息可以了解请..._初级python程序员能力要求

Spring @Service生成bean名称的规则(当类的名字是以两个或以上的大写字母开头的话,bean的名字会与类名保持一致)_@service beanname-程序员宅基地

文章浏览阅读7.6k次,点赞2次,收藏6次。@Service标注的bean,类名:ABDemoService查看源码后发现,原来是经过一个特殊处理:当类的名字是以两个或以上的大写字母开头的话,bean的名字会与类名保持一致public class AnnotationBeanNameGenerator implements BeanNameGenerator { private static final String C..._@service beanname

随便推点

二叉树的各种创建方法_二叉树的建立-程序员宅基地

文章浏览阅读6.9w次,点赞73次,收藏463次。1.前序创建#include<stdio.h>#include<string.h>#include<stdlib.h>#include<malloc.h>#include<iostream>#include<stack>#include<queue>using namespace std;typed_二叉树的建立

解决asp.net导出excel时中文文件名乱码_asp.net utf8 导出中文字符乱码-程序员宅基地

文章浏览阅读7.1k次。在Asp.net上使用Excel导出功能,如果文件名出现中文,便会以乱码视之。 解决方法: fileName = HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8);_asp.net utf8 导出中文字符乱码

笔记-编译原理-实验一-词法分析器设计_对pl/0作以下修改扩充。增加单词-程序员宅基地

文章浏览阅读2.1k次,点赞4次,收藏23次。第一次实验 词法分析实验报告设计思想词法分析的主要任务是根据文法的词汇表以及对应约定的编码进行一定的识别,找出文件中所有的合法的单词,并给出一定的信息作为最后的结果,用于后续语法分析程序的使用;本实验针对 PL/0 语言 的文法、词汇表编写一个词法分析程序,对于每个单词根据词汇表输出: (单词种类, 单词的值) 二元对。词汇表:种别编码单词符号助记符0beginb..._对pl/0作以下修改扩充。增加单词

android adb shell 权限,android adb shell权限被拒绝-程序员宅基地

文章浏览阅读773次。我在使用adb.exe时遇到了麻烦.我想使用与bash相同的adb.exe shell提示符,所以我决定更改默认的bash二进制文件(当然二进制文件是交叉编译的,一切都很完美)更改bash二进制文件遵循以下顺序> adb remount> adb push bash / system / bin /> adb shell> cd / system / bin> chm..._adb shell mv 权限

投影仪-相机标定_相机-投影仪标定-程序员宅基地

文章浏览阅读6.8k次,点赞12次,收藏125次。1. 单目相机标定引言相机标定已经研究多年,标定的算法可以分为基于摄影测量的标定和自标定。其中,应用最为广泛的还是张正友标定法。这是一种简单灵活、高鲁棒性、低成本的相机标定算法。仅需要一台相机和一块平面标定板构建相机标定系统,在标定过程中,相机拍摄多个角度下(至少两个角度,推荐10~20个角度)的标定板图像(相机和标定板都可以移动),即可对相机的内外参数进行标定。下面介绍张氏标定法(以下也这么称呼)的原理。原理相机模型和单应矩阵相机标定,就是对相机的内外参数进行计算的过程,从而得到物体到图像的投影_相机-投影仪标定

Wayland架构、渲染、硬件支持-程序员宅基地

文章浏览阅读2.2k次。文章目录Wayland 架构Wayland 渲染Wayland的 硬件支持简 述: 翻译一篇关于和 wayland 有关的技术文章, 其英文标题为Wayland Architecture .Wayland 架构若是想要更好的理解 Wayland 架构及其与 X (X11 or X Window System) 结构;一种很好的方法是将事件从输入设备就开始跟踪, 查看期间所有的屏幕上出现的变化。这就是我们现在对 X 的理解。 内核是从一个输入设备中获取一个事件,并通过 evdev 输入_wayland

推荐文章

热门文章

相关标签