scry以太坊
Ⅰ 我们为什么用Rust
Rust 是一门系统级编程语言,被设计为保证内存和线程安全,防止段错误产生。作为系统级编程语言,它的基本理念是 “零开销抽象”。理论上来说,它的速度与 C/C++ 同级。Rust 可以被归为通用的、多范式、编译型的编程语言,类似 C/C++。与这两门编程语言不同的是,Rust 是线程安全的!Rust 编程语言的目标是,创建一个安全和并发的软件系统。它强调安全性、并发和内存控制。尽管 Rust 借用了 C/C++ 的语法,却杜绝了空指针和悬挂指针,而这二者是 C/C++ 中系统崩溃、内存泄露和不安全代码的根源。
虽然 Rust 是一门系统级编程语言,但并不意味着它只能写底层程序(操作系统、驱动、工具、数据库、搜索引擎等),它的抽象层次之高完全给人惊艳的感觉,实践证明它对问题建模的能力和方便性不比 C++/Java/Python/Ruby 差。但 Haskell 这类超高抽象语言,也不是 Rust 的发展方向。Rust 力求在抽象与现实世界中找到一个平衡。
在向SCRY 项目研发负责人Peace交流时,他说到,当时选择Rust,主要有两个原因:一是有高性能要求时,原来好多人会选择C/C++,现在多了一个Rust选择,还解决了C/C++许多不足;二是Rust应用在区块链有成熟的参考。最后Peace给了未来使用SCRY项目开源部分的学习者一些建议,“快速的学习能力,快乐地把小事做好,正确合理定义一个函数。”
Rust到底有多受欢迎呢?目前,Rust 已经在 StackOverflow 的年度语言评选中,连续 4 年荣获“程序员最喜爱语言”第一名(2016, 2017, 2018, 2019)。以下是 2019 年调查的截图:
但比起Python、C、C++ 等,Rust还只是个小年轻。调查显示,更多的人不去学习 Rust 还是因为 Rust 没有足够的活跃商业项目让它成为企业的一部分。
不过,Rust 在工作中的占比也越来越高。过去一年间,Rust 在商业应用上有着令人惊讶的成长。下面是部分人们熟知的公司:
国内的网络,阿里,也已经在内部小范围的使用上了Rust。
就在本月初,微软还推出了基于 Rust 的 Windows 运行时项目 Rust/WinRT。该项目和 C++/WinRT 一脉相承,用标准语言和编译器为 Windows 运行时构建语言投影,从而方便 Rust 开发人员调用 Windows API,更轻松地使用 Rust 构建各类 Windows 应用和组件。
(https://blogs.windows.com/windowsdeveloper/2020/04/30/rust-winrt-public-preview/)
2015年下半年,Gavin Wood 博士创立了 Parity Technologies,推出以太坊(Ethereum)客户端 parity,而这个 parity 客户端就是使用Rust写的。实际在 parity 出现之前,MaidSafe项目就已经出现了。MaidSafe用 Rust 语言尝试了很多东西。Rust语言本身强调的安全性以及MaidSafe这些前沿项目,可能给了 Gavin 充分的理由选择 Rust 作为 parity 开发语言。
写一个有效率的、符合习惯的Rust程序比写一个有潜在危险的程序容易得多。下面是Linux内核在2018年一月到四月期间发现的bug:
而对于Rust而言,上图右侧占比 51% 的部分,从语言层面就可以避免。也就是说,对Rust来说,根本不存在上图右边这些问题。
Rust在实现内存安全和并发安全的同时,并没有以损失性能为代价。更牛逼的是,它甚至是用同一套抽象解决了内存安全和数据竞争这两个不同领域的问题。
Rust的零开销抽象让你在享受安全性的同时,又不损失性能。这正是传统的程序员梦寐以求的。
Solana的首席执行官Anatoly Yakovenko在一段采访中提到刚开始项目的时候,他用了两周时间使用C语言,但是当用到一些外部库的时候,还得写makefile,手动下载这些库,比较麻烦。所以,他决定尝试一下Rust。就在那一刻,“Holy shit, this is amazing.”“我才觉醒到,这是一个和C语言一样快的语言,并且还给了我Haskell般的类型安全。Rust击中了我,这真的很酷。”
今天Rust满5岁了(2020年5月15日,是Rust语言正式发布5年生日)。Rust语言正在IT工业各个领域快速发展,而由于区块链本身的特质,区块链领域是较早接纳Rust的领域之一。在区块链领域,Rust正以势如破竹之势占领区块链新兴项目市场,很多著名的老项目也在考虑转向使用Rust重写。
祝Rust 5周年生日快乐!
参考:
1. Why Rust?
https://www.parity.io/why-rust/
2. Meetup with Solana, Zcash, & Parity — Why Rust Is Ideal For Blockchain Development?
https://medium.com/solana-labs/solana-at-portland-dev-meetup-72e4dc7ad32c
3. Rust 2017 Survey Results
https://blog.rust-lang.org/2017/09/05/Rust-2017-Survey-Results.html
4. 微软开源 Rust/WinRT,方便使用 Rust 构建 Windows 应用
https://www.oschina.net/news/115354/microsoft-winrt
5. Stack Overflow’s Developer Survey Results 2019
https://insights.stackoverflow.com/survey/2019#developer-profile-_-what-inpial-person-will-have-the-most-influence-in-tech-this-year
6. 当区块链遇上Rust
https://rustcc.cn/article?id=289da7be-19ce-49fe-af6d-3a7946404ca6