JavaScript大辯論:實施改進(jìn)還是徹底放棄
譯文【2011年9月27日 51CTO外電頭條】谷歌的Dart語言將矛頭直接指向了JavaScript,英特爾的River Trail則進(jìn)一步推波助瀾;這場競賽正因智能手機(jī)應(yīng)用程序?qū)﹂_放JavaScript的需求而逐步升級。
無論大家如何看待JavaScript,都不會影響它當(dāng)之無愧地成為現(xiàn)代計算中最重要編程語言隊伍中的一員。這是惟一一款能夠在不添加任何額外插件的前提下隨意運行于全部現(xiàn)代見面瀏覽器上的語言,JavaScript可謂客戶端頁面領(lǐng)域的通用表達(dá)方式。
這種稱號對于一種語言來說算是相當(dāng)學(xué)生的負(fù)擔(dān)了。當(dāng)然,也并不是每個人都對其投來善意的目光。隨著網(wǎng)頁應(yīng)用程序的普及率及重要度不斷提升,JavaScript作為應(yīng)對一切開發(fā)需求的解決方案,所面對的壓力也在與日俱增。
不可否認(rèn),JavaScript在各方面的進(jìn)步有目共睹。尤其是谷歌已經(jīng)說服了各家瀏覽器供應(yīng)商為JavaScript引擎的性能表現(xiàn)提供最大程度的支持,該趨勢也在頂級供應(yīng)商之間造成了一次小規(guī)模的軍備競賽。近年來,Mozilla在其火狐瀏覽器上已經(jīng)針對JavaScript引擎做出了顯著的改善,但也許微軟才是整個事件中最大的受益者。微軟得出的結(jié)論是JavaScript孱弱的性能表現(xiàn)對IE瀏覽器并無多大影響。如今微軟甚至將JavaScript作為核心語言整合進(jìn)了其賴以生存的Windows系統(tǒng)及Office辦公軟件當(dāng)中。
但即使是改進(jìn)如此巨大,似乎仍然無法讓每個人滿意。由于開發(fā)人員對JavaScript的要求持續(xù)激增,其局限性也就被人為地放大化了。眼下谷歌剛剛放出消息,這家向來倡導(dǎo)以瀏覽器應(yīng)用程序代替桌面系統(tǒng)軟件的企業(yè)長久以來一直在偷偷摸摸地著手開發(fā)一款名為Dart的全新語言。該語言預(yù)計在即將于丹麥舉行的Goto大會上亮相,其設(shè)計目的是徹底替代JavaScript這款“存在根本性缺陷”的語言。
說到這里,我們需要思考一下了。Web開發(fā)社區(qū)將會一如既往地支持JavaScript并努力將其打造成一流的開發(fā)平臺,而直接無視掉隨之而來的局限性;抑或是“做出一個艱難的決定”,以良禽擇木而棲的態(tài)度直接投向Dart的懷抱?兩種猜測似乎都有道理。
谷歌投下賭注
目前關(guān)于Dart語言的進(jìn)一步信息還很有限,估計這種情況會一直持續(xù)到Goto大會開幕。當(dāng)下我們所了解到的大部分情況來自于一份意外泄露的備忘錄,該文由谷歌開發(fā)人員Mark S.Miller于2010年11月份所寫,原文題為“JavaScript的未來”。不過僅從備忘錄本身來看,谷歌并非要打一場不是你死就是我亡的慘烈決戰(zhàn),而是希望二種方案在未來的客戶端Web領(lǐng)域得以共存。
在備忘錄中,Miller在Dart語言的推廣方面透露了一套 “風(fēng)險系數(shù)極高”的方案選項,即其成功必須依賴瀏覽器廠商對JavaScript的“棄”無返顧以及谷歌自身的忽悠能力。而另一種方案——Miller形容為“風(fēng)險相對較低”——是對JavaScript進(jìn)行改造以盡量解決其局限性。Miller在文中最有價值的觀點在于,他呼吁谷歌不要從上述兩種方案中選擇其一,而應(yīng)該將二者同時解決。
而這正是谷歌過去一直在推行的思路。根據(jù)來自谷歌、一直效力于Chrome瀏覽器框架小組的Alex Russell的說法,在沸沸揚揚的爭論之中(除了谷歌本身正是Dojo工具包的創(chuàng)始者之外),“谷歌明確承諾將爭取改進(jìn)JavaScript的薄弱環(huán)節(jié),我們每位研究人員也一直在為此盡心竭力…而且說句實話,這也確實需要一定的助力。”
Russell所主張的改變并不特別針對測試階段的應(yīng)用程序性能以及開發(fā)者生產(chǎn)力的提高。JavaScript的開發(fā)模式已經(jīng)經(jīng)歷了多年的發(fā)展,而目前所暴露出的問題是相對于其它比較先進(jìn)的用法,JavaScript在某些語法的處理上略顯笨拙。舉例來說,Russell希望將類關(guān)鍵字加入到該語言中,以使面向?qū)ο蟮拇a更加明確且清晰。他還坦言,如果能有一款A(yù)PI模塊用于打造標(biāo)準(zhǔn)化機(jī)制的話,JavaScript庫的創(chuàng)建將會更加便捷。
JavaScript獲得并行處理能力
對JavaScript的改良絕不是個通過紙上談兵就能實現(xiàn)的簡單計劃,然而整個修正流程又需要在完全概念化的層面上進(jìn)行討論并模擬實施。Russell曾作為谷歌方長駐TC39的代表,參與了由ECMA(即歐洲計算機(jī)制造商協(xié)會)委員會負(fù)責(zé)的ECMAScript語言標(biāo)準(zhǔn)化工作,而這正是JavaScript的誕生基礎(chǔ)。要對國際化標(biāo)準(zhǔn)進(jìn)行改進(jìn)實在不是易事,TC39的成員們在2008年該委員會徹底放棄ECMAScript 4計劃時徹底理解了這一點。
不過這種合作的過程還是非常重要的,因為谷歌并非惟一一家希望在客戶端Web開發(fā)領(lǐng)域搶占先機(jī)的企業(yè)。舉例來說,英特爾希望能使網(wǎng)頁應(yīng)用程序更好地利用現(xiàn)代多核心處理器設(shè)計,而Dart語言在這方面的表現(xiàn)還無從知曉。
本周,英特爾將自己的想法通過演示軟件的形式派發(fā)給開發(fā)者們。這家老牌芯片制造商將其“全新JavaScript引擎”命名為River Trail,并介紹稱其為JavaScript帶來了“并行處理的能力,”根據(jù)英特爾公司工程師Stephan Herbut的說法,這將使JavaScript成為一種高性能方案,“并足以應(yīng)對像照片處理這樣的大運算量應(yīng)用程序?!背瞬⑿刑幚砟芰?,River Trail還允許JavaScript充分利用現(xiàn)代芯片中的向量處理指令。實驗版本的該引擎現(xiàn)在已經(jīng)能作為火狐瀏覽器的擴(kuò)展項目在Github上下載獲取了。
谷歌全面進(jìn)軍Web領(lǐng)域
討論了這么多與JavaScript相關(guān)的話題,有一種現(xiàn)象值得思考,那就是谷歌為什么要在這趟渾水中拋出Dart語言?正如谷歌公司的Miller所言,“要想說服其它各家瀏覽器廠商團(tuán)結(jié)起來支持同一款新語言簡直比登天還難?!毙抡Z言總是層出不窮,但真正獲得成功的卻屈指可數(shù)。就拿谷歌最為得意的Go語言為例,自從于2009年推出以來除了在搜索巨頭自家的辦公室里插科打諢以外就沒起過什么正經(jīng)作用。
即便Dart語言將JavaScript挑于馬下的機(jī)會微乎其微,但它至少為谷歌提供了一款工具,以展示經(jīng)過“大掃除“之后的JavaScript到底看起來是個什么樣子。這反過來又會使谷歌在TC39的討論中贏得更多話語權(quán),因為畢竟該公司開發(fā)出了一套工作原型,否則委員會恐怕要直接把這套方案扔進(jìn)垃圾桶。
但Dart語言備忘錄中最值得玩味的部分是Miller對結(jié)論內(nèi)容的闡述。在他看來,競爭并不會爆發(fā)于Dart與JavaScript或是任何一種現(xiàn)存的語言之間;事實上最終的對抗只會發(fā)生在Web與“各類備選平臺”之間,他評論道。所謂平臺,是指類似蘋果iOS這樣的產(chǎn)品。
越來越多的消費者開始具備兩種方式來訪問互聯(lián)網(wǎng)并應(yīng)用基于Web的信息服務(wù)。其中傳統(tǒng)的Web瀏覽器訪問方式當(dāng)然還占據(jù)著優(yōu)勢,但不可否認(rèn)的是轉(zhuǎn)向智能手機(jī)作為訪問上述服務(wù)的主要手段的消費者群體也日趨龐大起來。請注意,他們通向網(wǎng)絡(luò)的門徑可不是什么手機(jī)瀏覽器,而是專用的智能手機(jī)應(yīng)用程序。
問題何在?問題在于像iOS這樣的智能手機(jī)應(yīng)用程序平臺往往是封閉的、垂直整合且功能專有化的——這恰恰與開放的、以標(biāo)準(zhǔn)化為基礎(chǔ)的Web相反。如果這一經(jīng)過層層分析得出的矛盾正是讀者朋友所關(guān)心的內(nèi)容,請務(wù)必時刻關(guān)注Dart、River Trail以及JavaScript的演變進(jìn)程,因為這很可能成為未來業(yè)界走勢的一大風(fēng)向標(biāo)。
原文鏈接:
http://www.infoworld.com/d/application-development/the-great-javascript-debate-improve-it-or-kill-it-173674?page=0,0
【編輯推薦】