地方互聯(lián)網(wǎng)創(chuàng)業(yè)交流論壇 - 框分類信息系統(tǒng)

首頁(yè) » 框分類信息系統(tǒng) » 論壇 » JavaScript是Web的匯編語(yǔ)言(二):瘋狂 亦或只是精神錯(cuò)亂?
該用戶已被刪除 - 2012/3/9 8:22:57
有些人認(rèn)為“JavaScript是Web的匯編語(yǔ)言”完全是精神病說(shuō)的話。為此,我詢問(wèn)了幾位JavaScript權(quán)威,比如Brendan Eich(JavaScript之父)、Douglas Crockford(JSON之父),還有Mike Shaver(Mozilla技術(shù)副總裁)。以下都是從個(gè)人郵件里摘過(guò)來(lái)的,得到了以上幾位的許可。

Mike Shaver:

以前我就聽(tīng)說(shuō)過(guò)這種比較,我認(rèn)為很大程度上確實(shí)如此。但是,這種說(shuō)法忽視了JS開(kāi)發(fā)人員與機(jī)器之間的人機(jī)工程學(xué)方面的大量努力,因?yàn)閰R編語(yǔ)法設(shè)計(jì)得沒(méi)有那么人性化(特別是現(xiàn)代的匯編語(yǔ)言)。

Brendan Eich:

幾年前,我曾說(shuō)過(guò)“JS是Web的x86”(好像是在一次JSConf上),不過(guò)我不敢說(shuō)我是第一個(gè)這么說(shuō)的。(Nick Thompson今年也在Hacker News中這么說(shuō)過(guò)。)

關(guān)鍵在于,JS確實(shí)在按照我們想的,越來(lái)越往低級(jí)方向發(fā)展了。但它也具備高級(jí)的特性。

Shaver說(shuō)得沒(méi)錯(cuò),匯編缺少可靠的宏處理器,因此不適合程序員,也不夠安全。但JS可不是這樣。所以,這個(gè)比喻需要加點(diǎn)限制條件,不然就要鬧出笑話來(lái)了。

無(wú)論從高級(jí)函數(shù)式編程還是內(nèi)存安全角這個(gè)角度看,還是從低級(jí)特性,像類型化數(shù)組以及即將成為現(xiàn)實(shí)的ES中類型化數(shù)組的擴(kuò)展、二進(jìn)制數(shù)據(jù),等等來(lái)說(shuō),JS都是一個(gè)比匯編更加強(qiáng)大的編程語(yǔ)言。當(dāng)然了,內(nèi)存安全是首要的區(qū)別。

Douglas Crockford:

就這個(gè)問(wèn)題來(lái)說(shuō),我覺(jué)得說(shuō)JavaScript是Web的虛擬機(jī)更接近一些。過(guò)去我們一直都把Java的JVM看成是Web的虛擬機(jī),但結(jié)果呢,JavaScript才是。

從提供代碼安全的角度說(shuō),JavaScript的解析器比JVM的字節(jié)碼驗(yàn)證器更有效。就兌現(xiàn)“編寫(xiě)一次,到處運(yùn)行”這個(gè)諾言來(lái)看,JavaScript更出色;這或許正是因?yàn)樗窃谳^高層次上運(yùn)行,才得以避免觸及一些底層的棘手問(wèn)題。因?yàn)樗咽O碌氖聝憾冀唤o圖靈去解決了。

當(dāng)然啦,也有不少人始終不肯承認(rèn)JavaScript能把一切都處理好,我過(guò)去就是這樣一個(gè)人。而現(xiàn)在我則不斷地被眼前這種百花齊放的景象震撼著。

Brendan Eich,補(bǔ)充:

Doug說(shuō)源代碼強(qiáng)過(guò)字節(jié)碼,說(shuō)得太好了。很早以前,我的朋友,加州大學(xué)歐文分校的Michael Franz教授就指出了Java驗(yàn)證器O(n^4)級(jí)別的復(fù)雜性(計(jì)算機(jī)時(shí)鐘周期失控,拒絕服務(wù))。精簡(jiǎn)之后的JS呢,確實(shí)傳輸更便捷,而且詞法/語(yǔ)法分析也相當(dāng)快。

(JS)源代碼作為“字節(jié)碼”同樣也避免了Java字節(jié)碼的一個(gè)很傻的問(wèn)題:凍結(jié)設(shè)計(jì)不良的Java低級(jí)形式,導(dǎo)致高級(jí)形式的源代碼也無(wú)法解決這個(gè)問(wèn)題。換句話說(shuō),Java唯恐破壞其字節(jié)碼的兼容性。而這嚴(yán)重影響了Java內(nèi)部類及其泛型的設(shè)計(jì)。——不管怎么說(shuō),Sun最后還是破壞了字節(jié)碼的兼容性。

