现在从头开始自学学编程,是学C++好,还是RUST?

有一定的基础,但不是很精通。
  • 华为云开发者联盟
  • 2024-01-23
  • 12
  • 共4人发表观点
网友「华为云开发者联盟 」发表观点
2024-01-30

一、 引言

随着时代的发展,编程语言已经多到数不胜数,那么再发明一种新的编程语言有什么意义呢?发明一种新的编程语言又能解决什么问题呢?

俗话说的好,“工欲善其事,必先利其器”。在程序员的世界中,编程语言就是他们的“武器”,编程语言不仅是程序员的“武器”,而且还是他们思想的体现。在当今编程语言“百花争艳”的时代,如果一种新语言可以一直发展下去,被程序员所接受,必然有它的优点和过人之处。Rust语言就是这样一门新的编程语言。

二、 Rust语言简介

2.1 Rust的历史背景

Rust语言在2006年作为 Mozilla 员工 Graydon Hoare 的私人项目出现,而 Mozilla 于 2009 年开始赞助这个项目。第一个有版本号的 Rust 编译器于2012 年 1 月发布。Rust 1.0 是第一个稳定版本,于 2015年5月15日发布。

从 2019 年下半年至今,不到一年的时间内,Rust 语言确实接二连三地掀起过一些波澜。从微软探索将 Rust 作为 C 和 C++ 的安全替代方案开始,Rust 吸引了越来越多的目光:内核维护者表示愿意接受用 Rust 开发 Linux 驱动;AWS 也伸出橄榄枝,宣布赞助 Rust;微软更进一步,在今年年初开发并开源了受 Rust 启发的新编程语言 Verona;最近,苹果也站出来拥抱它,将 C 代码移植到 Rust。

2.2 什么是Rust语言?

Rust语言是一门系统编程语言,专注于安全。系统编程语言是相对于应用编程语言而言,系统编程语言意味着更接近于硬件层次,并为上层的应用软件提供支持。

系统编程语言的特点:(1) 可以在资源非常受限的环境下执行,运行时开销很小,非常高效;(2) 很小的运行库,有时候甚至是没有(3) 可以运行直接的内存操作。

目前较为流行的系统编程语言是C和C++,Rust与C和C++类似,相比是增加了安全性。

2.3 Rust语言的特点

(1)高性能-Rust速度非常快且内存利用率极高。由于没有运行时和垃圾回收,它能够胜任对性能要求特别高的服务,可以在嵌入式设备上运行,还能轻松和其他语言集成。

(2)可靠性-Rust 丰富的类型系统和所有权模型保证了内存安全和线程安全,让您在编译期就能够消除各种各样的错误。

(3)生产力-Rust 拥有出色的文档、友好的编译器和清晰的错误提示信息, 还集成了一流的工具 —— 包管理器和构建工具, 智能地自动补全和类型检验的多编辑器支持, 以及自动格式化代码等等。

2.4 Rust语言架构

上面的思维导图包含了详细的学习内容和路线。学习之前必不可少的肯定是安装开发环境。在官网中有安装包和详细的安装教程,就不过多赘述。

