写点什么

专访 Rust——由 Mozilla 开发的系统编程语言

  • 2012-10-08
  • 本文字数:2553 字

    阅读完需:约 8 分钟

Rust 是由 Mozilla 开发的专门用来编写高性能应用程序的系统编程语言。以下是对 Rust 的创始人——Graydon Hoare 的采访。

Graydon Hoare ,自称为职业编程语言工程师,从 2006 年开始开发名为 Rust 的程序语言。Mozilla 对这门新的编程语言非常感兴趣,并专门成立了一个团队来继续它的开发,而且还将它运用在了实验项目 Servo Parallel Browser Project 中。

Rust 是一门系统编程语言,专门用来编写以往都是由 C 或者 C++ 编写的高性能程序,但 C 和 C++ 都非常容易出现类似无效内存访问(segmentation faults )并由此引发的一系列相关的问题,而 Rust 的出现就是用来避免类似问题的发生。虽然 Rust 的语法跟 C 非常的相似,但是它们之间还是存在很大的不同,以下就列出 Rust 的一些重要特性

  • 模式匹配和代数型的数据类型(枚举)
  • 基于任务的并发性。轻量级的任务都可以在不共享内存的情况下并发运行。
  • 高阶函数(闭包)
  • 多态性,结合类似 Java 的接口特性和 Haskell 的类类型。
  • 泛型
  • 没有缓冲区溢出
  • 默认情况下不可变
  • 非阻塞的垃圾收集器

Mozilla 最近发布了 Rust 的最新 Alpha 版,并且公布了规划中即将实现的新特性。 InfoQ 与Hoare 进行了详细的交流以便能够更多的了解Rust。

InfoQ:我知道你是从 2006 年开始开发 Rust 的,能跟我们稍微谈谈 Rust 是如何开始并且一步步走到今天的吗?

GH:我是一名职业的编程语言工程师,通常这意味着我都是在给其他的语言开发编译器和工具集,而这些语言我并没有参与任何的设计工作。自然而然,这样的一种境遇就会导致我萌生开发一种属于我自己语言的想法。我确实这么干也有一段时间了,最终我下定决心向我的项目经理展示了我业余时间的一个工作成果。Mozilla 对我的工作成果非常感兴趣,还专门成立了一个团队来继续开发该语言,并且还将它作为浏览器堆栈重构长期项目的一部分,希望它能比 C++ 提供更好的并发性,安全性和易用性。这个庞大的项目名为 servo。正是基于上述原因,Mozilla 才会大力支持 Rust 的开发。

现在的进展是在 2010 年我们发布了一个引导程序编译器,并且在去年将它升级为自托管的编译器,而且我们刚刚完成了第二代编译器的第三个 alpha 版。我们会严格按照 alpha 版,beta 版到稳定版的步骤一步步执行,我们会持之以恒的对它提供支持直到它成为正式的产品,并且还会提供后续的服务。与此同时,servo 项目已成为我们所热衷的工作,因为只有在开发编译器的时候我们才能做回自己。

InfoQ:为什么选择开发一门新的语言?

GH:因为其他语言中那些为我们所熟悉和热爱的优秀特性并不能使它们成为一门被广泛应用的系统语言,并且那些部署在语言中的内存模型也是十分简易(不安全,非并发)的。在 70 年代末 80 年代初时,涌现出了一批非常优秀的竞争者,我想重新实现它们所拥有的优秀特性,因为从理论上来讲,情况已经发生了改变:互联网是高度关注安全性和并发性的,所以以前那些青睐于 C 和 C++ 的设计方式正在不断的发生改变。

InfoQ:为什么 Rust 跟 C 息息相关,而不是 Java 或者其他语言呢?

GH:纵观周围,大部分堆栈级的系统代码都是用 C 或者 C++ 编写的,而那正是我们的目标所在。

InfoQ:是什么使它比 C 更优秀呢?

GH:首先,它更加安全,更不容易崩溃。如果你是要做一些非内存安全的操作,那么这就显得尤为重要了。我们不会像那些完整的垃圾回收系统一样在内存安全方面为你增加大量的负担。其他还有一些重要的特性也值得一提:内存模块可以转换成安全的并发模块,而且我们也对以下特性提供了良好的支持:闭包、特性、命名空间、析构函数、Unicode,类型推断、不变的内存、不相交的集合等等。

InfoQ:Rust 跟 google 的 go 比起来怎么样?

GH:Go 是一门很好的语言。它比 Rust 要简单一些,因此功能上也会欠缺一些。你可以选择你所喜好的语言。比如,Go 的内存模块就没有隔离协同例程和进程间内存的概念,也没有控制突变性的概念。Go 的所有任务都是运行在同一个全局可变的堆栈中的。同样的,它只有一种类型的指针,该指针可以一直为空,所有协程里的任何指针都是由全局唯一的垃圾回收器来管理的。而 Rust 在这些方面却截然不同,它将内存和指针分成不同的类型,这就意味着我们能够更好地解决安全和性能的问题,但同时带来的代价就是程序员在这方面就要花更多的心思。Rust 还提供一些 Go 所没有的额外特性:如类属性、析构函数、不相交的集合等等。但值得赞扬的是,Go 对他本身的特性进行了许多的改进,我很高兴 Go 在这方面也取得了一定的进展。

InfoQ:Rust 的主要特性是什么?

GH:我上面已经提到了很多,但是我不认为一门程序语言应仅仅只拥有一个主要特性,它应该是一系列类似特性广泛而一致的组合,而这些特性之间可以很好的相互协作,从而使该语言更容易编写、维护和调试,让程序员可以写出更安全,高效的代码。这就是我们的目标,也是一个宏伟的目标。如果一门语言只是在某一方面比较成功的话,那它也就离失败不远了。

