Javascript:10天設計一門語言

2018-06-16 18:33 更新

演進和使用的JavaScript是早在1995年開發(fā)的一種語言,真的是剛剛起步。

網(wǎng)景公司在1995年四月聘請Brendan Eich ,他被告知,他有10天時間創(chuàng)造并制作了一種將在Netscape的瀏覽器中運行,以原型為工作方式的編程語言。那時候,Web創(chuàng)新的步伐是激烈的,由于微軟突然使互聯(lián)網(wǎng)的焦點集中在它即將發(fā)布的Windows 95操作系統(tǒng)作為對新興Netscape的瀏覽器和服務器產(chǎn)品的系統(tǒng)發(fā)布的回應。

當時網(wǎng)景得到如此多的來自微軟的關注,因為網(wǎng)景考慮將Web瀏覽器和服務器作為一個分布式操作系統(tǒng)一種新形式,而不僅僅是一個單一的應用程序的。自從Mosaic在1993年首次亮相,網(wǎng)絡便成為可移植的,跨越Windows,Macintosh和Unix,并給了軟件開發(fā)者他們可以為所有這些環(huán)境中開發(fā)應用程序的希望。

但是,僅憑HTML本身去定義一個新的應用程序開發(fā)環(huán)境或操作系統(tǒng),是遠遠不夠。為了鞏固便攜式操作系統(tǒng)的概念,網(wǎng)絡和網(wǎng)景公司需要便攜式的編程語言。

Sun公司的Java語言似乎是便攜式重量級應用的解決方案。一種產(chǎn)生的字節(jié)代碼并運行在Java虛擬機中的編譯語言,Java支持豐富的來自C++的面向對象的模式并且似乎能夠能夠實現(xiàn)和?++和C相似的性能.Java 是Web對Microsoft的Visual C + +的答案。

走進javascript

眾所周知Java是一個豐富的,復雜的,編譯的,專門針對專業(yè)程序員的語言。Netscape和其他人一樣都想要一個輕量級的解釋語言作為對java的補充。這種語言需要呼應和微軟的Visual Basic和解釋和相像,方便嵌入在網(wǎng)頁中適合非科班出身的程序員。根據(jù)艾希的回憶:

回到1995年的5月,如果我在JavaScript中加入了類,我會被告知這是太像Java或者是JavaScript是在與Java競爭…

我根據(jù)市場營銷原因,使它看起來很像Java,但不能使它太像java,javascript需要是一個愚蠢的小弟弟語言。

鑒于上面所有這些要求,約束,和局限性,布蘭登 艾希所有的時間非常緊迫,他必須制作了一個基于原型工作的,既能夠滿足太陽公司的需求又能夠趕上Netscape的2.0 B測試版的發(fā)布時間表。

技術的啟示

雖然對大多數(shù)程序員來說日程和約束可能已經(jīng)不可能反生的問題,布蘭登 艾希建設新的編程語言已經(jīng)有很長的歷史了。從他作為一個學生開始在伊利諾伊大學里的經(jīng)驗,在那里他建立語言只是進行語法實驗。在硅谷圖形(美國計算機公司),布蘭登 艾希創(chuàng)造出來的語言,可以用來構建網(wǎng)絡監(jiān)控工具的擴展。

很顯然,對于布蘭登 艾希來說建造一個 “再一次” 語言 并不是這困難的部分,對布蘭登 艾希來說這最困難的部分是建造一個復雜的,強大的語言,但卻被禁止使用保留用于Java的面向對象的語法。他想在JavaScript中嵌入先進的功能,并且不涉及java語言的語法。所以導致這門語言最初看起來似乎很簡單,重量輕,尚未成熟的程序員將能夠很輕易的利用其潛在的能力。

像許多其他語言一樣,JavaScript的基本語法來自C語言,包括大括號,分號和保留字。JavaScript是輕便的,和具備簡單的語義和更好的動態(tài)內(nèi)存特性的友好的C語言版本。因為一個典型的網(wǎng)頁的生命周期的持續(xù)時間從幾秒鐘到幾分鐘不等,JavaScript可以采取一種非常簡單的方法,去實現(xiàn)并發(fā)性和內(nèi)存管理。

