东亚银行、岚图汽车带你解锁 AIGC 时代的数字化人才培养各赛道新模式! 了解详情
写点什么

Rust 能够取代 C 语言吗?

  • 2020-04-20
  • 本文字数:1619 字

    阅读完需:约 5 分钟

Rust能够取代C语言吗?

Rust 是 Mozilla 基金会的一个雄心勃勃的项目,号称是 C 语言和 C++ 的继任者。一直以来,C/C++ 中的一些基本问题都没能得到解决,比如分段错误、手动内存管理、内存泄漏风险和不可预测的编译器行为。Rust 的诞生就是为了解决这些问题,并提高安全性和性能。


Evrone(一家软件公司)在很多项目中使用了 Rust,我们的工程师们这方面在积累了丰富的经验。在这篇文章中,我们将分享 Rust 的一些主要特性。


主要特性


  • 强静态类型;

  • 无垃圾回收以及通过指针手动控制数据存储位置的能力;

  • 强大的内置静态代码分析器,有助于避免与内存管理和多线程相关的问题;

  • C 语言风格的语法,具有简短的关键字。


Rust 简史

Graydon Hore 于 2008 年发起 Rust 项目。2009 年,Mozilla 表达了对这个项目的兴趣。一年之后,项目正式公开。2012 年,Rust 的第一个 alpha 版本发布。一年后,Servo Web 引擎(基于 Rust)开发人员宣布,他们得到了三星公司的支持,将引擎移植到 ARM 架构。


Rust 1.0 于 2015 年 5 月发布。同年,Rust 在 Stack Overflow 发布的最受欢迎开发工具排行榜中排名第三。从 2016 年至今,Rust 一直高居榜首。


为什么要使用 Rust

优点

  • 统一的编译器,提供了一个内置的包生成器和管理器、测试系统和文档生成器;

  • 安全的内存管理,有助于避免分段错误;

  • 抽象能力,让手动内存管理变得更容易;

  • 提供了常见的编译错误修复建议;

  • 只能在非安全代码中使用指针——安全代码中只包括指向确切存在的对象的链接;

  • 与 Mac 和 Unix 家族系统具有良好的兼容性。

不足

  • 没有类和继承机制,难以编写面向对象的代码;

  • 编译器太过严格,有时候对内存地址的限制过多。


Rust 的使用场景

Rust 支持主要的编程范式:面向对象编程、并发编程、函数式编程和过程编程。它提供了足够的内存管理能力,同时又足够安全,让它成为操作系统和关键应用程序的开发工具。它的主要缺点是硬件厂商对它支持不够,厂商更喜欢使用 C/C++。下面是一些使用 Rust 开发的软件项目:


  • Redox,一个基于微内核的 Unix 家族操作系统,该操作系统中的大部分软件也是使用 Rust 开发的;

  • Servo,多线程 Web 引擎;

  • Firecracker,用于无服务器环境的微虚拟化系统。

使用 Rust 开发的区块链系统

基于分布式账本的系统必须能够以最小的设备计算负载快速地处理请求。C++ 非常适合用来完成这项任务,而使用 Rust 开发区块链系统将会更加高效。下面这些都是值得关注的案例:


  • Parity.io——以太坊和比特币的一个客户端;

  • Polkadot.network——异构区块链网络;

  • Exonum,一个基于区块链的项目框架;

  • MaidSafe,一个分布式数据处理和存储系统;

  • Solana,一个用于开发 Web 区块链应用程序的平台。


Rust 可以用来开发 Web 项目:Rust 的 SDK 可用于前端和后端开发。例如,使用 Yew(灵感源自 React 和 Angular)开发客户端,使用 Actix-web(一个高性能框架,支持 WebSockets、TLS 和 HTTP/2.0)开发 Web 服务器。


其他工具还包括:rocket、conduit、gotham、pencil。

一些成功的 Rust 项目

  • Dropbox,一种云存储服务;OpenDNS,一种用于创建公共 DNS 服务器的 Web 服务;

  • Coursera,由斯坦福大学 IT 教授创建的教育门户网站;

  • 使用 Rust 开发的机器学习项目。


使用 Rust 开发的神经网络似乎非常有前景。因为 Rust 的高性能和底层内存控制能力,Rust API 可以成为神经网络领域非常流行的开发工具。


但目前使用 Rust 开发机器学习应用还处于实验阶段,Rust 生态系统还缺少可用于开发类似 Python 神经网络的库。

Rust 的未来

C++ 已经统治了编程语言领域近 40 年,成为了一个行业标准,并保持这个头衔至今。Rust 正在积极演进,试图解决 C++ 和其他编程语言当中最为致命的缺陷。


在 Evrone,我们使用 Rust 开发了一个大型的连锁餐厅 ERP 系统。其中微服务部分使用 Rust 开发,为用户提供离他们最近的餐厅的数据。


Rust 的另一个应用——也就是我们的持续集成服务 Vexor。在这个服务中,Rust 负责任务的管理和调度以及日志管理,并作为任务隔离执行代理的基础。

