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