开发者社区> 问答> 正文

Rust 成为 C 的接班人,将变成主流编程语言?

Rust 成为 C 的接班人,将变成主流编程语言?

展开
收起
珍宝珠 2020-01-13 13:57:25 4821 0
2 条回答
写回答
取消 提交回答
  • 北美华人安全论坛 BASec 创始人韦韬认为,Rust 有着出色的性能表现,不过对于普通业务而言,性能不是关键,稳定性才是。这个恰恰是 Rust 的最强项。就稳定性而言,Rust 碾压大部分语言,包括 C,C++,Go,Python,PHP 等等。但是没有免费的午餐,Rust 的稳定性来自于 Borrow Checker 的 " 严苛 ",Ownership 机制对于 Rust 入门者有一定的门槛。但大部分情况下,配合上基本的编程规范 (严格限制 unsafe/unwrap/…等),只要 Rust 编译器点头,程序运行起来就没什么问题。需要注意的是,Rust 保障的内存安全不包括防止内存泄露。因为内存泄露的语义和具体应用逻辑强相关,所以还需要做额外的内存泄露检查,但这方面的工具比较现成,一般不是大问题。但即使如此,Rust 写驱动也不太乐观,主要是两个原因。一是需要把底层的 unsafe 仔细封装,因为在驱动场景下,很多操作不满足 Rust safe 的要求,一旦代码里混杂了很多 unsafe,那么因常规安全检验工具的缺乏,Rust 反而会不如 C。二是硬件厂家的工程师从 C 改为 Rust 更漫长,广泛的硬件驱动支持才是 Linux 生态繁荣昌盛的根基,这个生态挑战比单纯的技术挑战更大。

    方便开发者学习 Rust,Rust 官方团队做出了如下努力:

    • 独立出专门的社区工作组,编写官方Rust Book,以及其他各种不同深度的文档,比如编译器文档、nomicon book 等。甚至组织免费的社区教学活动 Rust Bridge,大力鼓励社区博客写作,等等。

    • Rust 语言的文档支持 Markdown 格式,因此 Rust 标准库文档表现力丰富。生态系统内很多第三方包的文档的表现力也同样得以提升。

    • 提供了非常好用的在线 Playground 工具,供开发者学习、使用和分享代码。

    • Rust 语言很早就实现了自举,方便学习者通过阅读源码了解其内部机制,甚至参与贡献。

    • Rust 核心团队一直在不断改进 Rust,致力于提升 Rust 的友好度,极力降低初学者的心智负担,减缓学习曲线。比如引入 NLL 特性来改进借用检查系统,使得开发者可以编写更加符合直觉的代码。

    • 虽然从 Haskell 那里借鉴了很多类型系统相关的内容,但是 Rust 团队在设计和宣传语言特性的时候,会特意地去学术化,让 Rust 的概念更加亲民。

    • 在类型系统基础上提供了混合编程范式的支持,提供了强大而简洁的抽象表达能力,极大地提升了开发者的开发效率。

    • 提供更加严格且智能的编译器。基于类型系统,编译器可以严格地检查代码中隐藏的问题。Rust 官方团队还在不断优化编译器的诊断信息,使得开发者可以更加轻松地定位错误,并快速理解错误发生的原因。

    Rust 从 2006 年诞生之日开始,目标就很明确——追求安全、并发和高性能的现代系统级编程语言。为了达成这一目标,Rust 语言遵循着内存安全、零成本抽象和实用性三大设计哲学。借助现代化的类型系统,赋予了 Rust 语言高级的抽象表达能力,与此同时又保留了对底层的控制能力。开发者和 Rust 编译器共享着同一套“心智模型”,相互信任,相互协作,最大化地保证系统的安全和健壮性。Rust 语言有别于传统语言的另一点在于,它将开源社区视为语言的一部分。Rust 本身就是开源项目中的典范,非常值得学习。

    有人把 Rust 称为”The New C“,我十分认同,Rust 是开启新时代的语言。但 Rust 可能不像其他语言那样,突然冒出一个杀手级应用来引领某个领域的一段潮流。Rust 改变世界的方式,正好可以用古人的诗词来形容,”好雨知时节,当春乃发生。随风潜入夜,润物细无声“。

    Rust 语言不是银弹,它也不追求完美,它只是在由 C 和 C++ 构建的旧世界之上,寻求更好的问题解决之道。

    所以,你准备好学习 Rust 了吗?

    内容来源于网络&《Rust 编程之道》

    技术交流群

    加入阿里云钉钉群享福利:每周技术直播,定期群内有奖活动、大咖问答

    image

    2020-01-13 14:23:31
    赞同 展开评论 打赏
  • 相关详细内容参考:https://www.infoq.cn/article/iZx5Blf9hOeZjRguHzK5

    C 写 driver 的主要缺陷在于 C 赋予程序员的自由度过大,所谓能力越大责任越大,程序员需要小心处理各种细节以保证 driver 的安全。在一些情况下,程序员容易因为疏忽大意写出不安全的代码。例如申请的内存忘记释放(内存泄漏),使用了已经被释放的指针(use-after-free),数组越界访问(buffer overflow)等等。这些错误大多归因为 C 是一门不安全的语言。

    前段时间,随着微软计划用 Rust 取代 C 和 C++ 新闻的曝出,Rust 被认为是 C/C++ 的接班人。由 Mozilla 开发的 Rust 被认为具有较强的安全性。同时,由于特殊的类型系统,Rust 不需要垃圾收集,也被认为是高效的。Rust 程序运行速度极快,可防止段错误并保证线程安全。这些属性使该语言极大地吸引了专注于应用程序安全性的开发人员。香港中文大学系统安全系博士李卓华指出,Rust 主要通过严格的语法和安全检查来限制程序员,“逼迫”程序员写出更安全的代码。例如 Rust 的 ownership 特性保证任何时刻,一个对象最多只有一个可变引用,且在其生命期结束后编译器会自动将其内存释放,从而避免了内存泄漏和 use-after-free 的问题

    2020-01-13 14:19:55
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
基于JVM的脚本语言开发、运用实践 立即下载
Swift在Airbnb的应用实践 立即下载
复杂升学环境下的语言交互:技术与实践 立即下载