现在的位置: 首页 > 自动控制 > 工业·编程 > 正文

Erlang发展简史

2020-01-20 12:46 工业·编程 ⁄ 共 7053字 ⁄ 字号 暂无评论

问世于 1987 年的面向并发的编程语言 Erlang,比 Java 和 Ruby 等老牌语言都要出现得早,但是彼时的 Erlang 并不被业界广泛地熟知,因为在其发布的十年间,它只作为商业产品出售且主要在爱立信公司内部使用。

然而在2018年 Code BEAM Stockholm 会议上(以前称为 Erlang 用户大会),思科的 Johan Bevemyr 宣布他们每年都会售出 200 万台运行 Erlang 应用程序的设备,这意味着 90% 的互联网流量都是通过 Erlang 控制的路由器和交换机进行的。

而这其中的变化主要得益于 1998 年爱立信将 Erlang 作为开源项目发布的举措,与此同时,我们也不禁产生疑问,封闭十年的 Erlang 为何在一夕之间就被爱立信开源了?而在这开源的 20 年中,它又经历了些什么?

1998 年 12 月 8 日星期二,Erlang 开源发布。还记得那周你在哪里吗?我记得我在德克萨斯州的达拉斯,当时正在访问爱立信美国分公司,帮助他们建立一个 AXD301 交换机的 Erlang 团队。星期二早上醒来,我收到了 Erlang 开源的消息。

那次发布很平静。没有关于发布的公关,也没有大肆宣传或媒体报道。只发布了一个 erlang.org 的网站(利用 vi 纯手工制作)。通过 Erlang 的邮件列表发送了一封邮件,在 slashdot 上首页上发了一篇帖子,同时还在 comp.lang.functional 上提到了这个消息(Joe(Erlang 之父) 尽职尽责地跟进了这个消息)。没有其他营销活动向世人宣布爱立信发布了一个巨大的开源项目。那一周吸引我的眼球的并不是 Erlang 的发布,而是达拉斯市中心 Marky Ramone 和 Intruders 的演出。我几乎不知道开源的 Erlang 将对科技行业、我的职业生涯以及身边的许多人造成怎样的影响。

走出爱立信

是什么原因让我们决定走出爱立信走向开源?由于各种原因,我们中的许多人都希望 Erlang 作为开源发布。我的一些爱立信的同事想从公司辞职,但他们想继续用他们心目中的神器来构建产品。还有些人希望通过为大众提供拥有容错性和和可扩展系统的卓越工具,让这个世界变得更美好。对于爱立信的管理层来说,使用 Erlang 的人越多就意味着可以招募到更多的人才。

Jane Walerud(Erlang Systems 的销售经理,对 Erlang 的开源起到了至关重要的作用)希望我们之中有人能在爱立信之外出售 Erlang,她是为数不多的知道如何与管理层交流的人,她明白销售编程语言的时代已经结束了。爱立信软件架构实验室负责人 HåkanMillroth 建议我们尝试这种所谓“开源”的新东西。Jane 拥有早期的《The Cathedral and the Bazaar paper》论文,她说服了爱立信的管理层发布 Erlang 虚拟机的源代码、标准库和 OTP 的部分内容。

在 Erlang 走出爱立信之前,很多人都不相信这会成为现实。有人担心,爱立信会在最后一秒钟停止整个计划。开源——几个月前才出现的这个术语是一个奇怪又凶猛的野兽,大公司不知道如何利用开源。担心爱立信在未知领域走得太远的人很多,当然这也无何厚非。为了缓解 Erlang 发行的风险,有传闻说我们的朋友 Richard O'Keefe(他在新西兰奥塔哥大学工作)前来拯救我们。东方的夜晚来得很早,就在新西兰午夜的钟声敲响时,erlang.org 网站上线了。但是仅维持了几分钟,只够一个匿名用户下载第一个 Erlang 版本,等下载确认完成后,网站就离线了,12 个小时后才再次上线,时至瑞典的午夜。当时我在达拉斯睡得很香,所以我既无法确认事情的经过,也无法否认。但是就像每个传说一样,我相信事情的背后都有不为人知的真相。

互联网的泡沫时代

