vlambda博客
学习文章列表

8月26日-采访AE开发人员|Erlang语言优势全解

来源|forbes.com
作者|Joresa Blount
翻译|头等仓Saline
编译|头等仓Jaden


Tobia Lindhal是AE开发人员之一,本篇文章集合了他对Erlang语言的理解。



Tobia Lindhal曾断言:Erlang语言是构建区块链的完美编程语言和学科基础。

实际上,每个区块链都混合了不同的底层机制,采取什么机制就要取决于程序员认为哪种才是正确的解决方案。解决方案没有对错之分,只有好和更好之分。即使是区块链的分叉,在某些方面也会有所不同,因为开发人员总是追求分布式系统中最佳的扩展性、速度及其他性能。

区块链的核心就是工程师所选择的编程语言。比特币是用C ++编写的;以太坊是用Go、C ++和Rust编写的。若要在以太坊上构建智能合约,就需要用到Solidity编程语言。大多数人应该都听说过这些语言,即使是区块链业余爱好者也会在阅读文章时见过这些语言。

然而,目前有一种语言引起了热议——Erlang。这个名字虽然不是家喻户晓,但它在33年前就已经被创造出来了。事实上,Erlang语言也是我们构建目前互联网的常用语言之一。尽管Erlang不如其他主流编程语言知名,但Tobias Lindahl认为,Erlang是一种完美编程语言,也是构建区块链的学科基础。

Lindahl专注研究Erlang语言20年,他拥有工程物理学硕士学位,还花很多年时间来研究虚拟机(VM)。他目前是æternity开发团队的一份子,另一位编程传奇人物Robert Verding(Erlang语言的创造者之一)也是AE团队中的一员。

重新设计一条更好的区块链

据Lindahl所言,由于Erlang和区块链存在许多相似之处,因此在构思区块链时,才会将其用于区块链核心协议。

Lindahl解释说:“由于区块链十分依赖通信,因此用Erlang编写区块链恰到好处。该语言是为在通信中构建分布式系统而构建的。因此,通过Erlang来实现节点之间的通信十分简单。”

他还补充道,除了开发可扩展的全球节点网络外,程序员采用Erlang编程时的思考方式让他们在解决区块链问题时具有显著优势。

他说:“Erlang语言的不变性与区块链的不变性类似。数据一旦写入了区块链,就永远不会被篡改。这与Erlang问题的思考方式非常相似。”

为什么Erlang是构建区块链的最佳选择?

区块链领域中的竞争非常激烈,哪种解决方案更为优秀,人们总是各执己见。为了支持自己的观点,Lindahl向大家解释了为什么他认为Erlang是构建区块链的最佳编程语言。

“使用Erlang编程语言,数据就具有不变性,因此更新后数据也不会被篡改。编程逻辑更加顺畅,甚至还可以证明与程序有关的内容。同时,测试程序也变得更加轻松。”他还说道,Erlang不仅能够快速分配大量的交易数据,还允许多个进程同时运行,而且不会相互冲突。

“使用Erlang语言可以非常容易分离所有进程。当某个进程正在处理内容时,它不需要担心其他进程突然闯入,改变其数据状态。对我来说,这是最主要的优势。并且它还拥有并发性。也就是说,你可以同时运行数千个进程,而且这些进程不会相互影响,除非你明确要求它们互相通信。”

因此,Lindahl和æternity开发团队能够无缝部署重要功能,并且区块链也能够完美处理区块容量。æternity协议的首次协议升级(硬分叉)验证了Tobias的说法,因为此次升级顺利执行,没有丝毫偏离。

Lindahl说:“我们使用Noise协议在节点之间进行通信。一个节点可以和另一个节点独立连接,并且不影响其他节点。这是Erlang的另一个内置功能,无需处理信号量或程序关键部分,就可轻松管理独立连接。”

“使用Erlang可以更轻松部署与Noise类似的协议。可以轻松处理节点之间的连接,因为连接都是独立的。你可以只用一个Erlang进程来处理一个节点与另一个节点的连接,然后同时进行多个进程,且没有其他进程干扰。所以不必担心其他连接是否会出现问题。”

他还说道,Erlang实现了一个非常有弹性的系统,可根据需要进行扩展。

“若一个连接中断,则会告知另一个名为“监督员”的进程,重新建立一个连接。”Lindahl解释道。“Erlang有很多内置组件,用于处理错误修复和容错。因此,可以同时运行多个Erlang进程。你可以进行无限扩展,或者更准确地说,你可以按需扩展。因此你无需担心扩展性问题,而扩展性是目前区块链行业面临的最棘手问题之一。”

为什么其他项目不使用Erlang来构建区块链?

Lindahl的观点非常具有说服力,那么这就引出了一些问题:为什么区块链技术不一开始就用Erlang构建呢?为什么那么多知名区块链平台不将Erlang纳入其解决方案中呢?

Lindahl解释道:“因为Erlang社区比较小。使用Erlang的人并不多。”

“我认为并不需要解释为什么他们一开始不使用Erlang。显然,Erlang并不是适合所有项目。也许PoW才是问题所在。比如你就不会用Erlang来实现PoW,那完全是吃力不讨好。与其它与PoW相匹的解决方案或其它类似解决方案相比,使用Erlang将会使效率非常低下。”

区块链:高级编程还是低级编程?

最后,Lindahl表示,高级编程与低级编程之间的区别决定了区块链的复杂程度,这还将影响平台的可扩展性。在区块链行业中,它相当于一个游戏规则改变者:它可表明一个平台是否在全球范围内优于其他平台。

“我认为,Erlang的高级性会使你思考问题的方式变得抽象。而你思考的方式变得抽象,这也是因为你思考的内容是高水平的。”Lindahl还补充道。在低级编程中,程序员为每个操作提供指令。在高级编程中,程序员只需给出一个目标(objective),计算机就会执行实现该目标所需的所有单独操作。

若有兴趣了解更多详细信息,可查阅æternity的Documentation Hub,或æternity的Github代码库。除此之外,社区支持团队Dacade还为æternity开发团队创建了一个教程(学习结束可获得价值100美元的AE代币)。若想真正参与进来,可参加æternity即将举办的æternity Universe会议,开发者和企业家可直接在会上向æternity的开发者和创始人提问。


原文链接:

https://www.forbes.com/sites/joresablount/2019/08/19/rethinking-blockchain-should-it-have-been-written-in-erlang-from-the-start/#1607c15d4340

知乎专栏:Aeternity

知识星球:Aeternity