大约10年前,我在第一个Erlang语言的主要炒作阶段加入了Erlang社区。我们被告知,Erlang是并发和并行的未来,完成任务的最简单,最快捷的方法,您也可以免费获得分发。但是事情刚刚开始就变得惊人。虚拟机是最近才获得了SMP支持,在此之前您需要在同一台计算机上运行多个VM才能真正使用所有CPU。 我想花点时间来反思这十年的大部分时间。在这篇文章中,我将介绍一些事情,例如炒作阶段,以及这与Erlang的关系,语言中的思想阶段以及如何影响采用,我十年来发生的变化,我认为Erlang应该为整个编程社区带来什么。
炒作阶段 这是一个营销概念,而不是一个科学概念,但描述事情的进展往往是有用的。最让我感兴趣的部分是炒作阶段的想法,这是一种在编程社区中发生的淘金热。浮现在脑海中的例子可能包括Ruby on Rails和如何建立一个博客引擎在15分钟内/或者Kubernetes,在较小的程度上,Elixir和Phoenix也可以适合繁缛这个炒作名单。 在这样的炒作阶段,一群令人难以置信的新人涌入,有些人会留下,大多数人会离开。逗留时间可能是几个月或几年,在极少数情况下,您可以找到一个可以持续数十年的坚持者,但其中绝大多数将是连续的早期采用者,他们从技术使用到技术冲浪,通过首先使用一种框架、语言或工具包来嗅探获得竞争优势的最佳机会。 因此,通常情况下,您需要做的是获得一个真正的杀手级应用程序,人们才会来到您的生态系统。我认为这显然是错误的,主要是因为Erlang在其最大的炒作期间已经拥有数十个杀手级应用程序,然而,社区仍然很小。例如,请参阅那个时代的以下杀手级应用:
- ejabberd(2002年,2005年第一次稳定发布):它是迄今为止最可靠的托管聊天服务器之一。Ejabberd取得了巨大的成功,在某种程度上仍然是如此。到目前为止,您仍会找到有关模块的StackOverflow问题。在2011年左右,它被分成了MongooseIM,两种解决方案仍然得到维护。
- CouchDB(2005):遵循CAP定理在Erlang中编写的第一个流行数据库之一,也是当时多主文档存储的新浪潮之一。虽然MongoDB 占据了大部分空间,但CouchDB仍然在存储引擎(例如BarrelDB)中拥有精神遗留,但仍然可以维护。
- RabbitMQ(2007):一个队列软件实现,几乎占用了整个AMQP空间。它仍然是持续的和相关的,并且在流媒体工作负载方面经常与Kafka一起讨论,尽管它们具有非常独特的属性和用例。
- Facebook聊天(2008):Facebook聊天的初始版本是用Erlang编写的。由于很多内部决策(稳定性,C ++工程师强大的内部存在以及一套既定的解决方案),它在以后用C ++重写
- WhatsApp(2009年,2014年买入):一旦facebook摆脱了Erlang的聊天系统,他们最终购买了WhatsApp,其中900万用户只需要50名工程师。它今天仍然在进行中,事实上,WhatsApp的人们已经决定在Erlang和Elixir社区中获得比以往更多的参与。
- Riak(2009):分布式系统数据库的最佳例子之一。Riak是一个非常可靠的分布式键值存储,是一个仍然在医疗保健系统和其他关键基础设施中运行的Basho产品。在Basho陷入财务困境并被迫破产之后(在很大程度上是由于违反信托义务导致公司“陷入亏损”)。从那以后,Bet365的人们已经购买了所有IP,优雅地打开了所有IP,数据库仍然存在于开源世界中,尽管支持比其更好的日子更有限。
思想的阶梯 我想深入研究我在Erlang社区中看到的常见学习模式,这些模式是我多年来教授和撰写的。这些也是我现在在Elixir社区中发生的模式,我觉得它可能是类似未来的标志。 我的宠物理论是,像编程语言(及其生态系统)这样的技术主题具有多层复杂性,需要学习和发现各种概念。我不认为学习一项技术是无尽的痛苦(至少,它不应该是)。你学习技术,创造一个“思想阶梯”,更有价值的概念越来越高,但是因为它们更难实现,学会的人就越来越少。在Erlang中,我认为梯形图可能如下所示:
- 函数式编程
- 孤立的进程和并发
- 可靠的并发(链接,监视器,超时)
- OTP行为和其他系统抽象
- 如何构建OTP系统
- 如何构建版本并处理其生命周期
- 如何永远不要关闭系统,以及如何操作它
在实践中,并不是每个人都会按照相同的顺序浏览所有这些,并且有些书会翻转它们(想到Erlang和OTP in Action)。没关系,梯子仅用于说明目的。
社区倾向于波动。由于炒作阶段可以将社区的规模增加十倍或一百倍,并且大多数人会采取好奇的态度然后离开,社区中的大多数用户将倾向于坐在第一个梯级。
我认为对于Erlang来说,前三个阶段可能很容易进入。第四个花了几年的时间来发展并被认为是值得的。第五个是事情变得非常艰难的地方。Erlang的工具和生态系统缺乏。Erlang社区的人自我选择是能够容忍贫瘠环境的人,因此对新移民的困境不敏感。
在任何情况下,如果您是Elixir用户,您可能会看到您在这个任意定义的阶梯上的位置,并且您可以了解社区中的派系通常位于哪里。
改变了什么 Erlang没有留在装满甲醛的玻璃容器中,等待在光天化日之下取出。它不断发展中。部分原因还在于实际的工业需求推动了平台向前发展,而学术界只是按照自己喜欢的方式推动前进。 以下是我能想到的一些事情,人们可能很高兴知道自2009年或更早的变化。
Erlang未来方向 从2007年到2009年,不一定有大型杀手级应用程序突然出现,但这并不意味着没有任何项目显示出承诺。Erlang仍然深入很多公司的基础设施,其大多数最初的杀手级应用仍然存在。Erlang和Elixir拥有世界上一些最好的框架。尽管如此,有迹象表明我们现在还没有处于炒作阶段。
是否会有另一个炒作阶段?也许,也许不是。你可以说Elixir 是下一个炒作阶段。生态系统有足够的共同点,即在一个地方学到的经验教训可以转移到另一个地方。它们之间存在更多相似之处。也许还有新的文艺复兴。我个人对此不再那么关心了。我倾向于喜欢较小的社区,所以我对此感觉很好。Erlang不需要几何增长来享受它,它只需要保持可持续性。
....
这10年来一直令人惊叹、有趣的是,Erlang社区仍然很小,而且大部分尚未开发。这意味着有很多机会参与任何事情,与渴望分享它的人充满智慧,并为自己创造一席之地。
参考: 女程序员肺腑之言:请停止美化不必要的复杂情况 如果是Erlang语言本身很复杂complicated,而不是complex,怎么办?