【AICon】AI 基础设施、LLM运维、大模型训练与推理,一场会议,全方位涵盖! >>> 了解详情
写点什么

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:1818518
用户头像
小智 让所有人认同的文字称不上表达

发布了 408 篇内容, 共 377.9 次阅读, 收获喜欢 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
回复
没有更多了
发现更多内容

用 nodejs 搭建脚手架

coder2028

node.js

手写vue-router核心原理

hellocoder2029

JavaScript

1业务架构作业

梁山伯

《中国指标中台市场研究报告》线上发布会

Kyligence

数据分析 指标中台

2023年北京企业办理备案流程详解

行云管家

等保 等保备案 北京

阿里p8私藏MyBatis笔记,从入门到精通,纵享源码细节

钟奕礼

Java 程序员 java面试 java编程

Webpack插件核心原理

Geek_02d948

webpack

上帝视角一览大数据开发体系

JAVA旭阳

Java 大数据

细说JavaScript闭包

hellocoder2029

JavaScript

web技术分享| 图片上传与图片裁剪结合 vue3

anyRTC开发者

Vue 前端 Web 图片上传 图片裁剪

Jvm上如何运行其他语言?JSR223规范最详细讲解

架构师之道

Java JVM

Webpack中的高级特性

Geek_02d948

webpack

不知如何优选达人?火山引擎VeDI零售行业解决方案一键解决!

字节跳动数据平台

大数据 数据分析 营销 12 月 PK 榜

还在写代码处理映射关系? 动动手指,MatrixDB 4.4 轻松让 JSON 入表!

YMatrix 超融合数据库

kafka 产品发布 超融合数据库 YMatrix MatrixGate

阿里技术官珍藏JVM全优笔记,细节满分,吃透写精通没问题

钟奕礼

Java 程序员 java面试 java编程

我服了!腾讯专家手敲《Redis源码日志笔记》,字字如金

钟奕礼

Java 程序员 java面试 java编程

惊喜!Alibaba架构师手写《Java一无所知到精通》文档

钟奕礼

Java 程序员 java面试 java编程

面试阿里P6,却被MySQL难倒,二战阿里,挤进天猫团队(Java岗)

钟奕礼

Java 程序员 java面试 java编程

Vue3知识点之数据侦测

yyds2026

Vue

ha集群是什么意思?一般有几个节点?

行云管家

高可用 ha ha集群

理解Nodejs中的进程间通信

coder2028

node.js

龙蜥大讲堂12月预告来了!来自统信软件、移动云和浪潮信息等多位技术专家在线分享

OpenAnolis小助手

ebpf 移动云 龙蜥大讲堂 直播预告 统信软件

Webpack完整打包流程分析

Geek_02d948

webpack

彻底搞懂JS原型与原型链

hellocoder2029

JavaScript

Java语言标识符的命名规范(超详细讲解)

千锋IT教育

Vue3必会技巧-自定义Hooks

yyds2026

Vue

Java程序员开发3年如何能拿到年薪40W?(强烈推荐涨薪必备)

钟奕礼

Java 程序员 java面试 java编程

2022年11月国产数据库大事记-墨天轮

墨天轮

数据库 tdsql 国产数据库 达梦 polarDB

模块一

GeekMLS

构架

5年经验年薪百万,一位阿里P8分享自己的成长干货

钟奕礼

Java java面试 java编程 程序员、

理解NodeJS多进程

coder2028

node.js

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