You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

87 lines
7.2 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 进入Rust编程世界
## 一、Rust发展历程
Rust 最早是 Mozilla 雇员 Graydon Hoare 的个人项目,从 2009 年开始,得到了 Mozilla 研究院的支助2010 年项目对外公布。2010 2011 年间实现自举。从此以后Rust在设计变化->崩溃的边缘反复横跳(历程极其艰辛),终于在 2015 年 5 月 15日发布1.0 版。在此研发过程中Rust 建立了一个强大且活跃社区形成了一整套完善稳定的项目贡献机制Rust能够飞速发展与这一点密不可分。Rust 现在由 [Rust项目开发者社区](https://github.com/rust-lang/rust)维护。
大家可能疑惑Rust为啥用了这么久才到1.0版本与之相比Go语言2009年发布却在2012年仅用3年就发布了1.0版本。首先是因为Rust语言特性较为复杂因此需要全盘考虑的问题非常多其次Rust当时的参与者太多七嘴八舌的声音很多导致了众口难调而Rust开发团队又非常重视社区的意见 最后一旦1.0快速发布那么后续大部分语言特性就无法再修改对于有完美强迫症的Rust开发者团队来说某种程度上的不完美是不可接受的。因此Rust语言用了足足6年时间才发布了尽善尽美的1.0版本。
## 二、使用现状
一般来说某编程语言能在哪一年成为全世界最受欢迎的语言那粉丝们锣鼓喧天、昂首挺胸都是少不了的可以理解因为能从全世界这么多编程语言中脱颖而出成为最受欢迎的语言属实困难。可是有一门语言它从发布1.0版本开始,**连续6年成为了全世界最受欢迎的语言**是的它就是Rust这不2021年又成为最受欢迎的语言了。
你可能会想既然这么受欢迎那肯定使用很广吧可惜现实给了我们重重一击在国外Rust尚且还行在各大公司的基础服务和底层设施都屡见身影在github上开源界也算是呼风唤雨可是到了国内说句不好听的能听说过Rust大名的已经算百里挑一的优秀了就业环境更是糟糕。
因此我们写了这本书,**一本承载了让Rust不再难学的梦想之书期望通过一本书再配合一些教学资源让国内的用户能迅速上手真实项目大幅提升Rust的开发效率**。
#### 部分主要使用者
- AWS从2017年开始就用Rust实现了无服务器计算平台 AWS Lambda 和 AWS Fargate, 并且用Rust重写了Bottlerocket OS和AWS Nitro系统这两个是弹性计算云(EC2)的重要服务
- Cloudflare是Rust的重度用户DNS、无服务计算、网络包监控等基础设施都都与Rust密不可分
- Dropbox的底层存储服务完全由Rust重写达到了数万PB的规模
- Google除了在安卓系统的部分模块中使用Rust外还在它最新的操作系统fuchsia中重度使用Rust
- Facebook使用Rust来增强自己的网页端、移动端和API服务的性能同时还写了Hack编程语言的虚拟机
- Microsoft使用Rust为Azure平台提供一些组件其中包括IoT的核心服务
- Github和npmjs.com使用Rust提供高达每天13亿次的npm包下载
- Rust目前已经成为全世界区块链平台的首选开发语言
- Tidb国内最有名的开源分布式数据库
- 国内高频交易服务
类似的还有很多总之Rust的发展态势非常喜人生态发展也异常迅速颇有燎原之火之势。
#### Github
Github上的Rust项目可以在这里查看: https://github.com/topics/rust?l=rust里面的项目是按照star数降序排列。
## 三、适用人群
Rust 因多种原因适用于很多开发者, 这里让我们讨论几个最重要的群体。
### 开发者团队
由于Rust语言拥有异常强大的编译器和语言特性因此Rust的代码天然就会比其它语言有更少的Bug同时Rust拥有非常完善的工具链、最好的包管理工具这些叠加在一起决定了Rust非常适合大型开发者团队的协作开发。
也许Rust在开发速度上不是最快的但是从开发 + 维护的角度来看这个成本绝对是各个语言中最小的之一当然如果你的公司就追求做出来能用就行那Rust确实有些灰姑娘的感觉。
### 学生
Rust的语言特点决定了它跟底层系统很亲和通过Rust你能学到操作系统、网络等计算机原理现在不少名校都引入了Rust作为计算机系统课程学习的重要组成部分例如MIT对Rust的使用就非常广泛。
同时Rust具有一个友善、活跃的社区社区中的人非常热衷于为大家解答问题因此也很适合学生学习一门新的语言。
### 公司
数以百计的公司无论规模大小都在生产中使用Rust来完成各种任务。这些任务包括命令行工具、web 服务、DevOps 工具、嵌入式设备、音视频分析与转码、加密货币cryptocurrencies、生物信息学bioinformatics、搜索引擎、物联网internet of things, IOT程序、机器学习、云计算等甚至还包括 Firefox 浏览器的大部分内容。
### 开源开发者
Rust连续6年成为全世界最受欢迎的语言这就是来自于开源社区的厚爱在github上Rust各种类型的开源项目都非常火同时有很多领域还等着大家去填补空白这些都意味着在开源世界扬名立万的机会。
为一门成熟的语言锦上添花远不如为一门新语言雪中送炭你能获得比在其他语言更多的star和名气。
### 重视速度和稳定性的开发者
速度分为两种:运行速度和开发速度。
运行速度方面Rust拥有和C、C++几乎相当的性能甚至由于Rust的各种零开销抽象以及安全的编程方式你能轻松写出和那些优化过后的C++代码一样甚至更高的性能: [ripgrep](https://github.com/BurntSushi/ripgrep)就是很典型的例子。
同时在你熟悉Rust后由于强大的编译器、标准库文档、语言高级特性等Rust能让你拥有不弱于其它静态语言的开发速度同时大幅减少后期维护成本。
最后Rust语言不仅仅适用于这些人群他们从Rust中最受益的人群。总的来说Rust的目标是消除数十年来程序员不得不做的权衡安全 **与** 生产力,速度 **与** 工程性。
请跟随本书的脚步去尝试下Rust看看这个选择是否适合你。
## 四、Rust语言版本更新
与其它语言相比Rust的更新迭代较为频繁(得益于精心设计过的发布流程以及Rust语言开发者团队的严格管理)
- 每6周发布一个迭代版本
- 2-3年发布一个新的大版本Rust 2018 editionRust 2021 edtion
好处在于,可以满足不同的用户群体的需求:
- 对于活跃的Rust用户他们总是能很快获取到新的语言内容毕竟尝鲜是技术爱好者的共同特点:)
- 对于一般的用户edition大版本的发布会告诉他们Rust语言相比上次大版本发布有了重大的改进值得一看
- 对于Rust语言开发者可以让他们的工作成果更快的被世人所知不必锦衣夜行
好了相信大家听了这么多Rust的优点已经迫不及待想要开始学习旅程那么容我引用一句CS的经典台词OKlet's go.