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的一些重要特性:程序員
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