今天看到李松峰老師發(fā)布了新版的《JavaScript高級(jí)程序設(shè)計(jì)》(第三版)的預(yù)售消息,于是跑去當(dāng)當(dāng)(在這里)仔細(xì)地讀了一下新版有關(guān)“JavaScript起源”的段落。讀罷,心中的種種不安一掃而空:在這本書的第三版,總算還原了JavaScript起源的真相。
話說有一本《JavaScript權(quán)威指南》,以及這本《JavaScript高級(jí)程序設(shè)計(jì)》,算這些年對(duì)前端界/JavaScript圈子影響最大的、JavaScript經(jīng)典譯著。然而前者歷來對(duì)JavaScript的起源語(yǔ)焉不詳,后者則正好相反,從第一版起便“詳細(xì)(而又錯(cuò)誤地)”地指出了“JavaScript的起源”:
大概在1992年,一家稱作Nombas的公司開始開發(fā)一種叫做C減減(C-minus-minus,簡(jiǎn)稱Cmm)的嵌入式腳本語(yǔ)言。這個(gè)腳本語(yǔ)言捆綁在一個(gè)叫做CEnvi的共享軟件產(chǎn)品中,當(dāng)Netscape Navigator嶄露頭角時(shí),Nombas開發(fā)了一個(gè)可以嵌入網(wǎng)頁(yè)中的CEnvi的版本。這些早期的試驗(yàn)稱為Espresso Page(濃咖啡般的頁(yè)面),它們代表了第一個(gè)在萬維網(wǎng)上使用的客戶端腳本語(yǔ)言。而Nombas絲毫沒有料到它的理念將會(huì)成為因特網(wǎng)的一塊重要基石。
當(dāng)網(wǎng)上沖浪越來越流行時(shí),對(duì)于開發(fā)客戶端腳本的需求也逐漸增大。當(dāng)時(shí)工作于Netscape的Brendan Eich,開始著手為即將在1995年發(fā)行的Netscape Navigator 2.0開發(fā)一個(gè)稱之為L(zhǎng)iveScript的腳本語(yǔ)言……
然而正是這誤指的源起,(至少在國(guó)內(nèi))造成了相當(dāng)多的誤解。我后來在寫《JavaScript語(yǔ)言精髓與編程實(shí)踐》過程中,為此甚是苦惱:不說吧,不對(duì);寫吧,羅嗦嗦地講進(jìn)書里,也是不好。后來才寫了:
《還原JavaScript的真實(shí)歷史》
/webpagedesign/20120324/319270.html
這篇博客,在這里引出了《JavaScript高級(jí)程序設(shè)計(jì)》第一版中“錯(cuò)誤敘述”的原文。并在我的書中把考據(jù)類的信息指到這里。
再后來,我又讀到《JavaScript高級(jí)程序設(shè)計(jì)》的第二版,這一版是在2010年的杭州D2(第五屆)大會(huì)上偶然所得(也是奇遇,呵呵),是Nicholas簽名的中文版。然而關(guān)于JavaScript的起源這件事,在這一版中仍是采用此前的說法,沒有什么變化。
因此,當(dāng)時(shí)Hedger送我這本書時(shí),我便跟他約好,我得再寫一篇關(guān)于“JavaScript起源”的文章,請(qǐng)他轉(zhuǎn)譯、轉(zhuǎn)交給Nicholas。——我所“偶得”的這一本,正是Hedger送來,并且與Nicholas還很熟。這才有了我關(guān)于這一問題的“詳圖實(shí)證”:
詳圖實(shí)證:關(guān)于JavaScript的語(yǔ)源問題
/webpagedesign/20110813/105149.html
這篇文章發(fā)在《程序員》雜志上,而我則將一篇摘選另寄給了Hedger。再之后的消息,就不得而知了。
如今新版的《JavaScript高級(jí)程序設(shè)計(jì)》總算在這個(gè)問題上有了新的描述,而不再將起源問題指向C--,這便已是相當(dāng)令人振奮的事實(shí)了。至于這中間有或沒有幾分個(gè)人的努力,其實(shí)已是在這種欣喜之外的事情。我所關(guān)注的,是總算在“JavaScript類的書籍”中,關(guān)于這個(gè)問題有了較一致的說法,而不至于讓人左右難從了。
在新的、第三版《JavaScript高級(jí)程序設(shè)計(jì)》中“JavaScrip簡(jiǎn)史”的敘述如下:
1.1 JavaScript簡(jiǎn)史
在Web日益流行的同時(shí),人們對(duì)客戶端腳本語(yǔ)言的需求也越來越強(qiáng)烈。那個(gè)時(shí)候,絕大多數(shù)因特網(wǎng)用戶都使用速度僅為28.8kbit/s的“貓”(調(diào)制解調(diào)器)上網(wǎng),但網(wǎng)頁(yè)的大小和復(fù)雜性卻不斷增加。為完成簡(jiǎn)單的表單驗(yàn)證而頻繁地與服務(wù)器交換數(shù)據(jù)只會(huì)加重用戶的負(fù)擔(dān)。想象一下:用戶填寫完一個(gè)表單,單擊“提交”按鈕,然后等待30秒鐘,最終服務(wù)器返回消息說有一個(gè)必填字段沒有填好……當(dāng)時(shí)走在技術(shù)革新最前沿的Netscape公司,決定著手開發(fā)一種客戶端語(yǔ)言,用來處理這種簡(jiǎn)單的驗(yàn)證。
當(dāng)時(shí)就職于Netscape公司的布蘭登?艾奇(Brendan Eich),開始著手為計(jì)劃于1995年2月發(fā)布的Netscape Navigator 2開發(fā)一種名為L(zhǎng)iveScript的腳本語(yǔ)言——該語(yǔ)言將同時(shí)在瀏覽器和服務(wù)器中使用(它在服務(wù)器上的名字叫LiveWire)。為了趕在發(fā)布日期前完成LiveScript的開發(fā),Netscape與Sun公司建立了一個(gè)開發(fā)聯(lián)盟。在Netscape Navigator 2正式發(fā)布前夕,Netscape為了搭上媒體熱炒Java的順風(fēng)車,臨時(shí)把LiveScript改名為JavaScript。
由于JavaScript 1.0獲得了巨大成功,Netscape隨即在Netscape Navigator 3中又發(fā)布了JavaScript 1.1。Web雖然羽翼未豐,但用戶關(guān)注度卻屢創(chuàng)新高。在這樣的背景下,Netscape把自己定位為市場(chǎng)領(lǐng)袖型公司。與此同時(shí),微軟決定向與Navigator競(jìng)爭(zhēng)的自家產(chǎn)品Internet Explorer瀏覽器投入更多資源。Netscape Navigator 3發(fā)布后不久,微軟就在其Internet Explorer 3中加入了名為JScript的JavaScript實(shí)現(xiàn)(命名為JScript是為了避開與Netscape有關(guān)的授權(quán)問題)。以現(xiàn)在的眼光來看,微軟1996年8月為進(jìn)入Web瀏覽器領(lǐng)域而實(shí)施的這個(gè)重大舉措,是導(dǎo)致Netscape日后蒙羞的一個(gè)標(biāo)志性事件。然而,這個(gè)重大舉措同時(shí)也標(biāo)志著JavaScript作為一門語(yǔ)言,其開發(fā)向前邁進(jìn)了一大步。
微軟推出其JavaScript實(shí)現(xiàn)意味著有了3個(gè)不同的JavaScript版本:Netscape Navigator中的JavaScript、Internet Explorer中的Jscript和ScriptEase中的CEnvi。與C及其他編程語(yǔ)言不同,當(dāng)時(shí)還沒有標(biāo)準(zhǔn)規(guī)定JavaScript的語(yǔ)法和特性,3個(gè)不同版本并存的局面已經(jīng)完全暴露了這個(gè)問題。隨著業(yè)界擔(dān)心的日益加劇,JavaScript的標(biāo)準(zhǔn)化問題被提上了議事日程。
在“CEnvi是JavaScript的一個(gè)實(shí)現(xiàn)(而并非起源)”這一點(diǎn)上,Nicholas終于做出了正確的描述。雖然,大概在細(xì)節(jié)的時(shí)間上還略值得探究,但已經(jīng)是無傷大局的了。
是為紀(jì)念,即便來之遲遲,也是真相的成功罷!
Copyright@ 2011-2016 版權(quán)所有:大連千億科技有限公司 遼ICP備11013762-3號(hào) google網(wǎng)站地圖 百度網(wǎng)站地圖 網(wǎng)站地圖
公司地址:大連市沙河口區(qū)中山路692號(hào)辰熙星海國(guó)際2317 客服電話:0411-39943997 QQ:2088827823 37482752
法律聲明:未經(jīng)許可,任何模仿本站模板、轉(zhuǎn)載本站內(nèi)容等行為者,本站保留追究其法律責(zé)任的權(quán)利! 隱私權(quán)政策聲明