锈永不磨灭,让末日来得更酷!
本文翻譯自ReadWrite.com上刊登的Matt Asay的一篇文章,Rust Never Sleeps: How Mozilla Could Become Cool Again,副標題是“Mozilla has almost faded from memory, but Rust could make it hip again”。本譯文標題采用意譯和音譯相結合的手法,或許值得商榷,歡迎讀者見仁見智提出更正意見。翻譯此文不代表譯者完全贊同作者原文中的所有觀點。—— Liigo, 2015-7-14.
Mozilla公司以前也有過好日子。
它推出的Firefox瀏覽器曾經是微軟IE的頭號對手。如今,Firefox落魄到僅剩12%的市場份額——數據源于NetMarketShare對桌面系統瀏覽器的統計——移動端的情況更糟。Mozilla的其他產品如Thunderbird,不提也罷。
Mozilla英雄落寞的時候,居然推出一門可能促進行業變革的Rust編程語言,讓人感到意外。最初版本的Rust由Mozilla公司員工Graydon Hoare在2009年開發完成,基于現代編程語言設計理念從頭打造(譯者Liigo注:Graydon似乎更傾向于復古的編程理念)。它融合了高層語言(high-level languages)的靈活性和底層語言(low-level languages)的強控制性(firm control)。
本質上,Mozilla這門語言既強調性能,又覆蓋廣泛的應用領域,從操作系統到數據庫所有軟件都能開發,還避免了其他語言背負的向后兼容的歷史包袱。總之,Rust具有完全顛覆IT行業的潛能,這對Mozilla公司而言意義重大。
銹永不磨滅
Mozilla公司可能曾經迷失過方向,但是它最近正盡最大努力糾正航向。Electrolysis項目可給予Firefox多進程能力,新的WebAssembly標準和WebVR虛擬現實流,將為迷人的新興技術提供支持。
但是在這些積極舉措之前,Mozilla就已經有了復興自己的根本途徑:Rust。Rust已在它口袋里裝了好幾年了。
Rust是Graydon六年前(譯者Liigo注,應為九年前,2006年)開始開發的業余項目,2010年才成為Mozilla公司官方支持的項目。盡管有公司參與,Rust仍被視為社區主導的項目,得到了Mozilla公司以外許多貢獻者的支持。
Mozilla是這樣描述Rust的:
Rust是一個新的編程語言,注重性能、并行、內存安全。設計者們從頭開始創建一門語言,融合現代編程語言的優秀設計,避免傳統編程語言的歷史包袱。
Rust融合了高層語言富有表達力的語法和靈活性,以及底層語言超強的控制性和性能。
上面最后一句話太誘人了。Rust有能力讓開發者編寫內核(kernels)、操作系統(OS)、瀏覽器、數據庫,等等,而這些軟件要想用高層語言比如Google公司的Go語言開發,往往是不太現實的(you simply can’t realistically write)。
Christoph Burgdorf 認為:
從一面說,Rust是非常現代的語言,它有泛型(Generics)、接口(Traits)、面向表達式(expression orientated)、模式匹配(pattern matching)、閉包(closures)等等許多令人興奮的特性。
從另一方面說,Rust也是很底層的語言,它默認不使用垃圾收集器(GC),它僅僅通過定義一系列規則,讓編譯器在編譯時做強制檢查,就消除了對垃圾收集器的依賴。
更讓Burgdorf感到振奮的是,Rust提供深層控制(deep control)內存申請等能力,他寫道:“Rust還允許你深層控制堆和棧空間的內存申請,這對Go來說是不可能的,因為Go的編譯器采用逃逸分析(escape analysis)(自動)確定是否在堆上申請內存。”
雖然很多新的編程語言不斷地更快地涌現,Rust有一點讓它與眾不同:它在不強制要求開發者成為底層編程專家的前提下,提供了底層語言的控制力和性能。
讓開發者的工作變得簡單是新語言的價值,如果同時還能提升開發者的控制力(boosting their control),就更吸引人了。
銹得低調淡定
Redmonk公司的Stephen O’Grady指出:最近不斷出現的信息顯示,Rust正逐步激發越來越多的開發者的興趣。
Rust可被應用于新項目和舊項目。就像開發者Jeff Waugh對我說的:“我預計會有很多新項目擁抱Rust,包括全新的項目,和舊項目中的新模塊。”
雖然可能會有采用Rust全新開發的操作系統、數據庫等其他項目,擴展已有項目也是Rust的價值所在。Mozilla公司的Servo瀏覽器引擎是一個好的例子。“值得注意的是,Servo重用了很多(C++)代碼,而核心的/新增的功能是用Rust語言開發的”,Waugh說,“Servo使用Rust完成了全部的并行布局(parallel layout)功能,而SpiderMonkey(JavaScript引擎)和libpng(解析PNG圖片)相關功能則是重用舊的代碼。”
也就是說,Servo里面的一部分代碼是Rust,還有很多不是。但是通過Rust開發部分代碼去改進Servo(或其他任意項目)是很有效的,尤其是對基于C語言的項目而言。澳大利亞作者程序員Dave Cheney寫道:“某些遵循C語言調用約定的大型項目,很希望將Rust代碼嵌入進去。”
未來是銹的天下嗎?
說到Rust,還有一個很糾結的問題:如果它很棒,為什么不是所有人都用它呢?
目前,還很難找到有關Rust的工作崗位,Hacker News上面的招聘趨勢印證了這一點。根據Google搜索數據得到的信息顯示,程序員對Rust感興趣比例還比較低。
但是請不要混淆當前狀況和長期行業影響。例如,不能簡單的因為Go現在比Rust流行,就判定(將來)Go會贏而Rust會輸。
這是錯誤的比較方法。Cheney解釋說:“Rust的競爭者是C++和D語言,使用C++和D的程序員為了追求最高性能,已經準備好接受復雜的語法和語義(以及因此導致的較低可讀性的代碼)。”然后,他又補充說,“Go的競爭者是Ruby、Python、Node.js (v8),這些語言多是在2006年之后互聯網2.0時代發展壯大的,他們的使用者對基于JVM的語言很高的部署成本失去了耐心。”他們之間的應用場景和用戶群,都有很大的不同。
我希望Go繼續成長,但是我猜想,Rust將會對我們整個行業中最重要的程序,產生深遠的影響。
就像Peter Bright說的那樣,“Rust嘗試提供像C或C++那樣的性能和控制,同時讓C和C++經常出現的安全方面的BUG(security-compromising bugs),在Rust中更難出現。”
Mozilla公司通過大量應用Rust(Servo/Firefox),能夠向C語言開發者展示Rust語言的能力,其中某些C開發者一直在尋找更好的語言。通過應用Rust,Mozilla公司也在逐步讓自己重新成為現代應用開發領域的主導力量(central force)。
題圖來自Shutterstock。
總結
以上是生活随笔為你收集整理的锈永不磨灭,让末日来得更酷!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python对excel指定数据提取并保
- 下一篇: 资源管理方案——RAII