英文原文

Why Rust is Meant to Replace C


2020-04-20 09:1818510
用户头像
小智 让所有人认同的文字称不上表达

发布了 408 篇内容, 共 377.1 次阅读, 收获喜欢 1972 次。

关注

评论 8 条评论

发布
用户头像
感觉很有前景,可以学习下
2020-04-25 18:56
回复
用户头像
Linux 内核会用 Rust 重写吗?我觉得不会。
2020-04-20 17:31
回复
不会,他们重新写了一个类unix系统,不取代linux哈哈哈哈哈哈哈
2020-04-25 20:35
回复
用户头像
标题是“Rust 能够取代 C 语言吗?”,也没回答这个问题的意思啊
2020-04-20 10:22
回复
英文标题的意思是Rust生来就是为了取代C语言,我们在翻译过来之后选择对这个标题作了处理,这样不会过于让读者反感,而是去思考下是否存在这个可能,以及Rust的发展前景。
2020-04-20 10:52
回复
曲解过头了, 可以换个委婉的说法, 但应直观保留原本的意思, 比如 "Rust 想要取代 C 语言" 之类的, 译者子的想法可以在译文中加上"译者注:..."
2021-03-15 13:49
回复
用户头像
在最后举例用rust写业务,没有Java、PHP等方便吧
2020-04-20 10:02
回复
生态的建立需要一个时间过程,目前看Rust最大的优势在于有很多大公司在推动它的应用。
2020-04-20 10:50
回复
没有更多了
发现更多内容

抖音四面被拒,再战头条终获offer!凭什么我可以做到,2021最新Android笔试题及答案

android 程序员 移动开发

揭秘:如何化身BAT面试offer收割机?,androidapp内存优化

android 程序员 移动开发

支付宝 App 构建优化解析:Android 包大小极致压缩,android界面开发实验报告

android 程序员 移动开发

手把手教你打通车载蓝牙与手机app的音频信息传输&车载反向控制手机app

android 程序员 移动开发

把Flutter扩展到微信小程序端的探索,安卓面试题库

android 程序员 移动开发

换肤、全局字体替换、无需编写shape,Android程序员月薪20k的涨薪秘籍

android 程序员 移动开发

插件化框架解读之Class文件与Dex文件的结构(一),android软件开发教程第二版电子版

android 程序员 移动开发

数据结构算法---红黑树,这可能是我看过红黑树讲的最好的文章。

android 程序员 移动开发

换个姿势,带着问题深入学习Handler,手撕吊打面试官,kotlin单例firbase

android 程序员 移动开发

接地气的面试记录:记一次Android面试心得,retrofit教程

android 程序员 移动开发

扒一扒:2020台湾Android-Kotlin-&-Java-面試題庫,竟如此--

android 程序员 移动开发

拿不到想要的offer,只缘身在CV中,关于一些面试小知识,Android开发人员不得不收集的代码

android 程序员 移动开发

接地气的面试记录:记一次Android面试心得(1),详细的Android学习指南

android 程序员 移动开发

插件化框架解读之四大组件调用原理-Activity(三)上篇

android 程序员 移动开发

支付宝 App 构建优化解析:Android 包大小极致压缩(1),阿里P8亲自讲解

android 程序员 移动开发

普通Android码农,该如何逆袭月薪-5W-的移动端架构师?

android 程序员 移动开发

拖不得了,Android11真的要来了,最全适配实践指南奉上

android 程序员 移动开发

数据结构与算法回顾-1:算法的度量和基本数据结构,近期有面试的必看

android 程序员 移动开发

新鲜出炉的Android“面筋”,kotlininline函数

android 程序员 移动开发

搞Android开发为什么这么难?想哭了!,vue双向绑定

android 程序员 移动开发

新手必看,避免踩雷---一篇文带你吃透Android开发的所有必备考点,轻松拿offer

android 程序员 移动开发

新来的小师妹问我:哥,有哪些是新手程序员不知道的小技巧

android 程序员 移动开发

是让人-提神醒脑-的-MVP、MVVM-关系精讲!,2021最新Android开发面试解答

android 程序员 移动开发

最新Android面试题整理,移动端h5页面适配

android 程序员 移动开发

手把手讲解-一个复杂动效的自定义绘制,2021Android开发社招面试总结

android 程序员 移动开发

掌握了这些Android高级工程师必备知识后,他拿到了 BAT Offer

android 程序员 移动开发

揭秘!大厂招聘内幕!如何才能进大厂,Android技术类校招面试题汇总

android 程序员 移动开发

数据结构(一), BST 二叉搜索树,高级程序员面试题

android 程序员 移动开发

打造一个完整的Flutter-APP项目!,安卓高级开发面试题

android 程序员 移动开发

数据结构(一), BST 二叉搜索树(1),app可视化开发工具

android 程序员 移动开发

文件数据储存之内部储存,移动端开发技术创新

android 程序员 移动开发

Rust能够取代C语言吗?_编程语言_Evrone_InfoQ精选文章