银河999游戏贴吧Erlang 二十年,如何在编程语言中占据一席之地?

声明:本文来自于微信公众号CSDN(ID:CSDNnews),作者: Fred T-H,授权站长之家转载发布银河999游戏贴吧。

译者 | 苏本如

1998 年开源发布的 Erlang 项目,在全球范围内而是个小众编程语言银河999游戏。

根据 TIOBE 最新发布的语言排行榜,Erlang 仅排名在第 65 位,市场份额占有小于 0.1%银河999官网。假如有一天作为一门函数编程语言,它拥有着强大的并行处理能力和容错机制,简单好用且易学银河999游戏新手卡。最开始英文英文,Erlang 之父 Joe Armstrong 编写的初衷针对的是相似于电话交换机那样的高可用性、高可靠性系统,但后来却成就了可靠性达到 99.9999999% 的目前世界上最多样化的 ATM 交换机!

须臾二十载,如今的 Erlang 项目仍然焕发着生机,并在技术淘汰中稳稳站住了脚跟银河999游戏官网客服。回会了 Erlang 在一点年中经历了一点发展阶段?Erlang 语言的知识阶梯怎样才能影响了对它的采用?Erlang 及其社区未来的发展方向是怎样才能的?......下面后来亲戚亲戚你们都歌词 你们都歌词 一探究竟。

声明:本文已获作者 Fred T-H 翻译授权。

以下为译文:

至少在 10 年前,我加入了Erlang社区,当时正值Erlang语言的第3个 炒作阶段。亲戚亲戚你们都歌词 你们都歌词 你们都歌词 被告知,Erlang语言代表着并发性和并行性开发的未来,因为它回会以最轻松和最快速的措施完成开发。你还能回会了得到免费的Erlang分发包,因为它因为变成了3个 开源软件。在那个年代,一切都开始英文英文变得不可思议。虚拟机也后来获得了SMP支持,而在此后来,要想真正利用同一台计算机上的所有CPU,你前要在那台机器运行多个虚拟机。

在这篇文章中,我我想要先花点时间对这十年的大偏离 时间作个反思。假如有一天我会介绍一点这期间居于在Erlang上的事情,相似炒作阶段对Erlang的影响?Erlang语言的知识阶梯怎样才能影响了对它的采用?以及我在Erlang社区的十年中自身居于了一点变化?最后,我将探讨一下我认为Erlang及其社区的发展方向。

炒作阶段

炒作周期(或技术心智心智成长期的句子是什么是什么的句子的句子度曲线)在3个 产品或技术的生命周期中引入了“阶段”一点概念。这是3个 营销概念,而回会3个 科学概念,假如有一天用它来描述事情的发展往往会很有用。而我最感兴趣的偏离 是“炒作阶段”,它就像一股居于在编程社区的淘金热。你因为见过3个 或多个回会了 的炒作阶段,通常你们都歌词 你们都歌词 似乎都依附于某个杀手级tcp连接运行运行,吸引着每当时人蜂拥而至。

