只学过 C 语言适合学 Rust 吗?
Posted 人邮异步社区
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了只学过 C 语言适合学 Rust 吗?相关的知识,希望对你有一定的参考价值。
学习一门新语言就像盖房子一样——需要将基础打牢。对于一种可能会改变你思考和推理代码的方式的语言,学习之初就需付出更多努力,并且认识到这一点非常重要。不过最重要的是,你可以使用新发现的概念和工具转变自己的思维。
如果你已掌握主流语言(例如C、C++或Python)的基本知识,以及了解面向对象编程的思想。那么你是可以学习Rust的。
Rust是一种快速、高并发、安全且具有授权性的编程语言,最初由Graydon Hoare于2006年创造和发布。现在它是一种开源语言,主要由Mozilla团队和许多开源社区成员共同维护和开发。它的第一个稳定版本于2015年5月发布,该项目开发的初衷是希望解决使用C++编写的Gecko中出现的内存安全问题。Gecko是Mozilla Firefox浏览器采用的浏览器引擎。C++不是一种容易驾驭的语言,并且存在并发抽象容易被误用的问题。针对C++的Gecko,开发人员在2009年和2011年进行了几次尝试来并行化它的层叠样式表(Cascading Style Sheets,CSS)解析代码,以便充分利用当前流行的并行CPU架构,但他们失败了,因为C++的并发代码难以理解和维护。由于大量开发人员在拥有庞大代码库的Gecko上进行协作,因此使用C++在其中编写并发代码的体验非常糟糕。随着希望消除C++“不良”部分的呼声日渐高涨,Rust诞生了,随之而来的是Servo—— 一个从头开始创建浏览器引擎的新研究项目。Servo项目利用前沿编程语言的特性向语言开发团队提供反馈,这反过来又影响了语言的演变。
2017年11月左右,部分Servo项目,特别是stylo(Rust中的并行CSS解析器)项目,开始发布最新的Firefox版本(Quantum项目),在如此短的时间内完成新版本的发布是一项伟大的成就。Servo的最终目标是用其组件逐步取代Gecko中的组件。
Rust的灵感来自多种语言的知识,其中值得一提的是Cyclone(一种安全的C语言变体)的基于区域的内存管理技术、C++的RAII原则、Haskell的类型系统、异常处理类型和类型类。
虽然Rust是一种通用的多范式语言,但它的目标是C和C++占主导地位的系统编程领域。这意味着你可以使用Rust编写操作系统、游戏引擎和许多性能关键型应用程序。同时,它还具有足够的表现力,你可以使用它构建高性能的Web应用程序、网络服务,类型安全的数据库对象关系映射(Object Relational Mapping,ORM)库,还可以将程序编译成WebAssembly在Web浏览器上运行。Rust还在为嵌入式平台构建安全性优先的实时应用程序方面获得了相当大的关注,例如Arm基于Cortex-M的微控制器,目前该领域主要由C语言主导。Rust因其广泛的适用性在多个领域都表现良好,这在单一编程语言中是非常罕见的。
Rust作为一门静态和强类型语言而存在。静态属性意味着编译器在编译时具有所有相关变量和类型的信息,并且在编译时会进行大量检查,在运行时只保留少量的类型检查。它的强类型属性意味着不允许发生诸如类型之间自动转换的事情,并且指向整数的变量不能在代码中更改为指向字符串。例如在javascript等弱类型语言中,你可以轻松地执行类似“two = "2"; two = 2 + two;
”这样的操作。JavaScript在运行时将2的类型弱化为字符串,因此会将22作为字符串存储到变量two中,这与你的意图完全相反并且毫无意义。在Rust中,与上述代码意义相同的代码是“let mut two = "2"; two = 2 + two;
”,该代码将会在编译时捕获异常,并提示信息:“cannot add '&str' to '{integer}'
”。因此,强类型属性使Rust可以安全地重构代码,并在编译时捕获大多数错误,而不是在运行时出错。
用Rust编写的程序表现力和性能都非常好,因为使用它你可以拥有高级函数式语言的大部分特性,例如高阶函数和惰性迭代器,这些特性使你可以编译像C/C++程序这样高效的程序。它的很多设计决策中强调的首要理念是编译期内存安全、零成本抽象和支持高并发。让我们来详细说明这些理念。
对于基本的语言功能,Rust不会偏离你在其他语言中习惯的内容;在较高层面,Rust程序会被组织成模块的形式,根模块会包含一个main()函数。对于二进制可执行项目,根模块通常是一个main.rs文件,而对于程序库,根模块通常是一个lib.rs文件。在模块中,你可以定义函数、导入程序库、定义类型、创建常量、编写测试和宏,甚至创建嵌套模块。我们将进行上述所有操作,但是让我们先从基础开始。
学习Rust的书
本书内容共17章,由浅入深地讲解Rust相关的知识,涉及基础语法、软件包管理器、测试工具、类型系统、内存管理、异常处理、高级类型、并发模型、宏、外部函数接口、网络编程、HTTP、数据库、WebAssembly、GTK+框架和GDB调试等重要知识点。
本书适合想学习Rust编程的读者阅读,希望读者能够对C、C++或者Python有一些了解。书中丰富的代码示例和详细的讲解能够帮助读者快速上手,高效率掌握Rust编程。
如果你想先学习一本编程语言入门,那么选择一本Python吧。
Python编程快速上手 让繁琐工作自动化 第2版
零基础自学Python教程书籍,提供配套同步教学视频、在线编程环境!针对Python3.X版本更新
本书是一本面向初学者的Python编程实用指南。本书不仅介绍了Python语言的基础知识,而且通过案例实践教读者如何使用这些知识和技能。本书的第一部分介绍了基本的Python编程概念,第二部分介绍了一些不同的任务,通过编写Python程序,可以让计算机自动完成它们。第二部分的每一章都有一些项目程序供读者学习。每章的末尾还提供了一些习题和深入的实践项目,帮助读者巩固所学的知识。附录部分提供了所有习题的解答。
以上是关于只学过 C 语言适合学 Rust 吗?的主要内容,如果未能解决你的问题,请参考以下文章