最初的几年,项目的进展非常缓慢。尽管如此,由 Kenneth Lundin 领导的 OTP 团队仍在努力工作。1999 年 5 月,BjörnGustavsson 对 BEAM 虚拟机(Bogdan 的 Erlang 抽象机器)进行了重构,并正式取代了 JAM(Joe 的抽象机器)。一年前 Joe 离开了爱立信,虽然 BEAM 速度更快,但需要一定的时间才能准备好投入到生产中。

我记得每当我们发现一家使用 Erlang / OTP 的新公司时就会激动不已。当时瑞典电话公司 Telia 正在全力打造呼叫中心;英国移动运营商 One2One 最初用它做增值服务,后来又扩展到其核心网络;巴黎的 IdealX 首次涉猎消息传递和 XMPP;芝加哥的 Vail 系统和多伦多的 Motivity 也在自动拨号软件用到了我们的 Erlang / OTP。当然,Bluetail 有许多产品可以为互联网服务商提供可扩展性和弹性。

Erlang 在爱立信核心产品中的使用持续在扩展。恰巧 1999 年我搬到了伦敦,在那里我看到爱立信内部对 Erlang 专业知识的需求越来越多。后来 Erlang Solutions 诞生了。在公司成立的一年内,我在瑞典、挪威、澳大利亚、爱尔兰、法国、美国,当然还有英国都有了新客户。2000 年,我们建立了第一个非爱立信的客户;并在巴黎进行 IdealX 培训、指导和代码审查。

那一年,Bluteail 以 1.52 亿美元收购了 Alteon Web Systems(几天后 Alteon 被 Nortel 收购),这个消息传遍了 Erlang 社区。爱立信竞争对手在开发 Erlang 产品!还有一代成功的企业家,他们有资金投入到了许多其他创业公司,其中包括 Synapse、Klarna 和 Tail-f。

Bluetail 成功不久后,我们就迎来了互联网泡沫的破灭,整个行业进入了寒冬,后来逐步开始复苏。然而,这次泡沫的破灭没有影响到那些全力以赴的学者。2002 年,查尔姆斯大学的 John Hughes 教授成功地举办了经 SIGPLAN 和 ACM 授权的 Erlang 研讨会。虽然我们并不是很清楚这一切意味着什么,但仍然为此感到非常自豪。宾夕法尼亚州匹兹堡的 ACM SIGPLAN Erlang 研讨会是第一个获得授权的研讨会。在那次研讨会上,来自乌普萨拉大学的博士 Richard Carlsson 向全世界展示了 Erlang 版本的试用版。

2004 年 9 月,来自乌普萨拉大学的 Kostis Sagonas 在犹他州 Snowbird 举办的 ACM SIGPLAN Erlang 研讨会上进行了一次快速演讲,并首次公开演示了 Dialyzer。他在南非 Teba 银行的代码库上运行了这个工具。这是他和他的学生们为生态系统贡献的第一个强大的工具(后来他们还贡献了许多优秀的工具)。

长期以来,世界各地的许多大学都在用 Erlang 进行计算机科学各个方面的授课。这反过来催生了很多研究、硕士论文和博士项目。该研讨会为学术界提供了一个论坛,人们可以在上面公布他们的成果,并与行业合作伙伴共同验证。erlang.org 网站的下载量在不断增加,使用该软件的人数也不断提高。

2003 年,哥德堡 IT 大学的项目经理 Thomas Arts 邀请我为他的本科生教授 Erlang 课程。尽管 John Hughes 教授很熟悉 Erlang,但他依然想从在生产中使用该软件的人那里学到新知识,所以他也来上我的课。一天早上,上课的时候他一脸疲惫,貌似前一晚通宵加班了。他开发了第一版的 Erlang QuickCheck,并且他非常尽职尽责地测试了课程练习。这就是 Quviq 和商业版 QuickCheck 的来历,QuickCheck 是一种首屈一指的基于属性的测试工具。后来我在 IT 大学教了十年的课,共有 700 多名学生参加了这门课程。

涉足消息传递

在互联网泡沫破灭期间,Alexey Shchepin 开始研究一款名为 Ejabberd 的基于 XMPP 的即时消息服务器。经过三年的努力,2005 年 12 月 1 日他发布了 1.0 版。Facebook Chat 采用了 Ejabberd,并向 7 千万用户推出了聊天服务。同时,Brian Acton 和 Jan Koum 创立了 WhatsApp,同样也是采用了 Ejabberd。通过大肆宣传(MongooseIM 也做了大肆宣传),Ejabberd 成为了大规模消息传递解决方案的通用平台。

