0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Rust和C++哪个更好入门

jf_78858299 来源:CSDN 作者:Nick Heath 2023-03-17 14:45 次阅读

作为一门系统编程语言,Rust 一直致力于解决高并发和高安全性系统等问题。和老牌的 C++ 相比,Rust 的性能也毫不逊色。但曾几何时,因为上手难、用户量少、社区不活跃等诸如问题让想要入门的开发者感到迷茫,如今新的一年已经开始,我们是否真的有必要学习 Rust?

一些开发人员非常沉迷于 Rust,因为它提供了一些安全措施,如保证内存安全,它在安全代码里不容许空指针、悬垂指针和数据竞争。并且,Rust 的性能和标准的 C++ 性能不相上下!

Rust 是由 Mozilla 开发人员 Graydon Hoare 在 2006 年开发的个人项目,从那个时候起,该语言就像它所命名的 Rust 真菌一样,开始传播,它今天被广泛应用于构建网络嵌入式计算机、分布式服务和命令行。

“Rust 的最大优势在于它是一种赋能技术!”Rust 编程语言核心团队的 Carol Nichols 说道,他本人还是 The Rust Programming Language 一书的合著者。

“之前,我们只能使用 C 或者 C++ 才能编写具有较低内存占用空间的高质量代码。但是,在生产代码中使用这些语言需要你手动管理内存并了解可能导致未定义行为的所有方法。”

Nichols 指出,不断扩展的 CVE 代码漏洞数据库证明“即使是最优秀的程序员”也疲于应对层出不穷的代码漏洞。

“为了确保你安全地使用内存,Rust 编译器非常严格,这样你就可以专注于你真正想要解决的问题。” Nichols 补充到。

除此之外,Rust 还增加了一些高级语言的生命质量特征。

“我喜欢将 Rust 视为高水平的前端,低水平的后端,就编写 Rust 的经验而言,我感觉它像是 Ruby、Haskell 和 Scala 的混合。它具有功能性影响,如闭包和迭代器,以及类似于 Haskell 的丰富类型系统。”Nichols 说。

“就使用 Rust 创建的程序而言,它们与使用 C 和 C ++ 创建的程序在速度和内存使用方面最相似。”

原来 Rust 那么强大!上面这些理由是不是还不足以说服你开始学习 Rust!那么请看下面这七个原因,看完即可开始学习 Rust,切勿错过好时机!

入门从未如此简单

“现在是学习 Rust 的好时机,因为刚刚在 12 月 6 日发布的 2018 年版本对语言编写进行了大量改进,使得 Rust 更加符合常规的开发的编码习惯”负责改进该版本的 Nichols 说到。

Rust 的用户群正在增长

现在已经有数百家公司在软件生产中使用 Rust,例如 Dropbox、Yelp 和Cloudflare,类似像亚马逊最近宣布的虚拟化技术 Firecracker 这样的产品也正在与 Rust 一起创建。

不得不承认的是,Rust 的使用还处于早期阶段,雇主们目前并不急于提高自己公司技术人员的 Rust 技能,去年在全球吃香的编程语言还是哪些最顶尖的技术语言。然而,Indeed 的高级副总裁 Raj Mukherjee 表示,有迹象显示雇主开始对 Rust 产生兴趣。“我们开始看到编程语言 Rust 出现在招聘广告中,尽管全球职位空缺数量相对较少。但是整个搜索量还是超过可用量,越来越多的人正在加入到学习 Rust 语言的行列中。”他说。

Rust 的低开销非常适合嵌入式编程

在家用电器和工业机器等非常低功耗的嵌入式系统上编写软件并运行是一项极具挑战性的工作。Nichols 说,Rust 非常低的开销使其非常适合在这些微控制器的极其受限的资源上运行,Rust 是极少数适用于在极低资源环境下运行的少数现代编程语言之一。

“将 Rust 交叉编译到各种嵌入式设备有很多很棒的工具,Rust 还支持 C FFI,因此它可以与这个域和其他域中的现有代码进行集成。”

现在官方渠道提供的 Rust 版本也已经为 Rust 2018 重新设计,包括嵌入式开发的必要功能,减少了开发人员从第三方库中获取这些功能的需求。

Rust 可以构建强大的 Web 应用程序

Rust 越来越像是构建 Web 应用程序的不错选择之一,其中有些应用程序提供的功能是使用 JavaScript(Web 应用程序常用语言)无法实现的。Rust 可以编译成 WebAssembly,它以接近原生的速度在每个主要的 Web 浏览器中运行。

“WebAssembly 是一个非常有前景的新领域,可以将原生应用程序性能带入网络,而且 Rust 已成为编写编译为 WebAssembly 的代码的首选语言。”Nichols 说。

