Why Rust?

640?wx_fmt=gif


在开源社区中,不得不提到的就是 Rust 语言社区,在 StackOverflow 的年度调查中 Rust 连续四年成为最受开发者喜爱的语言。Nervos CKB 选用了 Rust 做为自己的编程语言,去年年底,我们组织了两场「Rust Dev Sharing」,对于今年的 RustCon Asia(https://rustcon.asia/)Nervos 也充满了期待。为什么 Nervos 会对 Rust 如此情有独钟呢?也许这篇文章会给你答案。


起源


一种新语言新技术的兴起都是为了解决一些问题而产生,Rust 也不例外。

Rust 是由一位名叫 Graydon Hoare 的职业编程语言工程师在 2006 年设计的,通常来说职业编程语言工程师都是在给其它的语言开发编译器和工具集,并不参与任何语言的设计工作。而 Graydon Hoare 却萌生出了开发一种属于自己语言的想法,并且利用业余时间完成了 Rust 的开发(niúpí 的人就是这么高效)。后来这个项目受到了 Mozilla 的大力支持,还专门成立了一个团队继续开发。

发展至今,Rust 虽然由 Mozilla 资助,但它其实是一个开源项目,有很大部分的代码是来自于社区的贡献者。

2015 年 5 月,Rust 发布了 1.0 版本,Mozilla 曾这样描述 Rust


Rust 是一个新的编程语言,注重性能、并行、内存安全。设计者们从头开始创建一门语言,融合现代编程语言的优秀设计,避免传统编程语言的历史包袱。


Rust 融合了高层语言富有表达力的语法和灵活性,以及底层语言超强的控制性和性能。


维基百科中对 Rust(编程语言)的描述


Rust 是一种多范式系统编程语言,侧重于安全性,尤其是安全并发性。语法上类似于 C++,但被设计为提供更好的存储安全性,同时保持高的性能。


2018 年 12 月,Rust 发布了 Edition 2018 版本,目前最新版本更新至 1.34.0,最新标语:Empowering everyone to build reliable and efficient software.

从 2013 年 6 月开始,「This Week in Rust 」保持每周更新,已有 280 多期。Rust 的功能更新、RFC 通过、社区动态、近期活动等都可以在周报中看到。想要了解 Rust 的重要动态,在这里一目了然。


Rust 的特性


Rust 是更好的 C++?通常人们都会优先选择 C 或者 C++ 编写程序以保证高性能,但 C 和 C++ 都非常容易出现并发问题,而 Rust 的出现至少可以大幅缓解类似问题的发生。

性能上,Rust 非常快速且节省内存,没有运行时或垃圾收集器,它可以为性能关键型服务提供动力、在嵌入式设备上运行,并且可以轻松地与其它语言集成;

可靠性上,Rust 的丰富类型系统和所有权模型保证了内存安全性和线程安全性,能够在编译时消除许多类错误;

开发效率上,Rust 拥有出色的文档、友好的编译器、有效的错误提示以及一流的工具 - 集成的包管理器和构建工具,具有自动完成和类型检查的智能多编辑器支持,自动格式化程序等。

从长远来看,在对内存安全性和性能有严苛要求的场景如 IoT、区块链开发等,Rust 将会有广阔空间。


为什么 Rust 适合区块链开发


Rust 作为一门年轻的语言,开发生态十分活跃,因其优越的特性,目前已有国内外大大小小的项目使用 Rust ,例如 Dropbox 的后端分布式存储系统,Firefox 的新的内核 Servo,操作系统 Redox,PingCAP 的分布式数据库 TiDB 的存储层 TiKV。在区块链开发中,我们也看到了 Nervos/CITA、Parity/Substrate、Grin、Holochain 和 ChainX 都在使用 Rust,Zcash 也在考虑使用 Rust。为什么Rust适合区块链开发?

志伟老师的回答是区块链的技术迭代需要一门优秀的编程语言来进行快速的原型开发,因为区块链开发都会涉及密码学,最基本的如哈希算法、签名算法,使用大量前沿密码学的成果,如零知识证明、环签名;在电脑上把一个区块链软件跑起来,这就叫做运行一个节点。全球有非常多这样的节点,这些节点在复杂网络环境下连接成大规模对等网络,就形成了所谓的区块链网络。节点之间通过公网连接,现实中的公网环境很复杂,有各种路由、专用网咯、防火墙等,一个节点可能需要端口映射,或者使用 VPN,或者使用网络穿透技术,才可能会连上其它节点。这就需要 P2P 网络和 7*24 小时网络服务的高可靠性和高性能

Rust 能很好的适配区块链的以上特点,同时也具备以下优势:


  • 性能好,与 C++不相上下

  • 安全,编译期杜绝内存和并发问题,使得软件具有高可靠性

  • 表达能力强,可以进行快速原型开发,提高效率

  • 与 C 无缝交互,解决密码学库缺失问题(因为很多密码学的库是用 C 写的)

  • 生态开放,编译器和绝大多数库采用 MIT/Apache,开发活跃,进展快


Rust 在 Nervos 的应用


之前 Aimee 在 Nervos Talk 论坛里发布的一篇关于《Why Rust》中提到:

Nervos 是一个分层的加密经济网络,CKB 是其基础层,全称为 Common Knowledge Base。CKB 团队成员一直在关注并尝试新技术,做开源社区。

编程语言选择始于 2016 年秋季。我们渴望找到一种最喜欢的语言来满足日常编程以及长期的区块链开发。

当时的备选语言有 Haskell,Erlang,Java,C++,Go 和 Rust,尽管我们很喜欢 Haskell,因为它的纯函数式编程,但是 Haskell 和 Erlang 可能很难招聘到合适的人。我们非常了解 Java,C++ 和 Go,对比更喜欢 C++ 的性能和 Go 的效率。

Rust 是一种现代编程语言,在语言和编译器设计方面吸收了数十年的卓越成就。我们的理念是追求完美。它不仅体现了体系结构,还体现了实现细节,而 GC(Garbage Ccollector)和高性能之间存在冲突,我们倾向于选择 Rust 而不使用 GC。

当时,我们还做了一个 Go 和 Rust 的比较测试,用 Rust 和 Go 版本编写一个程序。Rust 版程序在 24 小时后仍在运行。安全性和性能对我们来说是最重要的一点,Rust 的突出表现也在于此。而且,Rust 很酷!特别是它在工程方面表现出了很大的优势,也证明了我们做出的正确选择。

关于 Rust 还有一个故事在较早的时候产生了很大的影响。当时以太坊遭到 DDoS(Distributed Denial-of-Service)攻击,影响了之前用 Go 和 Rust 编写的所有客户端。而使用 Rust 的用户是可以继续工作的,这就导致所有矿工都切换到了 Rust 客户端。所以现在大多数矿工和矿池都在使用 Rust。

除了 Rust 语言本身之外,Rust 社区正在以一种我们很钦佩的宽容的方式公开发展。我们可以知道 Rust 的每一步改进都会经过协商,达成共识,然后通过 RFC(Request for Comments)实现。基于 RFC 的机制赋予 Rust 语言本身极大的开放性。

我们相信,开源文化将为我们的团队带来好运,并为 CKB 的成功提供更好的方法。更重要的是,对于每个 Rust 开发者来说,阅读关于 RFC 的高质量讨论本身就是一种非常愉悦和有益的经验,所以我们借用了 RFC 机制 Nervos CKB。

请参见:

https://github.com/nervosnetwork/rfcs。



RustCon Asia 即将开启,国内外的 Rust 大神及 Rust 开发者将首次在亚洲齐聚一堂,这是感受 Rust 社区文化的绝佳机会。4 月 20 - 23 日 · 北京,一场技术、人文、社区的一场盛宴,我们不见不散!


文:Sherry

编辑:Kelly





关于 Nervos


Nervos Network 由 Nervos 基金会推动,通过分层设计,兼顾性能、安全以及去中心化的特性,满足多样化的商业场景需求,为未来加密经济提供基础设施。


关于 CKB


Nervos Common Knowledge Base(CKB)是一个无需许可链,它是 Nervos Network 的基础层,并在设计上提出了一些理念:


  • CKB 共识协议 NC-MAX 使用两阶段提交节约带宽,并根据网络情况调整自身参数,提升了 Nakamoto Consensus 的可扩展性

  • CKB 虚拟机采用底层 CPU 指令集架构 RISC-V 开发,提供更高的开发弹性与运行的稳定性

  • CKB Cell Model 是比特币 UTXO 模型的通用化,能够验证和存储任何类型的数据

  • CKB 经济模型用货币政策限制状态存储的增长,并实现智能合约平台的价值存储功能



640?wx_fmt=jpeg


欢迎点击「阅读原文」,获取更多资讯~

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值