1.Rust 语言:
Rust 是由 Mozilla 主导开发的通用、编译型编程语言。设计准则为“安全、并发、实用”,支持函数式、并发式、过程式以及面向对象的程序设计风格。Rust 语言原本是 Mozilla 员工 Graydon Hoare 的私人计划,而 Mozilla 于 2009 年开始赞助这个计划,并且在 2010 年首次公开。也在同一年,其编译器源代码开始由原本的 OCaml 语言转移到用 Rust 语言,进行 bootstrapping 工作,编译器在架构上采用了 LLVM 做为它的后端。第一个有版本号的 Rust 编译器于2012年1月发布。Rust 1.0 是第一个稳定版本,于 2015 年 5 月 15 日发布。Rust 的设计目标之一,是要使设计大型的互联网客户端和服务器的任务变得更容易,因此更加强调安全性、存储器配置、以及并发处理等方面的特性。在性能上,具有额外安全保证的代码会比 C++ 慢一些,例如对 Rust 的数组进行操作时默认会检查索引是否越界,而 C++ 则不会,但是如果以 C++ 也手工提供保证的情况下,则两者性能上是相似的。为了提供存储器安全,它的设计不允许空指针和悬空指针。 指针只能透过固定的初始化形态来建构,而所有这些形态都要求它们的输入已经分析过了。Rust 有一个检查指针生命期间和指针冻结的系统,可以用来预防在 C++ 中许多的类型错误,甚至是用了智能指针功能之后会发生的类型错误。
2.两者之间的比较:
二者都支持指针操作,都可以用来作为系统编程语言,二者都可以用来操作底层硬件,二者都都具有与 C 语言程序相当的性能。
Rust 不允许空指针和悬空指针,C++ 则允许空指针;
Rust 只支持函数式编程,C++ 支持的语言特性较多;
Rust 没有头文件,C++ 有头文件;
Rust 语言自带有内存管理,保证内存使用安全,Rust 利用编译时的静态分析很大程度上保证了代码使用内存的安全性;而 C++ 需要进行手动申请和释放内存;
Rust 利用静态分析,在编译时会分析代码由于并发引起的数据竞争,较好的做好的并发处理;C++ 的使用多线程并发容易引起各种数据竞争的问题。
阅读量:2007
点赞量:0
收藏量:1