“有一些工具允许你通过 WebAssembly 将 Rust 代码发送到 npm(JavaScript 包存储库),然后透明地向下游用户发送,还可以通过绑定将 Rust 部署到 Web 上,这允许调用浏览器和 JavaScript 本身提供的大多数功能。”Nichols 对此寄予厚望,希望 Rust 可以很快与竞争对手的网络开发语言相媲美。

“我很高兴有一天我们在 Rust 中拥有一个功能齐全的 Web 框架。目前生态系统中已经有很多框架和激动人心的实验,但是没有可比的东西,比如 Rails,在 Rust 还没有。我相信我们很快就用拥有这些功能。”

Rust 适用于构建分布式在线服务

Nichols 表示对于网络服务 Rust 可以使用最少资源来确保跨多个线程的内存安全的能力使其成为在线分布式系统扩展的服务的绝佳选择。同时 Rust 还使得编写泄漏内存或其他资源的代码变得更加困难,这些方面可以降低服务器成本并降低运营负担。

Rust 从不同的在线服务中提取数据很快并且很容易,因为它实现了对 async / await 命令的支持,这将使得编写在等待数据传递时不会挂起的异步代码变得更加容易。

Rust 适合创建功能强大的跨平台命令行工具

跨平台命令行应用程序是 Rust 真正闪耀的一个地方。你可以交叉编译到你所针对的平台,并获得一个二进制文件发送给用户。.Ripgrep 是一个很好的例子:它是在 Windows、Linux 和 macOS 上运行的 grep 重新实现的 grep,并且比同类中的任何其他文本搜索工具。

Rust 拥有新的开发工具和更好的 IDE 支持

现在一系列开发工具都已变得不可用了,其中包括 Rustfmt,一种基于默认代码样式自动格式化代码的工具;Clippy 帮助确保惯用的代码风格。Rust 用于突出潜在错误的内容,同时可以通过 Rust 语言服务器和 IntelliJ Rust 在 IDE 中提供支持。

现有工具也得到了改进,例如借助检查器确保代码内存的安全,如果变量使用该数据完成,它将不会阻止其他使用者使用数据。

Rust 将在 2019 年作出哪些改善?

编译时间更快

Nichols 说,将 Rust 代码编译到软件所需的时间仍然“比我们想要的要慢”。有一些关于渐进式编译的工作已经在一定程度上改善了这种情况,并且一直在进行的重构工作应该会在不久的将来取得进一步的改进。

Rust 2018 最近的改进-通过多种方法(包括渐进式编译)更快地重新编译,其中编译器仅重新编译已更改的部分代码。

更好地选择软件库

虽然 Nichols 说社区建立的软件库(称为“crates”)的生态系统自 2015 年 Rust 1.0 以来已经扩展了很多,但其表示开发人员可能仍然无法找到他们正在寻找的功能的库。

“在某些情况下可能会有一个库,但它不完整或者不那么成熟,因为它需要在生产中使用。我们有各种各样的工作小组已经正在投资我们的生态系统并在编译器本身之外进行改进,我们很可能在未来一年需要有更多的工作小组。” Nichols 补充说。

更容易学习

最后,Nichols 评价道,Rust 仍然难以学习和掌握,但最近又增加了许多书籍,包括她与 Steve Klabnik 一起写的 The Rust Programming Language。从长远来看,她说有计划开发更多初学者学习资源和新的中级水平书籍和教程

“我们希望每个人都能够在 Rust 中学习和提高工作效率!”

原文:https://www.techrepublic.com/article/rust-programming-language-seven-reasons-why-you-should-learn-it-in-2019/

作者:Nick Heath 是 TechRepublic 的首席记者。他撰写了关于 IT 决策者需要了解的技术以及欧洲科技领域最新动态的文章。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 编程语言
    +关注

    关注

    9

    文章

    1878

    浏览量

    33160
  • C++
    C++
    +关注

    关注

    21

    文章

    2066

    浏览量

    72901
  • Rust
    +关注

    关注

    1

    文章

    223

    浏览量

    6387