布蘭登 艾希建立了一個簡化的對象模型,組合結構來自C語言,模式來自Smalltalk和LISP提供的數(shù)據(jù)和代碼之間的對稱性。超卡事件模型啟發(fā)在HTML文檔中添加事件的模式。面向對象的模式是可行的,但通過用原型在運行時的語義(作為Self的代替),而不是編譯器支持的類語法(如在Java和C++中)。

一鳴驚人?

幾乎所有成功的編程語言需要一個2.0版本,在他們正真大步向前發(fā)展之前,但但現(xiàn)在為止,我們還沒有看到,也可能永遠不會看到一個JavaScript2.0。沒有什么能建造在10天時間就是完美的,可是,一旦某些東西被釋放到野外,錯誤或不完善的地方迅速成為必不可少的特色,并且是幾乎不可能改變。根據(jù)布蘭登 艾?;貞洠?/p>

在開始時為了生存,JavaScript擁有的足夠的好東西。如果你回想在20世紀90年代,JavaScript是被人們所詛咒的,因為它主要用于在您的瀏覽器的底部狀態(tài)欄的滾動消息或閃爍圖像。隨著JavaScript獲得一些進化方面的改進[在20世紀90年代后期]通過[ECMA]標準的過程。在2004年和2005年,它變得速度足夠夠快,足夠夠好去催生Web 2.0革命。

盡管JavaScript的最初版本可能并不完美,但它首次采用了比較簡單的應用程序,所以使它有時間在幕后來慢慢演變,并解決其早期的弱點。此外,由于JavaScript的豐富對其其運行時的支持,而不是在它的語言的語法,提高JavaScript實現(xiàn),而無需改變現(xiàn)有的JavaScript程序的語法是比較簡單的。

當今時代

當Ajax革命開始時,JAVASCRIPT已經(jīng)在瀏覽器存在將近10年,移動的JavaScript成為主流應用的重要組成部分的發(fā)展。微軟觸發(fā)Ajax在Web接口的統(tǒng)治地位,通過加入XMLHttpRequest的功能在它的Internet Explorer瀏覽器。其他瀏覽器迅速加入了類似的功能,允許JavaScript從服務器檢索數(shù)據(jù)和更新HTML文檔,而不需要一整頁的請求 - 響應周期。有了這個創(chuàng)新,高度互動的用戶界面功能被搬進創(chuàng)建類似桌面的經(jīng)驗日益豐富的應用程序,如瀏覽器谷歌郵件和谷歌地圖。

由于每一頁所需的代碼和數(shù)據(jù)量的增加,它暴露了JavaScript基于瀏覽器實現(xiàn)運行時的弱點。不在是運行每分鐘左右就重新啟動JavaScript,同一個頁面會在瀏覽器中停留數(shù)分鐘伴隨著巨大的,動態(tài)的在內(nèi)存中的數(shù)據(jù)元素和幾乎連續(xù)的后臺與服務器通信。谷歌建立了自己的Chrome瀏覽器的V8 JavaScript解釋器,把瀏覽器市場上的通知,絕不會容忍低性能的JavaScript實現(xiàn)。市場也迅速跟進和改進的JavaScript解釋器全線表現(xiàn)。

例如Node.js這樣的項目,使人們有可能使用JavaScript的語言構建Web應用程序的服務器元素。因為JavaScript已經(jīng)從一開始急就是基于事件的,建設管理的復雜性,多線程不使用JavaScript的高度可擴展的Web應用程序變得很自然的。

隨著HTML5的出現(xiàn),這是完全有可能,JavaScript將很快成為主導移動和桌面應用程序的編程語言。演進和使用的JavaScript是真的才剛剛開始,這是令人印象深刻的10天,早在1995年開發(fā)的一種語言。

要查看我對艾希的采訪,訪問這里http://youtu.be/IPxQ9kEaF8c。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號