祝微信公众号 乐生活与爱IT 的读者朋友们,五一劳动节,吃好喝好睡好玩好,节日快乐!
今天给读者朋友们一个福利,请您在文章后面留言,留言比较精彩的,且获赞数比较多的朋友(至少3位),将有机会获得一本,华章出版社赠送的《Rust编程:入门 实战与进阶》,如下图。读者请注意,不是请朋友在你的朋友圈里点赞,而是邀请其打开文章,给您在文章内的留言点赞。
Rust有多火? 刚刚(2021年5月1日22点45分)我去外网看了一下,在Stack Overflow的官网上有一篇2021年3月15日发表的,题为“Getting started with … Rust”的文章,提到:
Rust的社区规模很小,但敬业度很高,在过去的几年中,Rust一直是我们开发人员调查中最受欢迎的语言,一直位居第一。
【编者Peter Ye注】:连续5年位居第一。
上图引自:
https://stackoverflow.blog/2021/03/15/getting-started-with-rust/
Rust是由Graydon Hoare最初创建的。最初是一个个人业余项目,后来被Mozilla所接受,截止今天Mozilla仍是其赞助商之一。
自2009年首次发布以来,它的受欢迎程度一直在稳步上升。超过5000人为Rust代码库做出了贡献。一些爱好者想知道它是否可以代替C ++。尽管Rust可能不是初学者使用的语言,但Rust在软件行业中正在逐渐普及,并且可以成为任何开发人员技能中的宝贵工具。
我的朋友朱春雷,大概是1年前曾经和我提到想写一本Rust实战的书籍,听完他的思路后,我非常赞同,在实践中理解编程语言,实用高效。后来就牵线华章出版社的杨福川老师相互认识,杨福川老师非常敏锐,2016年我的《软件定义存储》书籍之所以能面世,也多亏了他。
没想到,这么快,春雷就把书稿写完了,他邀请我为之写个赞誉,为了写好,我还通读了书稿,虽然涉及到代码的部分我没细看,但也花了我来回深圳飞机上的时间。我的赞誉如下:
我在拜访一些区块链的从业者(包括IPFS Filecoin等)时,发现Rust将成为主流。在有6万多开发者参与的StackOverflow 2020报告中,Rust是最受喜爱的语言,排在Python和Go之前。很高兴获悉我同学朱春雷愿意将自己的实战经验分享给大家;也很荣幸有机缘把他推荐给华章。看完书后,我感觉:
1、Rust注重安全性,例如它独有的所有权系统和类型系统;Rust非常严谨,有严格的编译器
2、这本书循序渐进,方便读者快速上手;读者在实践中能更懂原理
3、这本书在中文原创的Rust书籍中,很可能是实战第一书,更符合中文读者习惯
—— 叶毓睿 《软件定义存储》作者
下面转发春雷撰写的前言,及各位大咖(张汉东 杨镇 岳利鹏 雅珣 郭光华 谢晋)的推荐语
-Begin- 朱春雷
一、为什么要写这本书
虽然对 Rust 语言早有耳闻,但真正接触 Rust 还缘于笔者在“一块 + ”区块链技术社 区参加的陈锡亮老师主讲的“ Substrate 快速入门与开发实战”课程。Substrate 是一个开源的区块链开发框架,由 Parity 团队使用 Rust 语言编写。想学好 Substrate,毋庸置疑得先学好 Rust。
因此笔者深入研读 了最权威的官方教程 TheRust Programming Language、以代码展示方式讲解语法的 Rust by example 以及深入底层系统介绍 Rust 设计哲学的《 Rust 编程之道》等著作。虽有十年以上 编程经验,熟悉 Java、Python、Go 等语言,但在学习 Rust 编程的过程中,笔者依然感受到 了严重的挫折感。
挫折感的来源有以下三点。
一是初学者对 Rust 语言中一些特有的语法和符号需要一个适应过程。
二是 Rust 编译器内建各种安全检查规则,加上独有的所有权系统,在编写稍微复杂的 程序时,几乎难以做到一次编译就成功通过,需要经历反复的修改与编译调试。
三是 Rust 编程中关于引用、智能指针的使用,以及在编写 Unsafe Rust 过程中如何保 证内存安全很复杂,这对 Java、Python、Go 等语言的开发者也是较大的挑战。
另外,纵观市面上 Rust 图书的共同点,大多侧重于对 Rust 设计思想的介绍、对语法使 用以及实现原理的详细讲解,缺乏通过有效的编程实战快速上手的 Rust 教程,让初学者能 在实战中熟悉各个知识点,避免在冗长的语法学习中受挫。
因此,经过一段时间的深入思考,笔者决定撰写本书,并尝试将不限语言的数据结构和算法与 Rust 编程实战进行结合,让读者可以凭借以往的编程基础使用Rust 语言进行实 战,在实战中巩固各知识点,提升Rust 编程能力。学以致用是贯穿本书的主旨和理念。
二、读者对象
本书内容由浅入深,即使没有任何 Rust 编程经验的开发者也可以学习参考。本书适用于以下几类读者。
有高级语言(如 Java、Python、Go、C++ 等)编程经验的开发者;
计算机软件及相关专业且正在从事软件开发工作的开发者;
计算机软件及相关专业的学生;
其他有一定数据结构和算法经验的、对Rust 感兴趣的读者。
三、本书特色
以往常听一些朋友抱怨,且笔者在学习过程中也有类似感受:“学习一门新的语言,对 入门书籍阅读过半,还只会写 Hello World 程序,继续学习后面的章节却已忘记了前面的 内容。”之所以出现这种情况,主要是因为初学者很容易纠缠于语法细节的学习,钻一些深奥复杂却不常用的语法的“牛角尖”,从而导致“从入门到放弃”的情况时有发生。特别是 Rust 编程的初学者,如果一开始就囿于 Rust 语法细节之中,很容易因受挫而放弃。
笔者较为推崇的学习方式是,在掌握一门语言最基础的语法知识后就进行编程实战训练,实践中遇到了问题再去探究深层原理和细节。这样比一开始就进行“面面俱到、点点 探究”的学习方式会更有收获,理解也更为透彻。因此,本书将秉持学以致用的原则进行讲解,不事无巨细地罗列一个个知识点,也不立刻探究背后的原理和细节,而是帮助读者 以最快的速度掌握 Rust 编程所需的基本概念和基础语法,快速进入编程实战训练,以刻意 练习的方式让读者掌握每个知识点。这里的刻意练习包含以下三个方面的要求。
一是在“学习区”学习。跳出学习的“舒适区”,选择有难度、有挑战的知识学习。数据结构和算法水平能够准确辨别开发者的技术功底,判断开发者在面对新问题时是否具备 分析问题和解决问题的能力。因此,结合数据结构与算法的知识点进行编程训练,能使读者快速建立对 Rust 编程的认知,是挖掘自身成长潜能的重要手段和开发高性能程序的必备基础。
二是大量重复练习。只有不断地重复练习,才能真正掌握知识点。本书精选LeetCode 平台上与Rust 语法知识点相关的一些高频算法面试真题,在细致讲解与代码实现中,把重要的语法知识点通过不同的题目复现,帮助读者在重复练习中真正做到各个知识点的熟练 掌握与融会贯通;同时,还会把初学者在练习中遇到的常见问题以及解决问题的过程展现出来,使读者在逐步解决问题中巩固知识点。
三是及时测评反馈。没有及时反馈的练习往往是无效的。本书将协助读者在LeetCode 平台上进行练习,及时获得测评反馈,增加读者的学习兴趣。
四、如何阅读本书
本书分为三篇,具体内容如下。
语言基础篇(第 1~11 章):介绍 Rust 编程中必须掌握的基础语法。
编程能力训练篇(第 12~13 章):将数组、栈、队列、哈希表、链表、树等实用的数据结构和递归、分治、回溯、二分查找、排序、动态规划等常用算法与 Rust 编程实战结合进行讲解,并精选了 LeetCode 上的一些高频算法面试真题,使用Rust 语言进行编程实战。
综合实战篇(第 14~15 章):以排序算法为主题,围绕功能拓展和性能拓展两条主线,结合工程管理、泛型、trait 系统、高阶函数、闭包、迭代器、单元测试、多线程并发和异步并发等重要的语法知识点进行综合实战训练。
如果你具备 Rust 基础语法知识,可以直接从第 2 章或编程能力训练篇开始阅读。但如 果你是一名初学者,建议按照本书的编排顺序从第 1 章开始学习。
五、勘误和支持
由于笔者的水平有限,加之时间仓促,疏忽和不足之处在所难免,恳请读者批评指正。笔者在 GitHub 上创建了一个Resposity,读者可以在这里找到书中的全部源代码,同时可以将书中的错误(请标明具体的页码和错误信息)直接提交 issues,笔者将会及时发布更新 修订。如果你有更多的宝贵意见,也欢迎提交 issues。期待能得到你的支持与反馈。
此外,笔者会长期运营公众号“冲鸭 Rust 和区块链”,分享 Rust、算法和区块链开发 的原创技术。考虑到本书定位于快速入门实战,没有涉及 Rust 宏和 Unsafe 编程,笔者后续 计划从 Substrate 和 libp2p 源码解析的角度写一些进阶版实战系列来讲解这些知识点,并会 分享在公众号上供大家参考。
随书源码地址:
https://github.com/inrust/Rust-Programming-in-Action。
六、致谢
首先要感谢 Rust 社区为全球开发者提供了高质量的文档资料,感谢 Gavin Wood 博士为 Rust 贡献了诸多优秀的开源代码,感谢张汉东老师等各位国内的 Rust 布道者,本书是站在巨人的肩膀上完成的。
其次要感谢机械工业出版社华章公司策划编辑杨福川和责任编辑董惠芝在这近半年时间里始终支持我的写作,你们的鼓励和帮助使我得以顺利完成全部书稿。
还要感谢 Web3 基金会、“一块 + ”区块链技术社区的同仁以及在写书过程中给予指导的各位老师,你们的支持和推荐使得书稿最终顺利完成。特别感谢同窗好友叶毓睿同学,你的引荐促成了这本书的出版。
最后要感谢我的家人,因为有了你们的信任和支持,我才能够安心、坚持不懈地做自己想做的事。
-End-
-Begin- 多位Rust大咖的推荐语
众所周知,Rust 因为所有权机制,实现数据结构和算法并不像其他语言那样自由。而春雷的这本书,立意明确,正好站在算法和数据结构的实战视角,帮助读者在学习完 Rust 语言基础之后,进一步去深入理解所有权,独具匠心。随着 Rust 语言的逐渐普及,也希望更多像本书一样立意明确独具特色的 Rust 书籍涌现出来。
—— 张汉东 《Rust 编程之道》作者
作为一种系统级别的开发语言,Rust语言对于开发者理解和使用数据结构、算法以及多线程等基础编程技能的要求相对更高,学习曲线也更陡峭。本书在介绍Rust基本语言特性的基础之上,提供了很多有助于提高Rust开发基础技能的实例,对提高Rust开发者实践能力和经验大有裨益。本书也是开发者在学习和积累Rust语言开发所需的基础技能过程中的高质量参考资料。
—— 杨镇 《深入以太坊智能合约开发》作者
本书从“语言基础”和“编程能力训练”两方面入手,前者为Rust初学者初入门打下知识基础准备,后者让初学者尽早的将基础知识与实践结合起来,循序渐进,积跬步以至千里。另一方面本书的时效性很新,除了Rust的基础知识外,在并发编程部分中介绍了Rust最新的异步并发系统,且在实战部分也有对异步系统的实践。初学者尽早接触Rust的异步系统对Rust的系统性学习有极大好处,能让初学者更全面的领略Rust的优异之处。
—— 岳利鹏 Patract Labs创始人
众所周知,Rust语言非常难学,我们曾经考虑过要开设一门Rust课程,但一直缺乏配套的书籍或教材,直到我看到这本书,顿时感觉和我的想法十分契合!学以致用是一块链习的宗旨,也是贯穿这本书的主旨和理念。我相信通过这本书,初学者们不仅可以了解Rust的基础必备语法知识,还能够通过实战来加强自身的编码能力,希望有更多的开发者进入Rust编程世界。
—— 雅珣 一块+区块链开发者社区创始人
Rust和Emacs的学习曲线类似,入门有难度的,中文学习资料少。但区块链项目又特别喜欢用Rust,因为Rust的激进、安全、民主等精神和区块链不谋而合。许多想从事区块链编码工作的初入门者,刚到Rust学习这块就望而却步了,春雷这本书很好的解决了这个问题。
—— 郭光华 链网科技CEO
PPIO目前正着手在P2P内容分发网络、分布式存储系统中尝试使用Rust语言开发底层组件。春雷的书由浅入深,从基础语法到编码训练,再到综合实战,结构清晰,层层深入。在Rust的学习路上,帮我们节省了许多时间。
—— PPIO高级项目经理
-End-
需要购买的朋友,可以扫描如下二维码,或者打开文章左下角“阅读原文”