InfoQ:开发者们为什么要选择 Rust 呢?

GH:我们的目标人群就是那些纠结的 C++ 程序员。实际上就是我们自己。如果你也和我们一样,不断重复的迫使自己因为 C++ 的高效和部署特性而选择它来进行系统级的开发,却又希望可以编写一些更加安全而省心的程序的话,希望我们可以给你一些帮助。

InfoQ:1.0 版本计划何时发布?

GH:在我们的 wiki 上有相关的发布路线图。当它完成(确保它不再需要添加新的特性)的时候我们就可以称它为 1.0 版了。我想应该是在明年的某个时候吧,毕竟我仅仅是团队中的一员而已,而且我们都知道给软件开发安排进度是一件多么困难的事,即使我们是在做一件极其简单的事情,也不能简简单单的就可以给出一个计划。

值得一提的是这是一个 MIT 授权的工作,所以任何人都可以随时随心所欲的参与到我们的工作中来的,无论是建立分支还是增加或修改代码。你也可以及时看到我们的工作进展,在 github,邮件列表,IRC 服务,wiki 和存档上它们全都是公开的。我们非常欢迎大家对我们现在的工作提出宝贵和建设性的意见。

查看英文原文: Interview on Rust, a Systems Programming Language Developed by Mozilla


感谢贾国清对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2012-10-08 06:2210918
用户头像

发布了 31 篇内容, 共 93757 次阅读, 收获喜欢 1 次。

关注

评论

发布
暂无评论
发现更多内容

有小程序还没有App?试试用小程序转App功能

Speedoooo

APP开发 移动端开发 小程序转app

【分享汇总】25个主题分享,360°领略OpenHarmony最新技术版图

OpenHarmony开发者

OpenHarmony

无人自助洗车机多少钱一台?不是自动

共享电单车厂家

自助洗车机多少钱 自助洗车加盟 无人自助洗车机

想开一家24小时的自助洗车店要多少钱

共享电单车厂家

自助洗车机多少钱 24小时自助洗车店 开自助洗车店多少钱

模块二作业

Dean.Zhang

架构实战营

恒源云(Gpushare)_FAIR CVPR2022新作DVT是个啥?

恒源云

深度学习 CV transform

FAQ是什么?如何高效地创建一个好的FAQ页面?

小炮

FAQ

机票报价高并发实施的关键路径

Qunar技术沙龙

高并发 后端技术

24小时无人洗车加盟!就自助洗车加盟

共享电单车厂家

自助洗车机多少钱 自助洗车加盟 24小时无人洗车加盟

6元自助洗车怎么样?想加盟自助洗车

共享电单车厂家

自助洗车加盟 6元自助洗车 自助洗车怎么样

Reactor实现http服务器,附完整代码

Linux服务器开发

后台开发 reactor HTTP Linux服务器开发 服务端开发

艾瑞咨询:2022年隐私计算卓越者——洞见科技

洞见科技

隐私计算 数据智能解决方案

首届物联网数据基础设施案例大赛结果出炉,与 EMQ 和英特尔共同见证物联网的无限可能

EMQ映云科技

物联网 IoT intel emq

云效多云视角团队协作方式,让团队协作更高效

阿里云云效

阿里云 项目管理 运维 研发管理 团队协作

等了15年,这本豆瓣评分高达9.3的编程巨著终于出版了!

图灵教育

数字人民币试点扩大,市场化问题如何解决?

CECBC

InfoQ专访龙蜥社区陈绪:从CentOS 停服说起,龙蜥操作系统的开源观

OpenAnolis小助手

centos 开源 操作系统 开放原子开源基金会 龙蜥社区

“转型·破局” 看数字化会员如何重塑企业竞争力

科技热闻

为什么要选择Web3?它有什么好处?

CECBC

2022年中国低延时技术市场洞察

易观分析

低延时

2022春季校园招聘·复旦站,即将开启~

非凸科技

TDesign 更新周报(2022年4月第2周)

TDesign

远程代码执行漏洞复现分析

网络安全学海

网络安全 信息安全 渗透测试 WEB安全 漏洞挖掘

云原生虚拟化的最佳拍档:Kube-OVN + KubeVirt 【附有奖调研】

York

Kubernetes 云原生 网络性能 云原生网络 网络虚拟化

华为与OpenInfra基金会十年共筑开源基础设施平台

科技热闻

解读谷歌 Pathways 架构(二):向前一步是 OneFlow

OneFlow

人工智能 机器学习 深度学习 深度学习框架 谷歌

为什么领导不喜欢提拔老实人?

方云AI研发绩效

团队管理 研发管理 数字化转型 职场 PUA 职场发展

小波从此逝,江海寄余生,不但是文坛巨擘还是不世出的编程奇才,王小波离世25周年

刘悦的技术博客

编码习惯 编码 代码 编程、 编码规范

免费训练营限时抢报|大咖带你玩转PolarDB for PostgreSQL开源训练营

阿里云数据库开源

数据库 postgresql 开源 阿里云; polarDB

自助洗车设备全套多少钱?有了解的吗

共享电单车厂家

自助洗车机价格 自助洗车加盟 自助洗车设备多少钱

我们两周岁啦!InfoQ写作平台正式升级为InfoQ写作社区

InfoQ写作社区官方

热门活动 InfoQ写作社区2周年

专访Rust——由Mozilla开发的系统编程语言_编程语言_Abel Avram_InfoQ精选文章