2020-02-06

了解 ETH2.0 客户端 (Nimbus) 使用的 Nim 语言

这是一只神秘的独角兽

Status 团队开发了Nimbus(ETH2.0客户端之一),这次他们使用Nim语言。

忘记在哪看到过一句话,大意是“牛叉团队会选择新语言开发新项目。”就像美女衣橱里总是少一件衣服,程序员的工具箱总是少一种语言。

Status团队热衷表达能力更强的编程语言,这点从status-im使用ClojureScript就可以看出。在Status当前版本分为两块,status-im使用了React-native(cljs),statusgo(以太坊节点部分)使用Go-mobile。可以想象这两种语言整合起来绝非易事,这也让Status团队吃到一些苦头了(开发进度),这就促使他们使用Nim。

“Nim是一种静态类型的元编程语言。它结合了来自成熟语言(如Python,Ada和Modula)的成功概念。”

nim-lang对我来讲并不陌生,很久之前用过haxe-lang和它思想接近。对于前端同学来说它很像coffeescript,只不过它有更强大的编译器和后端支持系统,它可编译到JavaScript和C/C++。

一个语言适用更多场景,需要浏览器运行时,编译为js。需要本地运行时编译为C/C++,拥有最佳的性能。如果只是重头开发一个新语言,会缺乏代码库支持,Nim选择了聪明的做法,编译成代码库最全,且速度最快的C/C++。这样既可以随心所欲设计语言,又能站着巨人肩膀上,立刻拥有目标平台的生态支持。

Stauts 还捐助了Nim语言开发团队,可见是对Nim寄予厚望。从官网了解到Nim同时支持JavaScript和C/C++ ,这就不难理解Status团队的意图了。他们想用Nim一个语言来替换掉之前的statusim和statusgo,App前端部分(React-native或者未来替换成UI-native)和 客户端部分 Nimbus 以太坊2.0 (C/C++)。Nimbus中的一些代码可以编译成Javascript,提供给App使用,统一的编程语言能提高团队开发效率。

由此可见,Nim语言是非常迎合区块链的团队文化,小团队,精兵强将。Nim拥有强大语法支持,元编程能力,跨平台支持,这帮助团队提高了Nimbus开发效率。由于Nimbus可编译为C/C++, 它可以高效的运行在手机上,这也为嵌入式系统节点提供了基础。


相关链接:

https://nim-lang.org

https://github.com/status-im

以太坊

你可能感兴趣的:(2020-02-06)