写点什么

Rust 与 C++:深入的语言比较

发布于: 5 小时前


Rust 与 C++ 是开发人员最近的热门话题。Rust 和 C++ 之间有很多相似之处,许多开发人员想知道使用哪个更好(特别是对于系统编程语言)。


这两种语言都在系统级开发领域竞争,并且与 Python 等对初学者更友好的语言相比,它们的学习曲线都很陡峭。


在选择编程语言时,您应该考虑其针对特定用例的效率和生产力。在本指南中,我们将深入研究 Rust 和 C++,比较和对比这些语言的用途、优点和缺点。


本指南一目了然:


  • 什么是 Rust?

  • 什么是 C++?

  • 技术对比

  • 架构

  • 游戏开发

  • 结论和总结


什么是 Rust ?

Rust 是由 Mozilla 开发的多范式编程语言,专注于性能和安全性。Rust 以其先进的安全并发能力而闻名 。Rust 的语法类似于 C++,但它提供了更快的速度和内存安全性,不使用垃圾收集器。


Rust 最初是为 Mozilla Firefox 浏览器开发的,但它的效率和优势吸引了许多 C++ 开发人员开始使用 Rust,通常用于游戏开发。


Rust 在内存管理方面是创新的。例如,它不允许空指针或悬空指针。由于其功能性,Rust 常用于构建设备驱动程序、嵌入式系统、游戏和操作系统,例如 BlogOS、Redox、RustOS、Rux 和 Tock。


Rust 代码可以说以其速度和在测试前调试代码的能力而闻名。例如,Rust 可以帮助您开发在运行时检查代码错误的程序。

Rust 的显着特点

  • 内存管理

  • 内存安全

  • 所有权制度

  • 多态性

  • 速度和性能


fn main() {  println!("Hello World!");}
复制代码


什么是 C++?

C++是一种高级、通用的编译语言,已经存在一段时间了。由于其语法复杂,C++代码用于需要高速和并发的程序。C++ 以帮助您真正接近金属而闻名。


C++ 是 C 的扩展,因此它继承了许多相似之处,但偏向于嵌入式软件和大型系统。


它以其性能、稳健性和效率而闻名。C++ 提供了对系统及其内存的大量控制。C++ 是构建 Microsoft Windows 等操作系统和视频游戏开发的主要语言,因为一些游戏开发框架是用 C++ 编写的。


C++ 还提供了一个丰富的标准库,称为标准模板库。有了它,可以轻松构建从 GUI 应用程序到桌面应用程序,再到 3D 图形和游戏的所有内容。

C++的显着特点

  • 面向对象

  • C++ 模板 (STL)

  • 运算符重载

  • 遗产

  • Lambda 表达式


#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++ 不会让你失望。两者都是可靠的、使用良好的、公认的语言,可以完成工作。


如果您想开始学习 Rust ,请查看我在 Github 上整理的【最安全的编程语言】Rust工程师枕边资料 非常适合为 Rust 打下坚实的动手基础。


快乐学习!

用户头像

直奔腾讯去,一起学习:Q群654378476 2021.05.20 加入

我要学完第十代《Linux C/C++服务架构开发》知识体系里的内容,直奔腾讯去,一起学习:Q群654378476 系统学习免费课程:https://ke.qq.com/course/417774?flowToken=1033508

评论

发布
暂无评论
Rust 与 C++:深入的语言比较