专访Rust——由Mozilla开发的系统编程语言(目标人群就是那些纠结的C++程序员,甚至也是他们本身)

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

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

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

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

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

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

 

http://www.cnblogs.com/Chrome/archive/2012/10/09/2716819.html

相关文章
相关标签/搜索