Rust 与 C++
Rust 是更好的 C++?通常人们都会优先选择 C 或者 C++ 编写程序以保证高性能,但 C 和 C++ 都非常容易出现并发问题,而 Rust 的出现至少可以大幅缓解类似问题的发生。 性能上,Rust 非常快速且节省内存,没有运行时或垃圾收集器,它可以为性能关键型服务提供动力、在嵌入式设备上运行,并且可以轻松地与其它语言集成; 可靠性上,Rust 的丰富类型系统和所有权模型保证了内存安全性和线程安全性,能够在编译时消除许多类错误; 开发效率上,Rust 拥有出色的文档、友好的编译器、有效的错误提示以及一流的工具 - 集成的包管理器和构建工具,具有自动完成和类型检查的智能多编辑器支持,自动格式化程序等。
Rust 与 Go
2016 年,我们开始讨论对编程语言的选择。当时候选的语言有 Java,C++,Go,Rust,Haskell,Erlang 等。前面两种太普通,没特点;后面两种又太小众。最后在 Go 和 Rust 之间选择了 Rust,主要考虑还是安全,性能和有逼格。(对于招聘来说天然是一道筛选,对于宣传是一个亮点) Go 是一种有 GC 的语言,我们希望追求的是最极致的一个性质。这个 GC 和最极致的性能是有冲突的。我们希望的是不仅仅在架构上,我们可以去实现高性能。我们在这个架构的每个具体实现的细节里面,我们也去追求最高的性能,我们想做的是一个最极致的东西,就是世界第一。我们做 CITA 的时候,目标就是世界第一。
Rust 与Haskell
个人非常喜欢 haskell,haskell 是一种非常数学非常纯粹的一种语言,它是 funtional,然后追求 pure funtional program。haskell 的这个哲学就是说 avoid success at all costs,它是一个很学术派的语言,我不想成功,我就是要美,我就是要漂亮,这就是我的哲学,所以说 haskell 就是它的美是让你震撼的那种,就说哇你太美了。但是你要我用到工程里面,我会觉得好像有点过了,对吧? 因为这不是你追求的东西,但是 rust 出现就让你觉得这个东西就是我想要。就是我把 haskell 还有 ocaml,就是说是近 10 年 20 年这个类型系统这方面的进展,研究成果都吸收过来,然后我又去追求 C++ 的这种性能,我又去结合一些 funtional 的东西,这个我觉得,哇,完全就是你怎么知道我是怎么想的,就这种感觉,我想的就是这个东西,你把我想的东西全都做进去了,这东西太牛逼了。当你看到就是说你在 Rust 里面是可以写非常高阶的一些语法,然后你看到它看起来像 Ruby。通过编译器的一些技巧,把它编译成一种非常高性能的汇编代码的时候,你会觉得这个东西太 nb 了。所以我觉得这是为什么 Ruby 社区有很多人转向 Rust,包括我们认识的 Yehuda,超级大神,直接去搞 Rust。
从区块链的角度上看 Rust 语言
区块链的技术迭代需要一门优秀的编程语言来进行快速的原型开发,因为区块链开发都会涉及密码学,最基本的如哈希算法、签名算法,使用大量前沿密码学的成果,如零知识证明、环签名;在电脑上把一个区块链软件跑起来,这就叫做运行一个节点。全球有非常多这样的节点,这些节点在复杂网络环境下连接成大规模对等网络,就形成了所谓的区块链网络。节点之间通过公网连接,现实中的公网环境很复杂,有各种路由、专用网咯、防火墙等,一个节点可能需要端口映射,或者使用 VPN,或者使用网络穿透技术,才可能会连上其它节点。这就需要 P2P 网络和 7*24 小时网络服务的高可靠性和高性能。
Rust 能很好的适配区块链的以上特点,同时也具备以下优势:
- 性能好,与 C++不相上下
- 安全,编译期杜绝内存和并发问题,使得软件具有高可靠性
- 表达能力强,可以进行快速原型开发,提高效率
- 与 C 无缝交互,解决密码学库缺失问题(因为很多密码学的库是用 C 写的)
- 生态开放,编译器和绝大多数库采用 MIT/Apache,开发活跃,进展快