巴西都发明两门流行的编程语言了!

1993年,巴西里约热内卢天主教大学的三个老师发明了Lua。

巴西都发明两门流行的编程语言了!_第1张图片

Lua以其简单性、小尺寸和可移植性,成为嵌入式编程语言之王

除了游戏这个主战场之外,Luah还入侵了各种软件(TeX排版,Neovim,Nginx......),各种硬件(三星的电视、思科的路由器、TI的计算器,罗技的键盘......)

Lua的故事可以移步我这篇文章《巴西的编程语言都占领全世界了,中国怎么就不行呢?》

20年后,巴西人José Valim又发明了一个编程语言Elixir

巴西都发明两门流行的编程语言了!_第2张图片

这个编程语言知道的人不太多,但是很多著名公司都在使用它。

巴西都发明两门流行的编程语言了!_第3张图片

Elixir特别适合开发分布式、可扩展的、高并发的应用程序

Discord的CTO在2017年的一篇文章中说道:

Discord 就是 Elixir 的早期采用者, Erlang VM 是我们想要构建的高并发实时系统的完美候选者,过去两年,系统中的并发用户数已达到近 500 万,每秒有数百万个事件...... 

如果让我从头再选择一次的话,我还会选择Elixir。

在Stackoverflow 2021年的报告中,在38种编程语言中,Elixir是收入排行第三的编程语言

1

Elixir的作者是José Valim(下文简称何塞),本科在巴西圣保罗大学读电气工程,后来在意大利都灵理工大学拿到硕士学位。

巴西都发明两门流行的编程语言了!_第4张图片

在意大利时他遇到了现在的波兰妻子,然后搬到了波兰。

在发明Elixir之前,何塞已经是著名Web框架Ruby on Rails团队的核心成员。

巴西都发明两门流行的编程语言了!_第5张图片

可惜的是Ruby语言在并发,多核的表现不咋滴,没有解决并发问题的适当工具。

这让何塞有点沮丧,他不断研究其他解决方案,直到有一天,它发现了Erlang虚拟机。

Erlang虚拟机已经解决了高并发和分布式的问题,为什么不把Ruby移植上去呢?

但是Ruby的思想和概念和Erlang格格不入,没法子的何塞最终决定:发明一门新的编程语言Elixir。

在设计上,何塞借鉴了Erlang,Clojure和Ruby的思想。

Erlang :函数式思想、基础设施

Ruby:优雅的语法、标准库、命名方式

Clojure :基于协议的多态实现

大家可能觉得一个大牛发明一门新语言是很容易的,其实并非如此。

何塞并不是科班出身,也缺乏编译器的知识,也得从头学词法分析,语法分析......

他看了几本经典编译书籍如龙书,更关键的是阅读了Erlang、Ruby、JavaScript等语言的解析器源代码,然后才开始动手。

即使如此,何塞依然步履维艰,他的第一个Elixir原型非常糟糕,就像迷失在了山洞中的原始人,到处探索。

等到第一个版本发布,已经是两年以后了。

一门新语言出现以后,如果获得众人关注是最难的一步。

在这一点上,何塞充分学习了Rails创始人DHH的营销能力

何塞开始走出去,在各种活动上宣传Elixir,接受各种采访介绍Elixir,写各种文章为Elixir造势。

提到Elixir,就不能不提Web框架Phoenix。

他们像当年的Rails一样,录制了一个视频:在15分钟内克隆一个Twitter

巴西都发明两门流行的编程语言了!_第6张图片

这个视频引发了不小的关注度,成功地引发了对Elixir和Phoenix的讨论,吸引了更多人来使用Elixir。

2

说到这里,可能大家会问:这个Elixir到底有什么神奇之处呢?

一般来说,我们要开发一个交互很强的Web应用,通常会这么来构建:

巴西都发明两门流行的编程语言了!_第7张图片

在前端有各种框架和类库,如React,Vue等,在浏览器端处理:

1.数据模型,2.控制逻辑,3.视图模板 

后端主要提供数据接口,前端的JavaScript负责展示和逻辑。

让人吃惊的是:使用Phoenix的LiveView,这三个东西都被放到了服务器端,实现了服务器端的渲染。

巴西都发明两门流行的编程语言了!_第8张图片

猛一看,这很难理解,举个简单的例子,我们现在需要实现一个计数器应用:

巴西都发明两门流行的编程语言了!_第9张图片

在服务器端:

数据模型:就是那个Count数字。

客户逻辑:就是一些函数,来处理事件,事件是“增加按钮被点击”(increment event)或者“减少按钮被点击” (decrement event)

视图模板:用来渲染这个简单的界面

当用户点击“增加”按钮时,一个事件(increment event)通过websocket发给服务器端。

巴西都发明两门流行的编程语言了!_第10张图片

服务器端收到后,调用服务器端的相关函数,修改数据模型,给count加一,然后渲染新视图,再发给浏览器。

浏览器收到新数据,就会展示出来:

巴西都发明两门流行的编程语言了!_第11张图片

当然,服务器肯定不会把所有的视图都发回给浏览器,它会做优化,使用状态跟踪,diff算法,从而发送最少的数据

在这个例子中,只需要告诉浏览器,那个count的值变了,仅仅更新这个值就可以了。

你可能觉得这种处理方式非常疯狂:对每个用户都保存这么多信息,用户多了该怎么办啊?怎么扩展啊?

巴西都发明两门流行的编程语言了!_第12张图片

这就要涉及到Elixir的关键了,和其他编程语言不同,Elixir的process(如图中的Live View Process)并不是操作系统的进程(Process)或者线程(Thread)!

Elixir的process是非常轻量级的,在单台服务器上可以几十万,甚至上百万个process

这也正是Erlang平台的优势所在!

使用Phoenix的LiveView,在代码复杂度不高的情况下,就实现了媲美单页应用良好的用户体验,可以说是非常漂亮。

巴西都发明两门流行的编程语言了!_第13张图片

所以发明人何塞说:Elixir非常适合开发一切运行在socket上应用!

3

上世纪90年代,你写一段代码,放在那里什么也不做,两年以后,新的硬件就会让它的性能提升一倍。

现在摩尔定律失效了,CPU走向了多核,系统走向了分布式。

多核和分布式让编程变得非常麻烦,但是Elixir用函数式编程的不变性和Erlang平台正好解决了这两个问题。

如果你也有类似的需求,强烈建议关注下这门独特的编程语言,它也许就是帮助你击败竞争对手的秘密武器。

全文完,觉得不错的话点个赞或者在看吧!

参考资料:

https://www.youtube.com/watch?v=U_Pe8Ru06fM(本文中LiveView例子的来源)
https://www.youtube.com/watch?v=lxYFOM3UJzo

https://www.youtube.com/watch?v=IZvpKhA6t8A

近期精彩:

巴西的编程语言都占领全世界了,中国怎么就不行呢?

继Linus之后,又一个动辄就“F**k You”的技术天才和营销大师出现了!

世界最强计算机,极少人见过,让程序员高薪工作一辈子!

这个波斯人的名字,成了无数程序员的梦魇!

四次刮骨疗毒,苹果是无可争议的卷王!

你可能感兴趣的:(巴西都发明两门流行的编程语言了!)