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

到此这篇关于Rust 能够取代 C 语言吗的文章就介绍到这了,更多相关Rust C 语言内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • rustysun同学ASP代码书写规范

    ASP源程序书写规范 1       规范简介 本规范主要规定ASP源程序在书写过程中所应遵循的规则及注意事项.编写该规范的目的是使项目开发人员的源代码书写习惯保持一致.这样做可以使每一个组员都可以理解其它组员的代码,以便于源代码的二次开发记忆系统的维护. 2       一般格式规范 2.1       缩进 缩进就是在当源程序的级改变时为增加可读性而露出的两个空格.缩进的规则为每一级缩进四个空格.不准许使用Tab.因为Tab会因为用户所作的设置不同而产生不同的效果(如果习惯使用空格的话,可以

  • you *might* want to use the less safe log_bin_trust_function_creators variable

    恢复MySQL数据库创建存储过程是遇到错误 you *might* want to use the less safe log_bin_trust_function_creators variable 需要执行 SET GLOBAL log_bin_trust_function_creators = 1;

  • python实现上传样本到virustotal并查询扫描信息的方法

    本文实例讲述了python实现上传样本到virustotal并查询扫描信息的方法.分享给大家供大家参考.具体方法如下: import simplejson import urllib import urllib2 import os MD5 = "5248f774d2ee0a10936d0b1dc89107f1" MD5 = "12fa5fb74201d9b6a14f63fbf9a81ff6" #do not have report on virustotal.co

  • IntelliJ安装并使用Rust IDE插件

    Rust 是一个由Mozilla主导开发的通用编译型编译语言.它的设计准则为"安全,并发,实用",支持函数式,并发式,过程式以及面向对象的编程风格. Rust插件的主要特性如下: 导航特性:Go to Class.Go to Symbol.Go to Super Module.Structure.Go to Definition. 编辑器特性:代码自动完成.格式化(计划支持rustfmt).合并行.智能按键(如自动插入匹配的符号).自动填充后缀.基本的Intention和重构(如引入变

  • python实现封装得到virustotal扫描结果

    本文实例讲述了python实现封装得到virustotal扫描结果的方法.分享给大家供大家参考.具体方法如下: import simplejson import urllib import urllib2 import os, sys import logging try: import sqlite3 except ImportError: sys.stderr.write("ERROR: Unable to locate Python SQLite3 module. " \ &qu

  • 完美解决node.js中使用https请求报CERT_UNTRUSTED的问题

    只要调用了没有受信的https就会报错:CERT_UNTRUSTED 简单的解决方法就是设置环境变量回避非授信证书的问题. 只要在请求的代码之前加上如下代码即可: process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0"; 结束!!! 以上就是小编为大家带来的完美解决node.js中使用https请求报CERT_UNTRUSTED的问题全部内容了,希望大家多多支持我们~

  • Rust 能够取代 C 语言吗

    Rust 是 Mozilla 基金会的一个雄心勃勃的项目,号称是 C 语言和 C++ 的继任者.一直以来,C/C++ 中的一些基本问题都没能得到解决,比如分段错误.手动内存管理.内存泄漏风险和不可预测的编译器行为.Rust 的诞生就是为了解决这些问题,并提高安全性和性能. Evrone(一家软件公司)在很多项目中使用了 Rust,我们的工程师们这方面在积累了丰富的经验.在这篇文章中,我们将分享 Rust 的一些主要特性. 主要特性 强静态类型:无垃圾回收以及通过指针手动控制数据存储位置的能力:强

  • Rust应用调用C语言动态库的操作方法

    目录 外部功能接口FFI UDP套接字的读超时 Rust调用C语言动态库中的函数 避免重复造轮子,使用Rust官方C语言库 外部功能接口FFI 虽然高级(脚本)编程语言的功能丰富,表达能力强,但对底层的一些特殊操作的支持并不完善,就需要以其他编程语言来实现.调用其他编程语言的接口,被称为Foreign Function Interface,直译为外部功能接口.该接口通常是调用C语言实现的外部功能模块,因为C语言接近于全能,几乎任何功能都能够实现:正如同使用汇编语言也可以实现很多功能一样,但开发效

  • 如何使用bindgen将C语言头文件转换为Rust接口代码

    目录 Rust语言调用C语言接口 Rust语言将字符串转换为整型 编写build.rs自动化编译外部模块 简单的C语言头文件 Rust语言调用C语言接口 嵌入式系统层及应用层的软件开发,离不开C语言.笔者希望使用一种高效.稳定的开发语言,在一定程度上替代C语言,从而提高开发效率.降低嵌入式软件的扩展.维护成本,同时缩小研发团队规模.Rust编程语言很好地满足了高效.稳定这两个要求.不过需要在一定程度解决Rust调用外部C语言模块的问题:Rust语言已提供了完善的解决方案,笔者希望通过本文做一个必

  • Rust 搭建一个小程序运行环境的方法详解

    目录 从零到一:构建一个能运行小程序的App FinClip 安全沙箱的初始化 获得 SDK Key 以及 SDK Secret 的两种方式 方式一:采用 FinClip.com 托管服务 方式二:自行部署 FinClip 社区版 FinClip SDK 在 App 中的初始化 Rust 开发环境的准备 Rust 代码编译成 iOS 静态库的验证 搭建一个FinClip社区版docker运行环境,安装设置Rust开发编译iOS代码的环境,设置xcode的项目配合,集成FinClip SDK,准备

  • 一文带你了解Rust是如何处理错误的

    目录 异常的演进 错误和异常 不可恢复的错误 可恢复的错误 自定义错误和问号表达式 小结 异常的演进 程序在运行的过程中,总是会不可避免地产生错误,而如何优雅地解决错误,也是语言的设计哲学之一.那么现有的主流语言是怎么处理错误的呢?比如调用一个函数,如果函数执行的时候出错了,那么该怎么处理呢. C 语言 C 是一门古老的语言,通常会以指针作为参数,在函数内部进行解引用,修改指针指向的值.然后用 1 和 0 代表返回值,如果返回 1,则表示修改成功:返回 0,表示修改失败. 但这种做法有一个缺陷,

  • 深入学习java中的Groovy 和 Scala 类

    前言 Java 传承的是平台,而不是语言.有超过 200 种语言可以在 JVM 上运行,它们之中不可避免地会有一种语言最终将取代 Java 语言,成为编写 JVM 程序的最佳方式.本系列将探讨三种下一代 JVM 语言:Groovy.Scala 和 Clojure,比较并对比新的功能和范例,让 Java 开发人员对自己近期的未来发展有大体的认识. Java 语言的开发人员精通 C++ 和其他语言,包括多继承(multiple inheritance),使得类可以继承自任意数量的父类.多继承带来的一

  • 浅谈C++ IO流

    1.输入输出(IO)与流的概念 输入输出(IO)是指计算机同任何外部设备之间的数据传递.常见的输入输出设备有文件.键盘.打印机.屏幕等.数据可以按记录(或称数据块)的方式传递,也可以 流的方式传递. 所谓记录,是指有着内部结构的数据块.记录内部除了有需要处理的实际数据之外,还可能包含附加信息,这些附加信息通常是对本记录数据的描述. 流是一种抽象概念,它代表了数据的无结构化传递.按照流的方式进行输入输出,数据被当成无结构的字节序或字符序列.从流中取得数据的操作称为提取操作,而向流中添加数据的操作称

  • Java基础之面向对象机制(多态、继承)底层实现

    一.Java的前世 为什么会产生Java?Java的特点是什么? 从C语言开始讲,C语言是一种结构化语言,模块化编程,便于程序的调试,依靠非常全面的运算符和多样的数据类型,可以轻易完成各种数据结构的构建,通过指针类型更可对内存直接寻址以及对硬件进行直接操作,因此既能够用于开发系统程序,也可用于开发应用软件.其缺点就是封装性弱,程序的安全性上不是很好.C语言的异常处理一般使用setjmp()与longjmp(),在捕获到异常时进行跳转:或者使用abort()和exit()两个函数,强行终止程序的运

  • Python一文入门Flask Blueprint SQLAlchemy部分详解

    目录 概述 安装准备 pipenv 开始实践 入口文件 路由 优化路由器 SQLAlchemy database类的定义 入口文件加载DB 模块中定义方法 在路由中的使用 SQLAlchemy实现mysql编码.列类型 默认值和索引设置 兼容Mysql列类型 自定义数据库名和字符集编码 概述 从安装Flask,pipenv 到路由实现,Blueprint.SQLAlchemy,一次简单实践,github地址,github.com/stark0824/s… 安装准备 python3 -V &&

  • 为什么要使用 Rust 语言、Rust 语言有什么优势

    Rust 是一种采用过去的知识解决将来的问题的技术.” ——Graydon Hoare Rust 是一种快速.高并发.安全且具有授权性的编程语言,最初由 Graydon Hoare 于2006 年创造和发布.现在它是一种开源语言,主要由 Mozilla 团队和许多开源社区成员共同维护和开发. 虽然 Rust 是一种通用的多范式语言,但它的目标是 C 和 C++占主导地位的系统编程领域.这意味着你可以使用 Rust 编写操作系统.游戏引擎和许多性能关键型应用程序.同时,它还具有足够的表现力,你可以

随机推荐