写点什么

专访 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:2211194
用户头像

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

关注

评论

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

案例宝公众号管理系统:全行业客户案例管理神器,高效转化成交好帮手

微擎应用市场

蚂蚁数科跻身中国AI智能体开发平台“领导者”阵营

Lily

cURL 8.17.0 发布:安全修复、功能变更与未来展望

qife122

curl 开源软件

非凸科技与九方智投达成战略合作,携手赋能广大投资者

非凸科技

骁龙大赛技术分享第4期来了——直播问题&答疑整理

极市平台

《独立开发者精选工具》第 023 期

Immerse

光伏策略控制服务器是什么?核心功能与系统定位详解

西格电力

分布式光伏并网 分布式光伏发电 分布式光伏 分布式光伏产品 光伏策略控制服务器

「开发者扶持计划」正式上线,MemOS 云平台全面免费!

记忆张量MemTensor

MemOS 记忆管理 记忆张量

CAD图纸如何批量打印?CAD批量打印教程来了

在路上

cad cad看图 CAD看图王

转卖分佣商城小程序系统:一站式移动营销解决方案

微擎应用市场

当销售额下降时,ChatBI 如何实现多维下钻、归因分析?

Aloudata

数据分析 归因分析 ChatBI 智能问数 dataagent

低代码助力企业协同办公:不止降本增效,更是增长新引擎!

天津汇柏科技有限公司

海外平台推广算法解读:如何让平台算法为你精准推送流量

Wolink

跨境电商 海外社媒营销 海外营销推广 海外推广 海外红人营销

创新服务模式探索:海外网红营销服务公司的转型升级趋势

Wolink

跨境电商 电商营销 海外社媒营销 海外营销推广 海外红人营销

如何运用 Scrum 打造一个高绩效的团队

ShineScrum

Scrum 高绩效团队

harmonyos 大屏设备怎么弹出 u 盘

lichong951

总奖金超40万!高德空间智能开发者大赛开启报名和作品提交通道

高德开放平台

星畅家政小程序系统:一站式家政服务数字化解决方案

微擎应用市场

鸿蒙手机打开开发者模式

lichong951

HarmonyOS HarmonyOS NEXT

CAD图纸闪退、打不开?快来试试CAD图纸清理?

在路上

cad cad看图 CAD看图王

RelativeLayout 根布局里有一个子布局预期一直展示,但子布局RelativeLayout被 覆盖了

lichong951

android Android Studio

数据交换机案例详解|基于smardaten实现智慧园区数据处理与分析

数睿数据

智慧园区 smardaten 数睿数据

2026年KOL营销新趋势:AI技术如何改变品牌合作模式

Wolink

跨境电商 海外社媒营销 海外营销推广 海外红人营销 品牌推广

KOL营销ROI提升秘籍:5个关键指标衡量投资回报率

Wolink

跨境贸易 出海 海外社媒营销 海外营销推广 海外红人营销

SSL证书申请与安装全攻略:关键注意事项深度解析

防火墙后吃泡面

品牌出海战略解码:从中国品牌到全球品牌的进化路径

Wolink

跨境电商 品牌营销 出海企业 品牌出海 品牌推广

区域市场深度渗透:东南亚海外网红推广的本地化实战策略

Wolink

跨境贸易 出海 海外营销推广 品牌出海 海外红人营销

校二叔校园外卖社区小程序系统 :一站式校园生态解决方案

微擎应用市场

海外网红营销服务公司评估指南:5大维度筛选优质合作伙伴

Wolink

出海 海外社媒营销 海外营销推广 海外红人营销 品牌推广

品牌出海组织变革:构建支持全球化业务的敏捷团队架构

Wolink

跨境电商 出海企业 品牌出海 海外红人营销 品牌推广

人大 DeepAnalyze 免费体验通道开启!上传数据,坐等报告!

ModelWhale

人工智能 数据分析 大模型 DeepAnalyze

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