WebAssembly系列2-为什么我们需要WebAssembly—采访Brendan Eich
為什么80%的碼農(nóng)都做不了架構(gòu)師?>>> ??
? ? ?在2015.06.17, JavaScript之父Brendan Eich宣布了一個新項目:將新的底層功能(low level primitives)帶入web中[1],?這將使在瀏覽器或其他JavaScript環(huán)境中采用類似于C & C++等語言編寫的項目的編譯更加容易。如果是第一次聽到這個想法,可參見閱讀"What is WebAssembly”的基本描述[3]。
? ? WebAssembly團隊包括來自Google, Microsoft, Mozilla, Apple, 以及W3C WebAssembly Community Group(社區(qū)團體)的成員。
? ? 這份聲明使web開發(fā)界猜測WebAssembly可能會如何影響到JavaScript的未來, Eric Elliott(下面簡稱EE)采訪了Brendan Eich(下面簡稱BE).
? EE: 最近,你在博客中宣布將開始WebAssembly新項目,基本上就是一個web匯編語言,一個底層編譯目標(biāo)。 能否講下它是做什么的,背后的動機是什么。
? BE: 這在某種程度上是從ASM.js就開始的一個持續(xù)過程。ASM.js是JavaScript的一個子集,沒有對象, 沒有垃圾回收, 沒有JIT編譯器中斷(just in time compiler pauses)。它的目標(biāo)是C/C++—JavaScript的一個靜態(tài)類型子集。這已經(jīng)由Mozilla以及大型游戲廠商, Epic Games公司的Unreal引擎以及Unity公司的Unity引擎和IDE演示過了。?
? ? 這樣,大量的游戲就可以用自己的引擎來發(fā)布,市場上有Unreal引擎3和Unreal引擎4, 而基于Unity 5建立的游戲是用另外一種指令集作為JavaScript的目標(biāo)。
? ? 這些游戲過去可能瞄向PS4、XBox和PC?,F(xiàn)在他們也可以利用WebGL、ASM.js、web音頻與其他重要的APIs、平板游戲APIs、全屏APIs等瞄向web。
? ? 當(dāng)我在Mozilla公司的時候,ASM.js就取得了非凡的成功,現(xiàn)在已經(jīng)轉(zhuǎn)向了微軟。我記得幾年前與Anders Hejlsberg和Steve Lucco談?wù)撨^,Anders是做C#和.NET,Steve帶領(lǐng)Chakra團隊。他們都非常感興趣,Edge開始支持ASM.js,通過在線優(yōu)化達到好的性能,就像Mozilla對模塊優(yōu)化所做的那樣。
? ? 其實,我認(rèn)為這是對Native Client的最后一擊,或者說,是對真正可移植的原生Client(Portable Native Client:PNaCl)的最后一擊。PNaCl是Google唯一可以將瀏覽器中的C & C++編譯為安全原生Client的版本,但從來沒有在Chrome中完全發(fā)揮出作用。對一些Google屬性來說它放在白名單中,我認(rèn)為Google+有一個圖形編輯器。
? ? 隨著時間發(fā)展,完全原生client不會擴展到其他瀏覽器上,如果打算做的話將有很長的道路要走。盡管ASM.js起初沒有線程,沒有鎖,沒有原生代碼中需要的大量功能:沒有SIMD (single instruction, multiple data: 單指令多數(shù)據(jù)),沒有現(xiàn)代CPUs中包含的向量單元(vector unit)的短向量內(nèi)聯(lián)函數(shù)(short vector intrinsics for vector units)。
? ? 的確,JavaScript之前沒有這些功能,但現(xiàn)在情況正在變化。SIMD已經(jīng)在Firefox支持,V8將支持,Intel已經(jīng)在他們的V8版本中有一個實現(xiàn),Crosswalk支持,而且Microsoft宣布將在Chakra中支持SIMD。
? ? (譯者注:Chakra JavaScript引擎支持微軟Edge瀏覽器以及Windows 10中使用HTML/CSS/JS編寫的應(yīng)用。)
? ? 假設(shè)web停滯,雖然這個假定不好,我認(rèn)為之前的PNaCl和Dart等項目是個錯誤。它們都假定JavaScript能力不夠,不能改善,因此他們必須要做一些事情,因此有了第二套系統(tǒng),或第三套系統(tǒng)增加到了瀏覽器中,然而沒有完全融入到Chrome中。
? ? 這里我并非沾沾自喜,實際情況是我們需要漸進式發(fā)展。所有的瀏覽器必須小步前進。這真的是Firefox與Chrome在瀏覽器競爭中的一個功能-Firefox領(lǐng)先。當(dāng)然情況也會發(fā)生變化,2000年之前IE達到95%的市場份額,Microsoft沒有再投資web,而是投向了.NET和Windows Presentation Foundation(譯者注:Windows Presentation Foundation (WPF) 的首要目標(biāo)在于協(xié)助開發(fā)人員建立吸引人又有效率的用戶界面)。
? ? 無論如何不能總是看歷史,ASM.js的持續(xù)發(fā)展是wasm,這非常重要,理由是一旦ASM.js跨入其他瀏覽器,情況就越來越清晰,它會跨入所有的瀏覽器。
? ? 然而,JavaScript,甚至JavaScript的子集ASM.js都沒有SIMD、線程、共享內(nèi)存和其他基礎(chǔ)功能(primitives)。對于ASM.js仍然需要解析JavaScript,但它只是一個子集。你可以對該子集運行一個專門的解析器,這又是一項維護瑣事,因為現(xiàn)在有了兩個解析器,一個解析器用于完整的JavaScript語言,另一個解析器用于JS子集ASM.js。
? ? 這樣將面臨代價很高的解析問題,但可以用一個更加高效的,壓縮的抽象語法樹(abstract syntax tree:AST),這就是WebAssembly的目的。
? ? 當(dāng)人們被問到web上的字節(jié)碼(bytecode),就認(rèn)為是Java字節(jié)碼。我認(rèn)為微軟和其他地方的研究人員已經(jīng)表明那不是他們想要的,在許多地方都很令人難受,AST編碼就好的多。
? ? 首先,WebAssembly開始就像ASM.js一樣,但是用一個壓縮的語法,一個二進制語法。但是一旦所有的瀏覽器支持了wasm和ASM.js,然后在一些瀏覽器版本更新后,就可以開始增加更多的無需添加到JavaScript的語義(semantics)到wasm中。
? ? 實際上可以在JavaScript和wasm都添加,因為是同一個引擎(1vm),但有一些不想放入JavaScript的功能就可以放入wasm,這樣可以利用C++或Haskell等語言的優(yōu)點。有大量的語言都可以編譯為wasm。
? EE: 可以舉一些例子嗎?
? BE: 好,這都在GitHub中有寫到, 就是將共享內(nèi)存數(shù)組buffers要讓多線程游戲交叉編譯,這是對JavaScript施加的一個壓力,因為這花費了最多的時間,我們不想要JavaScript中的競爭條件?—?它總是在一個BUG很多的脆弱進程中。這是一個我們想要放到WebAssembly中的一個例子,如果我們可以選擇的話。
? ? 沿著這個思路,還有很多類似的功能,例如零花費異常(zero cost exception)在JavaScript中可能沒有意義,這些功能需要一些編譯器和runtime聰明一些,但他們對于C++和Swift是有意義的。
? ? 另一個例子是call/cc (call-with-current-continuation)。Call/cc是非常強大的一個工具,它對JavaScript引擎的實現(xiàn)和安全風(fēng)險都提出了挑戰(zhàn)。
? ? 還有一些非本地函數(shù)的gotos,可以調(diào)用一個continuation進入到另外一個棧。所以這些是不同于ES6 generators中本地、受限的continuations。它們是更深的continuation。所以call/cc可以放入wasm,放入同時能夠處理wasm與JavaScript的引擎。這是可以想象到的。它不必進入JavaScript語言但可以成為WebAssembly語法,同時不影響之前的JavaScript語言。
? EE: 說到這里,那wasm是否存在安全風(fēng)險需要仔細(xì)考慮呢?
? BE: 因為它開始與ASM.js共存,因此不會增加任何新的安全風(fēng)險,但可能在1-2年后開始新的分支,那時就需要查看所有擴展的安全屬性。這是一項新的挑戰(zhàn),這也是Google做native client成員思考最多的,他們在這個領(lǐng)域的知識將非常有幫助。
? ? ?我們正在努力消除PNaCl和Emscripten在使用C++和LLVM編譯器中那些不確定的行為。從硬件向上查到C++規(guī)范,存在大量不確定行為,這不利于安全。
? ? JavaScript已經(jīng)遠遠超過規(guī)范中那些內(nèi)容,將努力比其他語言更安全。對于WebAssembly,需要做的比JavaScript還要多。
? EE: 在register中有一條有意思的頭條新聞:你是否正試圖殺死JavaScript? 事實的真相是什么呢?
? BE: [笑] 不, 我是實用主義者。我不是有經(jīng)驗的C/C++ hacker,這是一個大系統(tǒng),大家都在努力, 但也面臨著web上的兼容性約束。
? ? 你不能違反web,不能了卻往事從頭開始。任何想要嘗試這樣做的人都將失敗。
? ? 甚至當(dāng)你看移動設(shè)備上的原生應(yīng)用時,用戶界面與圖片都有相當(dāng)成熟的原生語言和工具包,但還是有大量的web,存在大量的hybrid apps。
? ? Facebook仍然在使用web views。所有的大型應(yīng)用,Amazon, Pinterest等等都在使用web views。有大量的web應(yīng)用是很愚蠢地使用native表示層而不是HTML編寫,這純粹是重復(fù)發(fā)明輪子。所以web仍然是非常非常重要的,它也是盈利最多的平臺。
? ? 智能手機已經(jīng)到處都是。在幾年之內(nèi),地球上幾乎每個成年人都將人手一部智能手機,這是非常巨大的一個量級,但這并不真正意味著智能手機就是一臺PC, 它更多的仍然是一個消費級設(shè)備。不像你現(xiàn)在正在坐著,輸入信息,從事研究,更深入地購物。
? ? 所以殺死JavaScript是不可行的,我正在做的是對真正的ASM.js的工程問題做出響應(yīng)。從Epic公司的Unity引擎加載一個大的游戲會花20-30秒,這太長了。利用壓縮的抽象語法樹編碼將快20倍,僅需要幾秒鐘。所以對wasm是有真正的需求,這是個有效需求。
? ? Wasm幫助JS贏得勝利,它不僅僅是原生代碼編譯的勝利。最終所有的瀏覽器和webviews都將支持wasm語法來服務(wù)于編譯目標(biāo)主人,并釋放JavaScript以便它可以服務(wù)于JavaScript主人。
? ? JavaScript曾經(jīng)有過分房子階段,但長期來說是不可行的。就像我說的,即使共享數(shù)組buffer延伸,那也只是對JavaScript做的一點點延伸,如果可以讓wasm做C++想要做的一些外部工作,而不需要想各種辦法將這些不安全的事情放入JavaScript,將可以極大緩解JavaScript的壓力。
? ? ? 所以,提升解析性能而不是服務(wù)于兩個masters,才是做wasm的真正原因。我們并非是殺死JavaScript,我認(rèn)為不可能殺死JavaScript。
? ? ? ? ? ? ? ?“天沒有塌下來.”
? ? ? EE: 這對于擔(dān)心JavaScript被殺死的許多人是個好消息。實際上,這是我在互聯(lián)網(wǎng)上看到的對wasm聲明最多的反應(yīng),人們害怕天正在塌下來。我想我們可以說天沒有塌下來, JavaScript仍然會堅守一段時間。
? ? ? BE: 我認(rèn)為即使JavaScript有特權(quán)地位,wasm真正能夠開始作為類似于C++等靜態(tài)語言的目標(biāo),我們在未來將垃圾回收、JIT編譯等擴展功能放入wasm中還需要一段時間,動態(tài)語言執(zhí)行良好所需要的一些特性也還需要一段時間。
? ? 與此同時,Google里的成員正在做Dart編譯器,他們就是在堅守JavaScript,因為當(dāng)你不是在checked模式下編譯時,Dart代碼就是真正的動態(tài)代碼-它需要JavaScript的JITs (Just In Time即時編譯),它需要多種形式的內(nèi)聯(lián)緩存以及其他優(yōu)化。?
? ? 理論上, 我們會將Dart中的大整數(shù)/大數(shù)放入JavaScript,這是在未來的ECMAScript的日程中。我認(rèn)為JavaScript將長期存在。真的很難說在哪一個點上我們會在瀏覽器中放棄內(nèi)嵌的JavaScript,而只使用內(nèi)嵌高級語言。?
? ? ? EE: 回到上世紀(jì)90年代,我自己寫了大量的C/C++代碼。我是在demoscene環(huán)境中長大的,我不知道你是否熟悉,但我們基本上是在構(gòu)建藝術(shù)型應(yīng)用,類似于依靠實際代碼運行而不是事先錄制好視頻的電影。我們不再使用匯編語言來做視頻處理,或處理大量數(shù)據(jù)等工作。你是將wasm視為人們構(gòu)建這些應(yīng)用的有效工具嗎?
? ? (譯者注:Demoscene 是一種計算機亞文化,高手們通過編程展現(xiàn)出炫麗的實時動畫音樂場景。主要技術(shù)是實時計算機圖形學(xué)。)
? ? ?BE: 是的。應(yīng)當(dāng)指出JavaScript將有SIMD。回到10年前Mozilla公司的Vladimir Vuki?evi? 最早開始做的WebGL,然后進入到Khronos Group行業(yè)協(xié)會,WebGL作為基礎(chǔ)的一部分可以支持大型游戲公司Epic, Unity等等的業(yè)務(wù),這真的是太棒了。
? ? ?但那只是基于OpenGL ES, OpenGL的移動profile。在WebGL 2中那只是從OpenGL ES2提升到3,所以你看看桌面GPUs, 它們可以做更多的事情。Wasm將會用OpenGL 4,最新的,最棒的桌面,有很炫的額外陰影,瞄向所有令人瘋狂的Nvidia GPUs。
? ? 這些GPUs未來可能會慢慢進入移動設(shè)備,但這會花很長時間。不論WebGL發(fā)生什么,接下來幾年我們對于wasm有一個選擇, 就是要能夠更快的編程,包括那些高級GPUs.
? ? EE: 誰在做這件事? 我知道你已經(jīng)在你的博客中提到有來自Microsoft和Google的員工在工作,都有誰在做,我們能夠看到的支持來自哪里?
? ? BE: 對我來說這很難,因為我是發(fā)布了聲明,但我不屬于其他公司,你可能已經(jīng)注意到,公司不能將其名稱租借出去,但這通常是由于協(xié)議延遲。這沒什么困難,主角就是從事WebKit, JavaScriptCore的人們, Filip Pizlo這個名字在GitHub庫中非?;钴S(WebAssembly GitHub賬號)。
? ? Filip為Apple工作。其他公司還有Microsoft, Mozilla, 和Google。
? ? Mozilla利用ASM.js走在前列,Google的成員們利用PNaCl,都在解決大量的相同問題和不確定行為,思考ASM.js當(dāng)前還不支持的更高級特性,例如在做共享數(shù)組buffer之前需要實現(xiàn)動態(tài)鏈接和線程。
? ? 我認(rèn)為在某個時間點上可以解決這些問題。我認(rèn)為在Hacker News上許多人認(rèn)為我是個超級極客(big jerk), 因為不知怎么回事,從我在Mozilla的骷髏王冠開始, 我就極力從思想上控制業(yè)界的每個人阻止PNaCl進入其他瀏覽器,或者說如果我只是將它放在Mozilla (以非常大的代價) 那么其他人就會跟隨,因為如果Mozilla和Google做某件事,那么其他人也必須做這件事。 不是這樣的,可看看WebM。
? ? (譯者注:WebM項目是一個使用BSD許可證的開源項目。它采用了On2 Technologies開發(fā)的VP8及其后續(xù)版本VP9視頻編解碼器和Xiph.Org基金會開發(fā)的Vorbis音頻編解碼器,使用的封裝格式則以Matroska格式為基礎(chǔ)。WebM項目是在2010年的Google I/O會議上發(fā)布的,之后宣布將會支持WebM的廠商有Mozilla、Opera和Google等。但WebM與H.264之間存在激烈的競爭。)
? ? ? 所以我認(rèn)為那些不面對現(xiàn)實的人們有許多抱怨。事實是PNaCl不會跨瀏覽器,但許多工作是基于LLVM的。在我們做ASM.js之前PNaCl就已經(jīng)開始了,所以這是相當(dāng)完美的聯(lián)姻。最初還認(rèn)為是多災(zāi)多難,但實際上它已經(jīng)讓之前從事ASM.js和PNaCl的人們轉(zhuǎn)向從事WebAssembly工作。
? ? ?EE: 假定大家都支持這件事, 那么什么時候我們可以看到瀏覽器內(nèi)嵌支持wasm呢?
? ? ?BE: 我不清楚。他們必須建立一個原型或者可以繼續(xù)發(fā)展的某項工作,因為我們從JavaScript和HTML學(xué)習(xí)到的一件事就是,不要做大量的硬版本(hard version)。你可以通過對象檢測,特性檢測等工作來檢驗自己的想法,或使用一些自動化配置測試工具,編寫防御性的代碼使得退回去更優(yōu)雅一些。
? ? 所以在幾年之后,當(dāng)wasm 2018內(nèi)部包含了call/cc, 可能一些其他語言就運氣不佳,但如果它也有諸如零花費異常等高級特性,那你就可能想要在瀏覽器中利用不帶零花費異常功能的wasm 2017運行,盡管可能你會遭受到異常調(diào)用的嚴(yán)重影響。但這也許可以。
? ? 從JavaScript編程來講有一些非常重要,在8年前使用ES4時我們已經(jīng)將mimetype versioning戲稱為1JS. 在RFC 4329中,Bjoern Hoehrmann將JavaScript寫為`<script type=”application/ecmascript”>` 。他說有一個version參數(shù),但沒有說version有哪些值, (但不能忽略這個參數(shù)),于是人們總是得到錯誤的versions,錯誤的mimetypes或沒有任何mimetype的script標(biāo)簽。
? ? version locking的整個思路是失敗的, 而且我認(rèn)為在其他runtime系統(tǒng)中使用它通常就是個問題。在接下來幾個月里,我期望他們可以對抽象語法樹編碼性能感到滿意,權(quán)衡編碼與解碼效率,這里解碼是最重要的。他們對如何擴展語法會有好的想法。
? ? ?接下來,他們可以開始每天晚上運行。我期望某個時間點 —?我想是到明年 — 但這完全是個猜測,我沒有可透視未來的魔幻水晶球。但我們將會開始看到,支持wasm的瀏覽器至少每天晚上都會運行,也可能會在這個秋季實現(xiàn)。
? ? 社團人們將很快開始考慮語法的標(biāo)準(zhǔn)化。有一件事使得這件很緊迫的工作顯得不那么緊迫,那就是已經(jīng)有一個polyfill?—?實際上就是一個庫—?一個JavaScript版本的解碼器,這個解碼器可以將二進制代碼變回到ASM.js, 可作為抽象語法樹的原型。
? ? 即使現(xiàn)在JavaScript已經(jīng)有軟件實現(xiàn)的wasm,但不必提交成為正式的語法。在現(xiàn)代HTML5時代,web標(biāo)準(zhǔn)的關(guān)鍵是不斷迭代,不要去做一些宏大的10年的規(guī)范,希望事情馬上就塵埃落定,就像ES4曾經(jīng)做過大的重構(gòu), ES6也是有大量變化,唯一拯救它的就是在真正的引擎中做增量式原型。
? ? HTML5就是一個龐大、多年的version,最終打了一個巨大的版本戳5,但實際上在任何人聲稱已經(jīng)完成之前又過去了很多年。
? ? ?EE: 你剛才提到了一個原型, 那現(xiàn)在是否可以下載,試用?
? ? ?BE: 可以的。如果通過GitHub賬號登錄,訪問WebAssembly,可以在polyfill-prototype-1下看到一個解碼器。我還沒有時間,但如果你看看Emscripten,Emscripten將通過一個可選的模式來使用這個polyfill,即JavaScript解碼器的庫。我想現(xiàn)在可以試驗下。
?
? ? ?EE: 所有這些都會融入到wasm,那么會像在你的談話"Taking the High Road and the Low Road"中所說的那樣,JavaScript中還會增加一些底層特性嗎??
? ? ?BE: 是的,就像我說的那樣,wasm會沿著支持道路走下去,不再需要polyfill,那么就會比ASM.js有更多的表達力,它會有更強大的語義,但這還需要一段時間。
? ? 同時許多人還會深入學(xué)習(xí)JavaScript,因為人們需要它,即使它不能被編譯,人們希望可以手工編碼。同時,SIMD,以及l(fā)ibm中的一些功能,例如`Math`對象、內(nèi)聯(lián)函數(shù)都被提升到高層語言中。如果你曾經(jīng)編寫過C或C++代碼,你會看到有許多功能已經(jīng)增加到ES6中,還有更多的功能已經(jīng)在排在日程上。?
? ? 我認(rèn)為我們將仍然是既要走底層道路,同時也要走高層道路,但我認(rèn)為這可能是按5年時間來算,現(xiàn)在還不需要太擔(dān)心,如果有一些底層功能只用于編譯器,并且可以確信JavaScript手工編程人員不需要,那么就不會增加該功能到JavaScript中,即不需要服務(wù)于兩個主人。?
? ? ?EE: 你認(rèn)為這會導(dǎo)致大量語言被碎片化,或者說差異化(diversity),區(qū)別是什么? 這是件好事還是壞事? 許多人好像很困惑。?
? ? ?BE: 我認(rèn)為JavaScript已經(jīng)成為瀏覽器中唯一的動態(tài)語言,但wasm可以支持許多編譯語言,也就是靜態(tài)語言—尤其是使用LLVM的語言。微軟有自己的編譯器,所以他們會通過另一個編譯器框架支持wasm,但這非常棒。越多越好。?
? ? ?當(dāng)然,GCC或類似的編譯器都可以生成wasm,但我認(rèn)為動態(tài)語言,例如Dart, Ruby, Python, 甚至JavaScript?—?都會需要我前面提到的一些擴展, 例如垃圾回收鉤子、JIT支持等等,否則它們將沒有競爭力。?
? ? ?有好的先例,JVM經(jīng)過多年的成長,感謝John Rose加入了類似于`invokedynamic` 以及其他鉤子用于JIT編譯優(yōu)化,,例如多種形式的內(nèi)聯(lián)緩存, 所以JVM實際上是一個可信賴的動態(tài)語言平臺。?
? ? ?所有這些運行時(runtime)都已經(jīng)變成了通曉多種語言的虛擬機—JavaScript VMs. Java還沒有死,就是因為JVM現(xiàn)在支持Clojure, Scala以及其他語言。我們幾乎是在編程語言的第二個黃金年代,你知道,現(xiàn)在有Rust, Haskell, Idris, 以及其他語言。?
?? ? 我想說的是越多越好. 那不會成為巴別塔(the tower of Babel),因為我認(rèn)為不論是現(xiàn)在和未來,JavaScript都將成為瀏覽器的通用語言(the lingua franca of the browser)。如果你正在編寫前端代碼,或者當(dāng)你描繪輪廓時在非關(guān)鍵路徑上做的其他事情。
? ? ?但如果你真的想把這些映射為3d游戲, 或者一些超級復(fù)雜的計算機視覺內(nèi)核算法, 那么你可能要用C++或其他語言編譯成wasm, 也許5年后, 如果人們對可編譯為wasm的語言充滿熱情, 那么這門語言地位就會上升, 我認(rèn)為這不是個問題, 這只是大都市生活的一部分.?
? ? ?EE: 也就是說你最終想要看到的是JavaScript語言消失, 如果有更好的語言出現(xiàn)的話??
? ? ?BE: 再重復(fù)一遍,我沒有預(yù)測它會如何被殺死,因為web上所有的內(nèi)容都必須在瀏覽器內(nèi)運行,wasm中實現(xiàn)一個能夠像V8那樣快速運行的JavaScript runtime將是對工程師的一個真正挑戰(zhàn)。但沿著這條路走下去,如果過了很多年某個人做到了,那么就可以讓JavaScript成為n個wasm實現(xiàn)語言的一種。
? ? ?但JavaScript語言在web中仍然有神奇的立足點。而且它還在不斷發(fā)展,因為我們?nèi)匀辉谂κ笿avaScript成為手工編碼人員更好的語言,所以它不會停滯不前。人們對ES6的評價是:這不是之前的JavaScript了,現(xiàn)在非常棒。
? ? ?再次,沒有可透視未來的魔幻水晶球,我只是認(rèn)為很難讓JavaScript語言消失。我不會去殺死JavaScript語言。當(dāng)人們不再需要JavaScript時,其壽命自然會終止,如果人們發(fā)現(xiàn)其他語言更好,如果繼續(xù)沿著這條路走, 經(jīng)過許多次的更新迭代, 人們不擔(dān)心嵌入到瀏覽器中的是JavaScript語言, 那么我會說“que sera sera.”(法語: 該來的總會來)
? ? ?我認(rèn)為, 那些想讓JavaScript語言消失的人是因為他們對它由于某些原因而抱有敵意, 他們將會失望而歸,JavaScript語言不會消失。
? ? ?這對于JavaScript和其他語言來說實際上是件好事。不要假設(shè)時間會停滯,我認(rèn)為wasm將會包含越來越多其他語言的特性,也包括JavaScript語言的特性。?
? ? ?這是各方都能夠贏的實例,這確實滿足了web業(yè)界每一家的利益, 無論是Apple, Google, Microsoft, 還是Mozilla。
? ? ?現(xiàn)在要做的是聚焦增量式提升,而不是偏離現(xiàn)實太遠。類似于ES4, PNaCl, Dart, XHTML的工作都將回退到以往的日子。所有那些試圖以自己公司宏大計劃模式來重建web的大碰撞將不會再起作用。
? ? ?所以現(xiàn)在我們這些人一起合作,解決這些小的碰撞,我們應(yīng)當(dāng)會看到一系列的小碰撞將會產(chǎn)生非常大的累積效果。
?譯者注:最后附上一頁Brendan Eich在Modern Web 2015會議上的主旨演講-JavaScript at 20 Years視頻中的最后一頁,Alaways bet on JS(永遠賭JS贏):
? ??
后記:[6]中Brendan Eich于2013就已經(jīng)指出Web就是游戲平臺(The Web is the Game Platform),許多技術(shù)用于加速Web端的游戲開發(fā),包括asm.js, 一個JavaScript優(yōu)化技術(shù),純JS子集目標(biāo)語言for編譯器;Emscripten, 一個C++到JavaScript的編譯器;OdinMonkey, SpiderMonkey JavaScript引擎編譯器forasm.js源碼。與Epic游戲公司創(chuàng)始人和CEO Tim Sweeney對許多事有相同的觀點,例如通過C++通過asm.js,JS可下沉作為一種安全的類似匯編的target語言。
這些都表明,游戲產(chǎn)業(yè)在拉動和推動Web端JavaScript技術(shù)的快速發(fā)展。
參考資料:
[1]?WebAssembly系列1-從 ASM.JS 到 WebAssembly,?http://my.oschina.net/1pei/blog/487683
[2] Why we Need WebAssembly, An Interview with Brendan Eich,?Eric Elliott,?June 17th, 2015,?https://medium.com/javascript-scene/why-we-need-webassembly-an-interview-with-brendan-eich-7fb2a60b0723?
[3]?What is WebAssembly? The Dawn of a New Era,?Eric Elliott,?June 18th, 2015,?https://medium.com/javascript-scene/what-is-webassembly-the-dawn-of-a-new-era-61256ec5a8f6
[4]?Modern Web 2015, May 15th-16th, 2015,?http://modernweb.tw/program.html
[5]?WebGL 2 Specification, Editor's Draft 24 July 2015, https://www.khronos.org/registry/webgl/specs/latest/2.0/
[6]?The Web is the Game Platform, 29 March, 2013,?https://brendaneich.com/2013/03/the-web-is-the-game-platform/
轉(zhuǎn)載于:https://my.oschina.net/1pei/blog/488584
總結(jié)
以上是生活随笔為你收集整理的WebAssembly系列2-为什么我们需要WebAssembly—采访Brendan Eich的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 税控盘查看服务器设置的网站,税控盘服务器
- 下一篇: Adobe全系列软件介绍