以下是前一段時(shí)間Nick Thompson在YCombinator說(shuō)過(guò)的話:

這只是我個(gè)人的看法:我花了自己兩年時(shí)間,想盡可能讓JVM能夠與JavaScript互通。當(dāng)時(shí)的Netscape有不少人認(rèn)為字節(jié)碼作為移動(dòng)代碼的基礎(chǔ)比較好。但Sun從頭搭建了自己大而全的軟件體系,把問(wèn)題搞得很復(fù)雜。他們沒(méi)有想讓Java與其他語(yǔ)言溝通,更別提讓Java能嵌入其他軟件中了。他們的字符串處理代碼都是用一種解釋型語(yǔ)言來(lái)寫(xiě),而不肯用C來(lái)玷污自己!有什么我就說(shuō)什么,Netscape,這個(gè)當(dāng)時(shí)Java唯一的一個(gè)大客戶,在Sun眼里無(wú)非就是一個(gè)用來(lái)實(shí)現(xiàn)他們?nèi)〈鶺indows夢(mèng)想的工具而已。所有想用Java的人都是自己給自己找罪受。

在此期間,Brendan一個(gè)人干了10個(gè)工程師,外加3個(gè)客戶服務(wù)人員的活兒,同時(shí)還要關(guān)注Web作者在乎的一些事,比如把JS代碼混合到HTML中、即時(shí)加載、與瀏覽器其他模塊的集成等等,此外還要協(xié)調(diào)其他瀏覽器廠商,以便讓JS成為一個(gè)開(kāi)放標(biāo)準(zhǔn)。

因此,今天的JS作為Web的x86匯編程序,并沒(méi)有像它本該的那樣完美,但你通過(guò)它真能把事情稿定(GWT就是一個(gè)最明顯的例子)。這可以說(shuō)是一個(gè)經(jīng)典的“更差就是更好”的例子,只不過(guò)Java也就是從下往上那么看起來(lái)更好罷了。而JS則在此期間取得了相當(dāng)不錯(cuò)的成就。要想取代它的地位可沒(méi)那么容易。

當(dāng)然,這個(gè)比喻不一定準(zhǔn)確。JavaScript代碼無(wú)論從外觀到行為,肯定不像ASM。但作為一個(gè)比喻,至少可以說(shuō)明:

JavaScript無(wú)所不在;

它速度快而且越來(lái)越快;

JavaScript酷似低級(jí)的Web編程語(yǔ)言;

它可以通過(guò)手工編寫(xiě),也可以從另一種語(yǔ)言編譯而來(lái)。

諸如此類的話題也經(jīng)常在Hacker News中出現(xiàn):

“現(xiàn)在的JavaScript其實(shí)就是客戶端的匯編語(yǔ)言。想改它太難了,所以得想辦法開(kāi)發(fā)一些工具來(lái)解決這個(gè)問(wèn)題。”——jonnycat

好啦,能聽(tīng)到如此有見(jiàn)地、有深度,而又詳盡的討論,該滿足了吧。親愛(ài)的讀者,你們太棒了。
1
查看完整版本: JavaScript是Web的匯編語(yǔ)言(二):瘋狂 亦或只是精神錯(cuò)亂?
主站蜘蛛池模板: 性xxxxx大片免费视频| 香蕉视频在线精品| 日韩成人一区ftp在线播放| 免费福利在线播放| 日本a∨在线观看| 工囗番漫画全彩无遮拦大全| 久久成人a毛片免费观看网站| 狂野黑人性猛交xxxxxx| 四虎1515hm免费国产| 中文字幕色婷婷在线精品中| 幻女free性俄罗斯第一次摘花| 久久亚洲AV成人无码国产| 欧美日韩高清一区二区三区电影| 四虎永久在线精品视频| 韩日美无码精品无码| 国产日韩av在线播放| caopon在线| 日本成人在线网站| 亚洲成色www久久网站| 炕上摸着老妇雪白肥臀| 国产91久久久久久久免费| 奇米四色77777| 女同学下面粉嫩又紧多水| 久久伊人五月天| 欧美日韩亚洲国产| 哒哒哒免费视频观看在线www | 久久亚洲sm情趣捆绑调教| 明星ai人脸替换造梦在线播放| 亚洲网站视频在线观看| 色丁香在线视频| 国产福利片在线观看| av网站免费线看| 成人艳情一二三区| 久久综合色88| 欧美白人最猛性xxxxx| 亚洲高清无在码在线无弹窗| 男人扒开女人的腿做爽爽视频| 免费永久在线观看黄网站| 精品国精品无码自拍自在线| 国产成人手机高清在线观看网站 | 欧美三级中文字幕完整版|