forked from 0voice/Understanding_in_Rust
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
89137eb
commit 069854d
Showing
1 changed file
with
145 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,145 @@ | ||
|
||
![img](https://pic2.zhimg.com/80/v2-cb004bb5ed725791c973268745967d76_720w.png) | ||
|
||
|
||
|
||
Rust 与 C++ 是开发人员最近的热门话题。Rust 和 C++ 之间有很多相似之处,许多开发人员想知道使用哪个**更好**(特别是对于系统编程语言)。 | ||
|
||
这两种语言都在系统级开发领域竞争,并且与 Python 等对初学者更友好的语言相比,它们的学习曲线都很陡峭。 | ||
|
||
在选择编程语言时,您应该考虑其针对特定用例的效率和生产力。在本指南中,我们将深入研究 Rust 和 C++,比较和对比这些语言的用途、优点和缺点。 | ||
|
||
**本指南一目了然:** | ||
|
||
- 什么是Rust? | ||
- 什么是 C++? | ||
- 技术对比 | ||
- 架构 | ||
- 游戏开发 | ||
- 结论和总结 | ||
|
||
![img](https://pic3.zhimg.com/80/v2-871ebc3fba575da987cff3fcb1510da7_720w.png) | ||
|
||
## 什么是Rust ? | ||
|
||
Rust 是由 Mozilla 开发的多范式编程语言,专注于性能和安全性。Rust 以其先进的**安全并发能力**而闻名 。Rust 的语法类似于 C++,但它提供了更快的速度和内存安全性,不使用垃圾收集器。 | ||
|
||
> Rust 最初是为 Mozilla Firefox 浏览器开发的,但它的效率和优势吸引了许多 C++ 开发人员开始使用 Rust,通常用于游戏开发。 | ||
Rust 在**内存管理**方面是创新的。例如,它不允许空指针或悬空指针。由于其功能性,Rust 常用于构建设备驱动程序、嵌入式系统、游戏和操作系统,例如 BlogOS、Redox、RustOS、Rux 和 Tock。 | ||
|
||
Rust 代码可以说以其速度和在测试前调试代码的能力而闻名。例如,Rust 可以帮助您开发在运行时检查代码错误的程序。 | ||
|
||
### Rust 的显着特点 | ||
|
||
- 内存管理 | ||
- 内存安全 | ||
- 所有权制度 | ||
- 多态性 | ||
- 速度和性能 | ||
|
||
```rust | ||
fn main() { | ||
println!("Hello World!"); | ||
} | ||
``` | ||
|
||
![img](https://pic2.zhimg.com/80/v2-94868a9913dfc568cb08850ddfadebba_720w.png) | ||
|
||
## 什么是 C++? | ||
|
||
C++是一种高级、通用的编译语言,已经存在一段时间了。由于其语法复杂,C++代码用于需要高速和并发的程序。C++ 以帮助您真正接近金属而闻名。 | ||
|
||
> C++ 是 C 的扩展,因此它继承了许多相似之处,但偏向于嵌入式软件和大型系统。 | ||
它以其性能、稳健性和效率而闻名。C++ 提供了对系统及其内存的大量控制。C++ 是**构建**Microsoft Windows 等操作系统和视频游戏开发的主要语言,因为一些游戏开发框架是用 C++ 编写的。 | ||
|
||
C++ 还提供了一个丰富的标准库,称为标准模板库。有了它,可以轻松构建从 GUI 应用程序到桌面应用程序,再到 3D 图形和游戏的所有内容。 | ||
|
||
### C++的显着特点 | ||
|
||
- 面向对象 | ||
- C++ 模板 (STL) | ||
- 运算符重载 | ||
- 遗产 | ||
- Lambda 表达式 | ||
|
||
```c++ | ||
#include <iostream> | ||
using namespace std; | ||
|
||
int main() { | ||
// your code goes here | ||
cout << "Hello World"; | ||
return 0; | ||
} | ||
``` | ||
|
||
## 技术比较 | ||
|
||
那么,为什么要在 C++ 上使用 Rust,或者反过来呢?如果两者都是**高性能**、开源且功能强大的,那么更好的选择是什么?让我们深入了解他们的技术组件。 | ||
|
||
从高层次上看,C++ 拥有更大的社区、更广泛的用例、更多的框架,并且在任何编码公司中都得到了很好的认可。另一方面,由于其静态类型特性,Rust 在安全性、速度和防止不正确/不安全的代码方面更好。 | ||
|
||
> Rust 非常擅长防止可能导致未定义行为的数据竞争,而 C++ 无法为您完成这项工作并会打开漏洞。 | ||
### 内存安全 | ||
|
||
大多数系统级语言不提供自动内存管理,因为垃圾收集等功能会降低性能。为了保持速度,C++ 牺牲了内存安全性,这是一个显着的缺点。 | ||
|
||
最近对 C++ 的更新具有诸如**RAII(资源获取即初始化)之**类的新功能,以摆脱手动内存管理,但它们并没有解决底层的核心问题。 | ||
|
||
为了解决这个问题,Rust 使用了一个**所有权系统**,它全面强制并提高了其内存安全性。它基本上消除了对任何手动内存管理程序的需要。Rust 为管理过程提供了内置功能,而 C++ 则留给您。 | ||
|
||
### 指针 | ||
|
||
在计算机科学中,指针是存储内存地址的对象。换句话说,地址“指向”程序中的其他数据。智能指针是具有附加元数据和功能的数据结构。大多数高级和低级语言都有某种指针功能。 | ||
|
||
C ++提供了类型 std::shared_ptr和std::unique_ptr可以像智能指针使用。Rust 在其标准库中有几个智能指针,比如引用计数智能指针类型。 | ||
|
||
Rust 和 C++ 都以对象的形式(String在 Rust 或std::stringC++ 中)大量使用智能指针,并提供了许多有用的附加功能。 | ||
|
||
### 编译时间 | ||
|
||
C++ 和 Rust 的完整构建时间大致相同,具体取决于 C++ 项目正在实现的模板数量(模板越多,速度越慢)。C++ 通常在增量编译方面做得更好。Rust 的编译器以友好而著称。它提供了有用的错误消息和一流的工具。 | ||
|
||
### 便于使用 | ||
|
||
大多数同时使用 Rust 和 C++ 的人都说 Rust 更易于使用,因为它**具有明确定义的语义**以及防止不需要/未定义行为的能力。同样,C++ 具有如此多的功能,因此很难跟踪。由于 C++ 向您展示了幕后发生的事情,因此 C 程序员需要很好地理解它。 | ||
|
||
## 框架和库 | ||
|
||
尽管 Rust 比 C++ 年轻,但它们都提供了出色的框架和库,尽管 C++ 库往往更通用一些。这里的区别在于,C++ 不像 Java、C# 或 JavaScript 那样是框架驱动的环境,因此它们不会被普遍使用。 | ||
|
||
然而,在 Rust 中,有几个框架可以提供功能性、安全性和健壮性的代码,例如: | ||
|
||
- **Rocket:**用于提高安全性、速度和灵活性的 Rust Web 框架。 | ||
- **Nickel:**一个 Rust 框架,用于开发具有明确验证规则的用户友好的信息流控制系统 | ||
- **Azul:**一个基于 Rust 的即时模式 GUI 框架,用于开发桌面应用程序 | ||
|
||
在库方面,主要的 C++ 库是标准库,它是类和函数的集合。它提供了几个通用容器、操作容器的函数、通用字符串和流(包括交互式和文件 I/O)以及其他语言支持。 | ||
|
||
> 虚幻引擎是一个用 C++ 编写的框架,用于游戏开发。 | ||
## 游戏开发 | ||
|
||
目前,C++是游戏开发的主要语言。大多数市场主导的游戏都是用 C++ 编写的,而用 C++ 编写的虚幻引擎是游戏开发的主要框架。虚幻引擎是完善、完善和成熟的。 | ||
|
||
Rust 也**进入了游戏开发领域**,但它没有提供与框架相同的功能。游戏可以用 Rust 开发,但要在这个领域与 C++ 竞争还需要一些时间。随着越来越多的 Rust 开发人员构建 Rust 生态系统,它可能会开始更加激烈地竞争。 | ||
|
||
因此,如果您对游戏开发感兴趣,请继续学习 C++,但要密切关注 Rust,尤其是现在Rust Foundation的创建。 | ||
|
||
### 用户界面 | ||
|
||
UI 开发是 C++ 和 Rust 比较的热门领域,尽管这两种语言都不是 UI 开发的首选。但是,他们的表现如何? | ||
|
||
C++ 提供了 GTKmm,它是 GTK+ C 库的现代接口。Rust 提供了 Azul,一个我们上面提到的开源、即时模式的 GUI 框架。它更新、更现代,拥有活跃的社区。 | ||
|
||
## 结论和总结 | ||
|
||
那么,哪个更好?两种编程语言都有其独特的优点和缺点。 | ||
|
||
- C++ 在社区支持方面更好。如果你想要一个可靠的、支持良好的语言和一个强大的库,C++ 是一个不错的选择。您还应该使用 C++ 进行**游戏开发**。 | ||
- Rust 更适合内存安全和并发。Rust 也更容易学习和使用。如果您希望代码**非常安全**并**避免内存泄漏**,那么 Rust 是您的最佳选择。 | ||
|
||
> 归根结底,您选择的语言取决于您的舒适度。选择 Rust 或 C++ 不会让你失望。两者都是可靠的、使用良好的、公认的语言,可以完成工作。 |