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