2006 年 5 月,随着我们定义并实现了一种名为 AMQP 的新型发布/订阅消息传递标准,RabbitMQ 问世了。现如今 RabbitMQ 已成为数万个系统的支柱。到 2009 的时候,Erlang 成为了许多消息传递解决方案的首选语言。

多核的年代

在互联网复苏期间并不是只有各个大学在进行创新。2005 年 5 月,OTP 团队发布了多核版的 BEAM 虚拟机,证明了 Erlang 的并发和编程模型是未来多核架构的理想选择。大多数激动人心的消息都停留在了 Erlang 邮件列表,因为没有多少人意识到免费午餐已经结束了。我们选择了 Ejabberd,而且只是将其编译成最新版的 Erlang,就实现了在四核机器上运行时的吞吐量增加 280%。

2007 年 5 月,保存在爱立信保险箱内的 1991 年的《Erlang 电影》的原始 VHS 盒式录像带被匿名泄露,并最终发布到了 YouTube 上。至今仍然没有人愿意公开承担这一行动的责任。然而,整个世界终于感受到那些受爱立信保密协议影响的人都松了一口气,出现在电影中的计算机科学家中,没有人为了演艺事业放弃他们现有的工作。2013 年有一位追赶时髦的人发布了这部电影的续集,他只是为了让世人觉得 Erlang 很酷。这一次,经确认该行为的始作俑者是芝加哥的居民 Garrett Smith。

2007 年,The Pragmatic Programmers 出版了由 Joe Armstrong 编写的《Erlang 编程指南》。翌年 2008 年 6 月,我出版了第一本纸质的《Erlang 编程指南》,该书是由 Simon Thompson 和我历经 18 个月的呕心沥血之作。当时,O'Reilly 的书是新兴编程语言的权威认证,他们出版了很多种语言编写的各种优秀的书籍。

2008 年 6 月,这本书的发布会与在伦敦召开的第一届 Erlang eXchange 交易会同时举行。这不是第一次这类的盛会,因为近十年来爱立信计算机科学实验室的前负责人 BjarneDäcker 一直在斯德哥尔摩举行年度 Erlang 用户大会。但 11 月的瑞典天气很冷,同时征服世界的时刻也来临了。2009 年 3 月在加利福尼亚州帕洛阿尔托召开了第一届 Erlang Factory 大会。帕洛阿尔托是个更具异国情调的地方,尽管如此还是一样美丽。

在会上,欧洲 Erlang 社区第一次与美国同行会面。你可以想象,当时热火朝天的场面。在会议上,Tony Arcieri 推出了 Reia,这是 Ruby 版风格的在 BEAM 上运行的 Erlang。谁说类似 Ruby 的语法都很糟?其他主持人和与会者都是当年科技领域的企业家和领导者中的佼佼者。

当时美国的 Erlang 用户是 Tom Preston Werner。他利用 Erlang 来扩展 GitHub 的 Ruby 前端。2009 年 11 月,在斯德哥尔摩参加 Erlang 用户大会时,我把他和 Scott Chacon 介绍给了 OTP 团队。他们经过一下午的讨论,最后 OTP 团队决定将 Erlang 的开发转移到 GitHub 上,并用作主要的代码仓库。

全球范围内召开了大量会议。阿姆斯特丹、班加罗尔、柏林、布宜诺斯艾利斯、布鲁塞尔、芝加哥、中国的很多城市、克拉科夫、洛杉矶、巴黎、莫斯科、墨西哥城、米兰、慕尼黑、纽约、罗马、旧金山、圣安德鲁斯、特拉维夫、温哥华、华盛顿特区以及许多其他地方都举办了活动。

The Cappuccino Years

2010 年,我在牛津大学给大一的新生讲课。Erlang 是面向并发编程课程的语言。同一年 Bruce Tate 发布了《Seven Languages in Seven Weeks》,Rails 的核心开发人员之一 JoséValim 正式通过这本书意识到 Erlang 在并发竞争中处于领先地位,因为 Erlang 也是这本书热卖的原因。

2011 年 1 月,Elixir 代码仓库第一次正式提交。翌年在克拉科夫的 Erlang Factory 发布了 Elixir,并于 2014 年 9 月发布了 1.0 版。与所有成功的语言一样,Elixir 也在努力解决一个问题,即从 Web 开始将 Erlang 的力量带到更广泛的社区。

