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 决策者需要了解的技术以及欧洲科技领域最新动态的文章。

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

    关注

    10

    文章

    1945

    浏览量

    34736
  • C++
    C++
    +关注

    关注

    22

    文章

    2108

    浏览量

    73651
  • Rust
    +关注

    关注

    1

    文章

    228

    浏览量

    6609
收藏 人收藏

    评论

    相关推荐

    C++入门基础教程大全

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

    C++ 入门自学教程

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

    Visual C++编程入门视频

    Visual C++编程入门视频!资料来源网络,如有侵权,敬请见谅
    发表于 11-20 15:10 6次下载

    c++入门经典习题集

    让大家全方位傻瓜式学习大话设计模式(3.45MB)c++入门经典习题集+多年积累的类库。
    发表于 07-13 15:11 2次下载

    C++入门教程之C++程序设计的课件资料免费下载

    本文档的主要内容详细介绍的是C++入门教程之C++程序设计的课件资料免费下载主要内容包括了:1. 认识C++2. C++的现状和发展3.
    发表于 12-07 08:00 33次下载
    <b class='flag-5'>C++</b><b class='flag-5'>入门</b>教程之<b class='flag-5'>C++</b>程序设计的课件资料免费下载

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

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

    嵌入式程序开发,C语言和C++究竟应该用哪个

    在嵌入式软件程序开发中,C语言无疑是最常被使用的程序语言。不过应该明白的是,有些嵌入式硬件同时提供C语言程序编译器以及C++程序编译器,而相比于C语言,
    发表于 11-03 14:21 60次下载
    嵌入式程序开发,<b class='flag-5'>C</b>语言和<b class='flag-5'>C++</b>究竟应该用<b class='flag-5'>哪个</b>?

    大厂对Rust的态度,C++之父回应

    不少开发者许多开发者都对 Rust 的过度宣传感到反感,并表示不同的工具适合不同的问题,不要再过度宣传某一种编程语言。Rust 很好,但它不是所有问题的解决方案。
    的头像 发表于 09-22 11:25 1376次阅读

    Rust在虚幻引擎5中的使用

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

    Chromium正式开始支持Rust

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

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

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

    C++之父新作带你勾勒现代C++地图

    为了帮助大家解决这些痛点问题,让大家领略现代C++之美,掌握其中的精髓,更好地使用C++C++之父Bjarne Stroustrup坐不住了,他亲自操刀写就了这本《
    的头像 发表于 10-30 16:35 855次阅读
    <b class='flag-5'>C++</b>之父新作带你勾勒现代<b class='flag-5'>C++</b>地图

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

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

    [鸿蒙]OpenHarmony4.0的Rust开发

    中集成 Rust 代码,并最大程度发挥 Rust 和 OpenHarmony 中原有 C/C++ 代码的交互性,采用 GN 作为统一构建工具,即通过 GN 构建 Rus
    的头像 发表于 02-26 17:28 892次阅读
    [鸿蒙]OpenHarmony4.0的<b class='flag-5'>Rust</b>开发