收藏 人收藏

    评论

    相关推荐

    FPGA 和 C++ 哪个方向更有发展呢?

    工作快四年了,在一家外企给芯片写驱动程序,C++。但是底层驱动协议也没用到C++高级的功能,大部分时间在读文档,写if-else-.学校里做过FPGA的项目,工作中也做过几个小项目。水平也一般。现在想换工作,比较迷茫该往哪个方向
    发表于 06-02 19:37

    Visual C++入门到精通程序源文件

    ` 本帖最后由 windworld 于 2015-12-16 21:08 编辑 Visual C++入门到精通程序看了下,前面讲的比较基础,后面比较偏MFC学习,可以做作为入门书,这附上书的源码。看完了可以看看
    发表于 12-16 16:16

    C++接口类工程化方法 相关资料下载

    前阵子隔壁组来了个Rust开发的架构师,讨论过如何设计方便易用扩展性高的接口。C++不像Java有接口的概念,但是C++可以实现接口的功能。下面就总结一下实际项目工程中实现C++接口的
    发表于 07-02 06:53

    C语言和C++哪一个更好

    在嵌入式软件程序开发中,C语言无疑是最常被使用的程序语言。不过应该明白的是,有些嵌入式硬件同时提供C语言程序编译器以及C++程序编译器,而相比于C语言,
    发表于 11-08 07:46

    如何用 rust 语言开发 stm32

    本文介绍如何用 rust 语言开发 stm32。开发平台为 linux(gentoo)。硬件准备本文使用的芯片为 STM32F103C8T6。该芯片性价比较高,价格低廉,适合入门学习。需要
    发表于 11-26 06:20

    如何利用C语言去调用rust静态库呢

    新语言的感觉,要做不少的对接工作。也用过Lua,感觉也差不多。评估学习评估Rust语言时,感觉性能和体积应该都不会有太大的问题。加上语言本身主打的安全性,再结合一些库,用来做一些C语言不擅长的动态操作
    发表于 06-21 10:27

    C++入门基础教程大全

    C++入门基础教程大全 C++是一种面向对象的编程语言,但如果系统没有采用面向对象的技术,C++只能作为面向过程的语言来使用.
    发表于 05-29 10:25 0次下载

    C++ 入门自学教程

    C++ 入门自学教程从入门知识开始讲起,比较有利于初学者入门掌握,比较好懂,能够对C++有一个全面认识
    发表于 11-17 10:36 0次下载

    Chrome团队将测试验证RustC++的互操作性

    Chrome 团队也开始尝试 Rust 了。在 Chromium 官网近期发布的文档中,“RustC++ 的互操作性”作为一项尚待解决的挑战被提出。
    的头像 发表于 08-25 10:35 1765次阅读

    Rust在虚幻引擎5中的使用

    前段时间,研究了一套 Rust 接入 Maya Plugin 的玩法,主要原理还是使用 C ABI 去交互。那我想着 UE 是使用 C++ 写的,肯定也可以使用 C ABI 去交互,如果可以的话在 UE 中就可以使用 Rust
    的头像 发表于 12-21 11:05 4680次阅读

    Chromium正式开始支持Rust

      Chromium 正式开始支持 Rust 目前的支持只是第一阶段,在C++代码中使用Rust写的第三方库(编译成.so)。估计明年Chromium的二进制发行文件中会包含rust
    的头像 发表于 01-14 10:04 663次阅读

    取代C++!微软用Rust改写的Win11内核来了

    按照微软此前介绍,Rust 语言的优势在于极高的内存安全性,原来内核中大量的不安全的子例程在改写后消失不见。同时,Rust 代码简洁高效,移植后 Office 应用没有任何性能损失,甚至部分场景比 C++ 运行效率更高。
    的头像 发表于 05-19 16:58 1105次阅读
    取代<b class='flag-5'>C++</b>!微软用<b class='flag-5'>Rust</b>改写的Win11内核来了

    使用C++编写通用库并在 Rust 中使用它 (WASI)

    使用 C++ 编写通用库并在 Rust 中使用它 (WASI) WebAssembly 简介 WebAssembly 是一种二进制指令格式,旨在成为一种低级虚拟机,可以在 Web 浏览器中以接近本机
    的头像 发表于 06-16 10:03 659次阅读
    使用<b class='flag-5'>C++</b>编写通用库并在 <b class='flag-5'>Rust</b> 中使用它 (WASI)

    谷歌捐款100万美元给Rust基金会,以增强C++Rust的交互性

    如今,谷歌多项核心业务仍以 C++为主要编程语言,虽然无法直接使用Rust替代现有的C++程序,但谷歌依然选择支持Rust基金会的“Interop Initiative”计划,帮助那些
    的头像 发表于 02-19 15:41 171次阅读

    [鸿蒙]OpenHarmony4.0的Rust开发

    背景 Rust 是一门静态强类型语言,具有更安全的内存管理、更好的运行性能、原生支持多线程开发等优势。Rust 官方也使用 Cargo 工具来专门为 Rust 代码创建工程和构建编译
    的头像 发表于 02-26 17:28 312次阅读
    [鸿蒙]OpenHarmony4.0的<b class='flag-5'>Rust</b>开发