这个时机非常好。 2012 年 1 月,WhatsApp 宣布他们通过修改 FreeBSD 和 BEAM,在一个虚拟机和主机上实现了 200 万个 TCP / IP 连接。他们的目标是降低运营成本,用尽可能小的硬件运行可扩展的服务。这些方法可以运用到许多行业,Web 就是其中之一。

在 WhatsApp 发布公告的同一个月里,一小簇公司汇集了知识、时间和资源,共同创建了工业 Erlang 用户组。他们与爱立信合作,将 Erlang 从开源 Mozilla 公共授权转移到了 Apache 授权,为该调度程序做出了贡献,启动了错误跟踪工具,为新的 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 问世。它与 Ruby 的 Rails 作用一样,即将人们带到 Elixir 的世界。有了 Phoenix 后,你不需要掌握并发性就可以学习 Elixir 了!不久之后人们就开始紧张了,他们不再认为 Elixir 是 Web 的唯一语言。

在 Elixir 大会期间,我谈到了我与 Steve Vinoski 共同创作的书《Designing For Scalability with Erlang/OTP》。当时,该书只发行了测试版。但我没想到我需要等到 2016 年 6 月才能拿到纸质的书。那本书的最后四章我花费了一年半才写完,它们本身就可以作为一本书。我想给其他作家的一个经验教训是:如果你的伴侣告诉你“你要做爸爸了”,那么意味着你必须在 8 个月内写完你的书。否则就会像我一样,等到你第二个孩子出生前才来参加书的发布会。这本书应该归功于 Alison、Peter 和我的宝贝。我的宝贝出生于 7 月初,证明 Erlang 的说法没有错:“直到生第二个孩子你才能搞懂并发。”

Erlang 生态系统

纵观 2016 年,Elixir 的使用率不断提高。关于 Lisp 版的 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 版的 Erlang 和 Reia、以及 Erlang 和 Elixir,它们共同开启了跨语言互动和合作的时代。我们一起变得更强大,还会继续向前发展!

2018 年 12 月,Erlang 生态系统基金会提交了所有的文书工作,建立了一个非盈利组织,其目标是培育生态系统。我期待 BEAM 上的更多语言越来越受欢迎,因为我们改进了互操作性、通用工具和很多库。随着对可扩展和容错系统需求的增加,Erlang 的构造和语义对生态系统内外新语言的影响力也在增加。我希望这将成为未来 20 年新一代技术领导者和企业家的翅膀。

未来

2018 年,在 Erlang 生态系统召开的 Code BEAM Stockholm 会议上(以前称为 Erlang 用户大会),思科的 Johan Bevemyr 宣布他们每年都会售出 200 万台运行 Erlang 应用程序的设备。这让观众感到震惊,因为这意味着 90% 的互联网流量都是通过 Erlang 控制的路由器和交换机进行的。Erlang 为爱立信的 GPRS、3、4G / LTE 提供支持,而且最近的招聘广告都是通过他们的 5G 网络发布的。通过 VerneMQ 和 EMQ,MQTT(最受欢迎的AMQP 经纪公司)实现了物联网的基础设施。Erlang 不仅支持互联网和移动数据网络,它还是数以万计分布式容错系统的支柱。每天数十亿美元的金融交换发生在 Erlang 之上,Erlang 的消息传递解决方案传递着越来越多的消息。没有 Erlang,这一切都不可能发生!

这些只是过去 20 年中,我人生最光辉的时刻。尽管如此,我们还有很多未完的事业。1995 年,Joe Armstrong 跟我说 Erlang 永远没有前途。后来有一天,他说世界上还有更美好的事物。时至 2018 年 12 月,我仍然以开放的心态等待他的预言成真。无论他预言中的事物是什么,毫无疑问 Erlang 将会对它产生重大影响。

非常感谢 Joe、Mike 和 Robert 迈出了第一步,还要感谢 Bjarne 实现了 Erlang。我要向 Jane 致敬,是他将 Erlang 带出了爱立信,才有了它后来的发展。感谢你们的努力,我才有机会可以与这些才华横溢的科技人才会面,一起工作和学习。Erlang 为我们提供了一个平台,让我们可以在未来 20 年内继续推动创新!

原文

给我留言

留言无头像?