官网地址放在这:安装 Rust - Rust 编程语言 (http://rust-lang.org)。

对于这样一个简单的示例程序,我们直接使用rustc即可,执行该程序我们就可以在控制台上看到”Hello world!”字符串。我们简单的hello world程序就执行完成了。

我们简单分析一下这个简单的程序:

(1) fn(function的缩写)是一个关键字,函数定义必须用这个关键字开头。(2) 函数体使用大括号包含。(3) 默认情况下,main函数是可执行程序的入口点,它是一个无参数无返回值的函数。(4) 局部变量申明用let关键字开头。(5) 最简单的标准输出是使用println!宏来完成。后面的感叹号,它代表这是一个宏,而不是一个函数。而且需要注意的是Rust语言中的宏与C/C++的宏有很大的差别,可以说是完全不一样的东西。(6) 每条语句也是通过分号结尾,与C/C++的语法规则是一样的。虽然说Rust是一门新语言,但是与C有很对相似的地方。熟悉C/Java/JavaScript等语言的朋友,如果要是学习Rust语言的话,应该会很快入手的,因为你会经常看到你熟悉的东西。这一点对于开发者来说还是很友善的。

四、 Rust语言的优缺点

优点:前面提到了一些Rust语言的特点,可以说它的特点就是它的优点。首先必须要提的肯定是安全方面了。

(1)传统的系通编程语言开发过程中,会出现因内存错误导致的bug或者是崩溃。比如空指针、野指针、内存越界、段错误等等。这些错误我们经常提起,平时开发时也会时常遇到,各路大神不断总结经验、开发调试工具,但并不能彻底解决这些问题。Rust语言是可以保证内存安全的系统编程语言,这是它独特的优势。与 C/C++ 语言相比,使用 Rust 语言来进行程序设计可以有助于从源头预防出现诸如空指针,缓存溢出和内存泄漏的内存问题。(2)在计算机单核性能越来越接近瓶颈的今天,多核并行成了提高软件执行效率的发展趋势。在强大的内存安全特性的支持下,Rust很好的解决了并行条件下的数据竞争问题,保障了线程的安全。(3)其次就是高性能运行效率极高,与其他语言相比之下,Rust的运行效率较高。

缺点:俗话说的好“人无外人”,一门编程语言也不可能是完美的,肯定会有它的不足或者是局限性。(1)Rust编译起来比较复杂,对新人不是很友好(2)库不完善,生态环境较弱(3)为了做到编译时捕捉大部分错误,给予了 programmer 很少的自由

五、 Rust语言的应用

5.1 Rust语言的应用范围

(1)Rust编译器可以直接生成目标可执行程序,不需要任何解释程序,可用于传统命令行程序。(2)Rust 同时具有JavaScript 一般的高效开发语法和 C 语言的执行效率,支持底层平台的开发,可以用于开发嵌入式设备。(3)Rust 用极低的资源消耗做到安全高效,且具备很强的大规模并发处理能力,十分适合开发普通或极端的服务器程序,可以用于开发网络服务器。(4)Rust 可以被编译成 WebAssembly,WebAssembly 是一种 JavaScript 的高效替代品。

5.2 Rust语言的应用示例

Rust是一门通用的高级系统编程语言,其应用领域基本可以同时覆盖C/Cpp/Python/Java的应用领域。具体而言,Rust的应用领域目前可以覆盖到以下领域:数据服务领域(数据库、数据仓储、大数据等等),云原生(机密计算、容器、分布式计算平台等等),操作系统、工具软件等领域。不管是在国内还是在国外,Rust语言的应用非常广泛,发展前景非常得好。下面看几个国内外的实例深入了解一下Rust语言的应用。

首先我们先看一下Rust在国外公司的应用和开发者的使用。

(1)Timely Dataflow(实时数据流)

Timely Dataflow是http://clockworks.io 公司的开源产品。在分布式系统中对流式数据进行复杂的处理,比如多次迭代或者递增计算是非常困难的。Timely dataflow 给出了一个完全基于时间的抽象,统一了流式计算和迭代计算。当你需要对流式数据并行处理且需要迭代控制的时候,可以使用 Timely Dataflow 。Rust代码量大概有13000行,主力开发人员4人,社区贡献者30多人。

(2)Krustlet(开源工具)

微软 Deis Labs发布了Krustlet,它是使用 Rust 实现的一种Kubernetes kubelet。Krustlet是在 Kubernetes上运行 WebAssembly 工作负载的工具。它就像 Kubernetes集群中的节点一样。Krustlet 通过在事件流上侦听调度程序根据特定的 Kubernetes 容忍度为其分配的新 Pod 来充当 Kubelet。当用户计划具有特定节点容忍度的 Pod 时,Kubernetes API会将该工作负载计划到 Krustlet 节点,然后 Krustlet节点将获取模块并运行该模块。Rust代码量一共21000多行,主力开发人员7人,社区贡献者有32人。

(3)Ripgrep(终端文本搜索)

ripgrep 是一个以行为单位的搜索工具,它根据提供的pattern 递归地在指定的目录里搜索。它是由 Rust 语言写成,与其他同类工具比较,它的主要亮点就是速度快,非常的快。ripgrep 目前已经成为 Linux 下最快的文本搜索工具。它一共有35000行Rust代码。

除了上述的三个例子外,国外还有很多用Rust语言编写的开发工具和很多好的开源项目。在国内Rust的发展也是相当的好,接下来我们了解一下Rust在国内的应用现状。

(1) 飞书APP

飞书软件我们很多开发者都很了解,甚至一直在使用。字节跳动旗下的飞书在国内应该属于最大的Rust开发团队之一了。飞书在客户端跨平台组件中使用了Rust,据说代码量有55万行代码(包括测试和生成代码)。

(2) TiKV

TiKV是一个开源的分布式事务数据库,专注为下一代数据库提供可靠、高质量、实用的存储架构。目前,TiKV已经在知乎、美团、京东云等多家企业上线应用。TiKV项目包含Rust代码大约30万行(包括测试代码),TiKV是全球性开源项目。

(3) 华为

华为在2021年加入Rust基金会,旨在为Rust在全球推广和发展做出贡献。目前一些开源项目和内部试点项目使用了Rust,以及为Rust生态作出了贡献。目前华为也正在为大规模使用Rust做准备。除了上述的示例之外还有很多公司或者是项目团队应用了Rust语言,可谓是发展前景非常的好。

六、 推荐的Rust书籍

为了大家更好地学习和了解Rust语言,推荐一些Rust相关书籍。

1、第一本就是《深入浅出Rust》

本书详细介绍了Rust语言的基础语法,穿插讲解一些高级使用技巧,一步步加深对Rust语言的认识和了解。

全是总共分为五部分,第一部分就是详细的基础知识介绍,基础知识是非常重要的,要想学好一门语言,基础知识必不可少。第二部分内存安全,这可是Rust语言的“招牌”,也是本书的核心和重点。第三部分是高级抽象,介绍Rust的抽象表达能力。它支持多种编程范式,以及较为强大的抽象表达能力。第四部分是线程安全,介绍了并发模型,并行编程是提高效率的重要因素。第五部分是实用设施也是文章的结尾部分,简单介绍Rust语言的工程实用性。

七、 结语

Rust是一门现代化的语言,融合了多种语言特性,而且Rust语言可以应用的领域范围非常广泛。在学习Rust的过程中,你会发现自己编程能力的不足,改正掉这些不足就会不断提升自我。卓越的编程语言,可以将优秀的设计、先进的思想、成功的经验,自然而然地融人其中,使更多的使用者开阔眼界、拓展思路,受益无穷。虽然现在的Rust有些许不足,我相信在未来它会越来越好。

本文分享自华为云社区《Rust语言一般适合用来做什么?》,作者:静Yu。

网友「DeveloperPeer 」发表观点
2024-01-27

C++ 是 Bjarne Stroustrup 在 1985 开发出来的面向对象的编程等语言。

Rust 是 Mozilla 在 2010 开发出的系统层级的编程语言。

这两者都是比较接近硬件的编译型语言,都有很高的性能,和比较广泛的应用场景。学C++, 还是Rust? 如果没有比较的前提,这个问题是很难抉择的,因为每种编程语言都有存在的原因,及其应用的领域。

因此需要弄明白你是要在什么角度上来选择语言?

比如

从支持度,丰富的开发框架角度看,C++ 是胜过 Rust的;从编程安全性,内存管理,和其它一些未知行为方面, Rust 是胜过 C++的;从运行速度上看,两者的性能区别不大;易学性方面,两者相比 python, C#这类语言,还是有不少难度的;应用领域方面,游戏开发方面 C++ 是胜过 Rust 的,VR/AR方面,则 Rust会胜出。在开发者的喜爱程度方面,Rust 是 胜过 C++ 的;

因此,需要跟举你的需求来选择。

网友「soIoist 」发表观点
2024-01-31

学好Rust需要c/c++作为基础,rust中很多概念技巧在cpp中都有类似的,rust的很多类型都是对应cpp中安全的版本,例如union不安全,但rust中对应的enum是安全的可以自动析构,cpp中的数组指针不安全对应rust的slice是安全的,因为对slice的访问编译器会加入越界检查,还有其他方面rust提供了很多精妙的技巧使其达到安全。除此之外rust要求你本身就对安全有足够的认识,这样你学习rust就会容易,不会被它各种严苛的规则困扰,你可以轻易驾驭各种看起来奇怪的类型和用法。总结一下就是可以先学习cpp,对操作系统底层原理也要有足够的认识,到达一定程度后可以开始rust,当然rust的很多语法是比较现代的,它参考了很多现代语言的语法风格,那么除了cpp之外还可以增加学习js、go、Python等语言。

网友「小可视界 」发表观点
2024-01-29

这个取决于你的目标和喜好。如果你想学习一门能够用来开发大型系统和应用程序的编程语言,那么 C++ 可能更适合你。如果你希望学习一门具有良好安全性和性能的编程语言,那么 RUST 可能更合适。

当然了,如果你真的是从头开始自学编程,我更建议选择一门简单易学的编程语言,如 Python 或 JavaScript。这两门语言的语法简单,有很多简单的教程和实例,可以帮助你快速入门。此外,它们也拥有丰富的生态系统,可以帮助你快速开发各种类型的应用程序。

相比之下,C++ 和 RUST 是更高级的编程语言,要求更高,对于初学者来说并不是很适合。

网友评论(0)

暂无网友评论