我我想要想到的“炒作”的例子有:炒作Ruby on Rails的“怎样才能在 15 分钟内构建3个 博客引擎”的视频(https://www.youtube.com/embed/Gzj723LkRJY,其中的“看看我回会了 做的所有事情!”仍然是一句有趣的话),炒作Kubernetes 的“在Kubernetes下使用Go语言”的文章(Kubernetes在此后来因为有了少量使用,但在那后来实在进入了3个 爆发期)。在你你这俩程度上,对Elixir和Phoenix的炒作或许回会回会了列入一点名单。

在回会了 的3个 炒作阶段,少量的新来者蜂拥而至,都想来看看能捞点一点好处。一点人会留下,但多数人会调快一蹶不振 。大多数人的等待因为而是几条月或几年,能真正地安顿下来假如有一天坚持几十年的人非常少见。绝大多数人回会一点络绎不绝的先期采用者,你们都歌词 你们都歌词 从3个 技术冲浪到原本技术,嗅探最佳的因为,希望先行采用你你这俩框架、语言或工具包,来获取一定的竞争优势。

就说有通常的想法是,首先我我想要拥有3个 真正的杀手级tcp连接运行运行,假如有一天亲戚亲戚你们都歌词 你们都歌词 就会涌入你的生态系统。杀手级tcp连接运行运行会驱动这股人潮,假如有一天你把它构发明人人来,亲戚亲戚你们都歌词 你们都歌词 就会蜂拥而至。因为你能留住你们都歌词 你们都歌词 中的小偏离 并保持你们都歌词 你们都歌词 的活跃度,回会了 在能回会了预见的未来,你因为拥有3个 活跃的社区。这用你你这俩奇怪的措施,让他我想要起了“雨随犁至”一点理论:

上帝加快犁地的传输传输速率。……这是奇妙的“人类主宰自然”的理论假定,天上的云会分配取之不尽的雨水…而[犁]是让野蛮变成文明的工具;能把沙漠变成农场或花园。……因为更简洁的表达,而是“雨随犁至”。

一点理论的基本前提是,通过人类的定居和农业活动能回会了影响干旱和半干旱地区气候的永久变化,使一点地区更加湿润。一点理论在 19 世纪 70 年代被广泛推广,作为美国大平原(曾被称为“美国大沙漠”)开垦定居的理由。这也被用来证明南澳大利亚在同一时期的边界土地上小麦种植的扩张是合理的。

因为亲戚亲戚你们都歌词 你们都歌词 能让3个 大项目一个劲进行,开发人员就会老出,假如有一天它就会自我维系下去。我认为一点观点显然是错误的,因为尽管Erlang在其最热的炒作阶段拥有了数十个杀手级tcp连接运行运行,假如有一天,它的社区仍然维持在很小的规模。下面,后来亲戚亲戚你们都歌词 你们都歌词 看看在那个时代,Erlang回会一点杀手级tcp连接运行运行:

  • ejabberd(诞生于 302 年,第3个 稳定版本发布于 305 年):它是迄今为止最具可扩展性的主机聊天服务器之一(即使回会之最)。Ejabberd原本是3个 巨大的成功,在你你这俩程度上来说现在仍然是。到目前为止,在StackOverflow上仍然能看多关于它的模块的提问。在 2011 年左右,它衍生出了MongooseIM分支,现在一点个处理方案仍然居于维护中。

  • CouchDB(305):是根据CAP定理,用Erlang编写的第3个 流行数据库,也是当时新潮的多主文档存储处理方案之一。实在现在MongoDB是该领域的王者,但CouchDB在存储引擎方面仍然有其精神继承者,最出名的是BarrelDB,它现在还在维护中。

  • RabbitMQ(307):几乎占据整个AMQP市场的3个 消息队列软件,它现在仍在用假如有一天很有价值。在流式工作负载方面,它一个劲被和Kafka一并讨论,尽管它们具有明显不同的特性和用例。

  • Facebook Chat(308):Facebook Chat的初始版本是用Erlang编写的。因为一点组织组织结构因素,如系统稳定性的考虑,和组织组织结构C++工程师的强势地位,以及因为有了C++实现的一套处理方案等等,后来它用C++完全改写。

  • WhatsApp( 309 年, 2014 年被收购):在Facebook的聊天系统摆脱了Erlang语言后,你们都歌词 你们都歌词 最终购买了WhatsApp一点众所周知的只用了 30 个工程师开发的服务于 9 亿用户的跨平台tcp连接运行运行。它今天仍在使用,事实上,WhatsApp的开发者决定比后来更加深入地参与Erlang和Elixir社区中。

  • Riak(309):是分布式系统世界展现当时人优势的最佳例子之一。Riak是3个 真正可靠的分布式键值数据库店,它是Basho Technology公司开发的3个 当前仍在医疗保健系统和一点关键基础设施中运行的NoSQL数据库产品。在Basho Technology遭遇财务危机并被迫破产时(这在很大程度上是因为公司违反了信托责任,飞快了 了 走向了败亡),Bet365 买下了它的所有知识产权,并优雅地将其开放源代码,现在Riak数据库仍然在开源世界中运行,尽管它的支持力度和过去最好的时期比稍稍不如。

以上提到的杀手级应该tcp连接运行,就说有回会在乔·阿姆斯特朗的《Erlang编程》一书问世的后来老出的。它们制造了一场对Erlang少量采用的完美风暴,一并也为Erlang吸引了少量的旁观者,甚至对黑客新闻网站都产生了明显的影响,以至于它强制要求在某一天所有讨论都前而是关于Erlang的组织组织结构机制。

然而,喧嚣后来,留下来的人很少。

我认为,现在的杀手级tcp连接运行运行的老出和过去相反,它是出于亲戚亲戚你们都歌词 你们都歌词 想在最初的炒作阶段分一杯羹的贪婪。任何tcp连接运行运行,总有3个 弱小的、早期的阶段,大家嗅出了它技术的有趣之处,决定喜欢它,假如有一天将它构建出来,因为碰巧它成了3个 杀手级的tcp连接运行运行,回会了 就会进入3个 更大的炒作阶段。人人都盼望从天上掉馅饼,3个 成功的故事会培养更多的模仿者。原本常见的大间题是“重塑世界”阶段,每当时人都花时间重新实现现有的一切,就说有让他看多就说有就说有“与语言无关”的公告。

假如有一天杀手级的tcp连接运行运行你你这俩从来就回会了够实现开源语言的自我维系。其中3个 有趣的结果是,像RabbitMQ和Ejabberd回会了 的产品,尽管很受欢迎,但其用户社区比贡献者社区要大得多。成千上万的公司使用你们都歌词 你们都歌词 的产品,但你们都歌词 你们都歌词 不回会参与到Erlang社区中来。

毫无大间题,偏离 因为在于Erlang的大多数杀手级tcp连接运行运行回会专门的基础设施中:你创建了3个 当时人都能回会了使用的高可靠性黑盒组件,因为它工作得足够好,你们都歌词 你们都歌词 就不前要查看盒子组织组织结构。现在好了,几十个开发人员因为为数千种一点产品和服务提供了基础设施。而按照定义,专业化的基础设施是3个 不前要少量人员就能产生巨大影响的地方。就说有它们的贡献者群体和社区一个劲比靠近最终产品的群体和社区要小得多。相似,拥有数不清的网页开发人员的Web开发框架,因为更通用的基础设施,都能回会了把它们用到小规模的部署项目上,因为任何企业都因为找到它们的用途。

假如有一天,即使回会了 一点因素,也很容易让他实在,Erlang错过了3个 巨大的因为,那而是它在炒作阶段回会了 获得更大的蛋糕份额。

知识阶梯

我我想要用诸如“过去能回会了居于因为应该居于”回会了 的描述来做反事实推理。相反,我我想要挖掘我在Erlang社区多年的教学和写作中所看多的常见学习模式。一点也是我现在正在Elixir社区中看多的模式,我实在这因为是预示着Elixir因为有着相似未来的你你这俩迹象。

我最钟爱的3个 理论是,像编程语言(及其生态系统)回会了 的技术主题具有多层多样化性,前要学习和发现各种概念。我第一次开始英文英文表达一点理论是在Learn You Some Erlang的网站上,用3个 我称之为Erlang第九圈的图表。

我认为学习一项技术并回会无休止的痛苦(至少,它不应该回会了 ),这话是回会说得不得劲假心假意,让他是喜欢双关语。但简单地说,对任何新技术的学习,通常有3个 更“核心”的主题路径或次序,回会了 回会了“知识阶梯”回会了 的东西,在一点知识阶梯上,越有价值的知识/概念被放得越高,也越难到达,就说有实际情况汇报是,到达越高的地方的人会回会了 少。

对Erlang来说, 我认为它的“知识阶梯”因为是回会了 的:

  1. 函数式编程;

  2. 隔离tcp连接运行运行和并发性;

  3. 可靠的并发性(links, monitors, timeouts);

  4. OTP行为模式和一点系统抽象;

  5. 怎样才能构建OTP系统;

  6. 怎样才能构建发布版本并处理其生命周期;

  7. 怎样才能保持系统始终在线,以及怎样才能运作。

因为你是第一次接触Erlang,假如有一天从一本初学者的书开始英文英文学习,你因为会在第一级阶梯上花费少量的时间:与函数式编程、不可变性、递归和相似的概念交亲戚亲戚你们都歌词 你们都歌词 。迟早,让他接触到并发性和并行性、tcp连接运行运行和消息传递。在那后来,你开始英文英文学习links和monitorstcp连接运行运行监控,错误处理,以及Erlang的组织组织结构机制。在Erlang的大炒作阶段,第二级和第三级阶梯成了最让旁观者惊叹的卖点。因为你前要自学一点在未来的项目中必备之知识,那而是其中之一。

一点的梯级会在稍后跟进,尤其是OTP(第 4 级阶梯),但前提那个她 坚持完成编程一点阶梯。OTP被视为Erlang的真正价值所在——并发性和函数式编程实在不错,假如有一天OTP代表的一般开发框架那个她 前要坚持和使用的真正独特的东西。就说大家我想要使用一点框架,了解它们所做的美好的抽象,假如有一天对于怎样才能正确地构建每件事情因为会感到不得劲困惑。

事实上,像Ejabberd回会了 的tcp连接运行运行的大偏离 开发几乎回会了 突破第四级阶梯。当时的生态系统不得劲像蛮荒的西部,对于爱立信的员工和最有动力的自学者来说, OTP知识也而是回会了 一回事。大多数人回会了在有值得投入生产的东西老出大间题、假如有一天想寻找更好的处理措施时,才有因为到达第五级。直到 2015 年或 2016 年,当Relx的跳老出在开始英文让整个发行体验变得更容易时,第 6 级才被重视。第 7 级几乎从未到达,事实上,就说大家都实在不应该热升级3个 节点,理想情况汇报下,你而是会在生产环境中使用SSH命令行进行调试操作。

在实践中,无需每当时人回会按照相同的顺序来学习所有一点知识,一点书会调换它们的次序(这让他我想要到了Erlang and OTP in Action这本书)。我实在一点次序都回会大间题,“阶梯”用在这里而是为了说明大间题。

社区波浪式向前发展。炒作阶段会使3个 社区的规模增加十倍甚至百倍,大多数人会好奇地看一眼假如有一天一蹶不振 ,就说有3个 社区中的大多数用户倾向于等待在第3个 梯级。少偏离 人会到达高一级阶梯,更少偏离 的人会到达更高一级,依此类推,直到你拥有到达最高阶梯的组织组织结构专家圈为止。

对于Erlang来说,我认为前3个梯级因为是最容易到达的。第3个阶梯花了几年的时间来开发,最终被认为是有价值的。第3个阶梯非常多样化。Erlang不足工具和益态系统,Erlang社区留下来的回会当时人取舍的,我想要忍受一点贫瘠环境的人,假如有一天对新来者的困境不敏感。为了保持这篇文章简短(好吧,长而回会荒谬的长),让他不在此赘述了。

在任何情况汇报下,因为你是3个 Elixir的用户,你因为会看多你在一点硬性定义的阶梯上的位置,让他感觉到3个 社区中的派系通常回会那里。就说大家,因为你们都歌词 你们都歌词 而是在Phoenix上做得很好,很少能突破第四阶梯,假如有一天在可预见的将来,你们都歌词 你们都歌词 中的一点会一个劲等待在第三阶梯或以下。在一点情况汇报下,一点情况汇报回会对的。这里亲戚亲戚你们都歌词 你们都歌词 而是观察,不作评判。作为3个 通过了就说有知识阶梯的人(因为在一点环境中,我的身前还有一点知识阶梯,比如“修补虚拟机”相似的),你们都歌词 你们都歌词 似乎错过了就说有知识阶梯,但坦率地说,一点东西对你们都歌词 你们都歌词 因为永远无需有用。

但所有一点回会说:作为3个 社区,亲戚亲戚你们都歌词 你们都歌词 因为会让亲戚亲戚你们都歌词 你们都歌词 如此超越基本水平,从而使亲戚亲戚你们都歌词 你们都歌词 当时人陷入困境。经验教训的学习是回会了回会了一蹴而就的,在你你这俩程度上,Erlang社区是盲人在引导盲人,因为它实在太小了,回会了 足够的人来分享所有前要的经验。今天的情况汇报比较容易,因为你在3个 炒作的周期之外,你很因为会找到好的帮助,因为很少大家同前要求所有的帮助。

我我想要表达的是,因为明天Erlang有第3个炒作阶段,亲戚亲戚你们都歌词 你们都歌词 会比上3个 炒作阶段表现得更好。希望一点经验,加带Erlang和Elixir社区之间更好的公司战略合作 ,让亲戚亲戚你们都歌词 你们都歌词 回会接触到更多的受众,让亲戚亲戚你们都歌词 你们都歌词 成功的因为加倍。