演進(jìn)和使用的JavaScript是早在1995年開(kāi)發(fā)的一種語(yǔ)言,真的是剛剛起步。
網(wǎng)景公司在1995年四月聘請(qǐng)Brendan Eich ,他被告知,他有10天時(shí)間創(chuàng)造并制作了一種將在Netscape的瀏覽器中運(yùn)行,以原型為工作方式的編程語(yǔ)言。那時(shí)候,Web創(chuàng)新的步伐是激烈的,由于微軟突然使互聯(lián)網(wǎng)的焦點(diǎn)集中在它即將發(fā)布的Windows 95操作系統(tǒng)作為對(duì)新興Netscape的瀏覽器和服務(wù)器產(chǎn)品的系統(tǒng)發(fā)布的回應(yīng)。
當(dāng)時(shí)網(wǎng)景得到如此多的來(lái)自微軟的關(guān)注,因?yàn)榫W(wǎng)景考慮將Web瀏覽器和服務(wù)器作為一個(gè)分布式操作系統(tǒng)一種新形式,而不僅僅是一個(gè)單一的應(yīng)用程序的。自從Mosaic在1993年首次亮相,網(wǎng)絡(luò)便成為可移植的,跨越Windows,Macintosh和Unix,并給了軟件開(kāi)發(fā)者他們可以為所有這些環(huán)境中開(kāi)發(fā)應(yīng)用程序的希望。
但是,僅憑HTML本身去定義一個(gè)新的應(yīng)用程序開(kāi)發(fā)環(huán)境或操作系統(tǒng),是遠(yuǎn)遠(yuǎn)不夠。為了鞏固便攜式操作系統(tǒng)的概念,網(wǎng)絡(luò)和網(wǎng)景公司需要便攜式的編程語(yǔ)言。
Sun公司的Java語(yǔ)言似乎是便攜式重量級(jí)應(yīng)用的解決方案。一種產(chǎn)生的字節(jié)代碼并運(yùn)行在Java虛擬機(jī)中的編譯語(yǔ)言,Java支持豐富的來(lái)自C++的面向?qū)ο蟮哪J讲⑶宜坪跄軌蚰軌驅(qū)崿F(xiàn)和?++和C相似的性能.Java 是Web對(duì)Microsoft的Visual C + +的答案。
眾所周知Java是一個(gè)豐富的,復(fù)雜的,編譯的,專門針對(duì)專業(yè)程序員的語(yǔ)言。Netscape和其他人一樣都想要一個(gè)輕量級(jí)的解釋語(yǔ)言作為對(duì)java的補(bǔ)充。這種語(yǔ)言需要呼應(yīng)和微軟的Visual Basic和解釋和相像,方便嵌入在網(wǎng)頁(yè)中適合非科班出身的程序員。根據(jù)艾希的回憶:
回到1995年的5月,如果我在JavaScript中加入了類,我會(huì)被告知這是太像Java或者是JavaScript是在與Java競(jìng)爭(zhēng)…
我根據(jù)市場(chǎng)營(yíng)銷原因,使它看起來(lái)很像Java,但不能使它太像java,javascript需要是一個(gè)愚蠢的小弟弟語(yǔ)言。
鑒于上面所有這些要求,約束,和局限性,布蘭登 艾希所有的時(shí)間非常緊迫,他必須制作了一個(gè)基于原型工作的,既能夠滿足太陽(yáng)公司的需求又能夠趕上Netscape的2.0 B測(cè)試版的發(fā)布時(shí)間表。
雖然對(duì)大多數(shù)程序員來(lái)說(shuō)日程和約束可能已經(jīng)不可能反生的問(wèn)題,布蘭登 艾希建設(shè)新的編程語(yǔ)言已經(jīng)有很長(zhǎng)的歷史了。從他作為一個(gè)學(xué)生開(kāi)始在伊利諾伊大學(xué)里的經(jīng)驗(yàn),在那里他建立語(yǔ)言只是進(jìn)行語(yǔ)法實(shí)驗(yàn)。在硅谷圖形(美國(guó)計(jì)算機(jī)公司),布蘭登 艾希創(chuàng)造出來(lái)的語(yǔ)言,可以用來(lái)構(gòu)建網(wǎng)絡(luò)監(jiān)控工具的擴(kuò)展。
很顯然,對(duì)于布蘭登 艾希來(lái)說(shuō)建造一個(gè) “再一次” 語(yǔ)言 并不是這困難的部分,對(duì)布蘭登 艾希來(lái)說(shuō)這最困難的部分是建造一個(gè)復(fù)雜的,強(qiáng)大的語(yǔ)言,但卻被禁止使用保留用于Java的面向?qū)ο蟮恼Z(yǔ)法。他想在JavaScript中嵌入先進(jìn)的功能,并且不涉及java語(yǔ)言的語(yǔ)法。所以導(dǎo)致這門語(yǔ)言最初看起來(lái)似乎很簡(jiǎn)單,重量輕,尚未成熟的程序員將能夠很輕易的利用其潛在的能力。
像許多其他語(yǔ)言一樣,JavaScript的基本語(yǔ)法來(lái)自C語(yǔ)言,包括大括號(hào),分號(hào)和保留字。JavaScript是輕便的,和具備簡(jiǎn)單的語(yǔ)義和更好的動(dòng)態(tài)內(nèi)存特性的友好的C語(yǔ)言版本。因?yàn)橐粋€(gè)典型的網(wǎng)頁(yè)的生命周期的持續(xù)時(shí)間從幾秒鐘到幾分鐘不等,JavaScript可以采取一種非常簡(jiǎn)單的方法,去實(shí)現(xiàn)并發(fā)性和內(nèi)存管理。
布蘭登 艾希建立了一個(gè)簡(jiǎn)化的對(duì)象模型,組合結(jié)構(gòu)來(lái)自C語(yǔ)言,模式來(lái)自Smalltalk和LISP提供的數(shù)據(jù)和代碼之間的對(duì)稱性。超卡事件模型啟發(fā)在HTML文檔中添加事件的模式。面向?qū)ο蟮哪J绞强尚械?,但通過(guò)用原型在運(yùn)行時(shí)的語(yǔ)義(作為Self的代替),而不是編譯器支持的類語(yǔ)法(如在Java和C++中)。
幾乎所有成功的編程語(yǔ)言需要一個(gè)2.0版本,在他們正真大步向前發(fā)展之前,但但現(xiàn)在為止,我們還沒(méi)有看到,也可能永遠(yuǎn)不會(huì)看到一個(gè)JavaScript2.0。沒(méi)有什么能建造在10天時(shí)間就是完美的,可是,一旦某些東西被釋放到野外,錯(cuò)誤或不完善的地方迅速成為必不可少的特色,并且是幾乎不可能改變。根據(jù)布蘭登 艾希回憶:
在開(kāi)始時(shí)為了生存,JavaScript擁有的足夠的好東西。如果你回想在20世紀(jì)90年代,JavaScript是被人們所詛咒的,因?yàn)樗饕糜谠谀臑g覽器的底部狀態(tài)欄的滾動(dòng)消息或閃爍圖像。隨著JavaScript獲得一些進(jìn)化方面的改進(jìn)[在20世紀(jì)90年代后期]通過(guò)[ECMA]標(biāo)準(zhǔn)的過(guò)程。在2004年和2005年,它變得速度足夠夠快,足夠夠好去催生Web 2.0革命。
盡管JavaScript的最初版本可能并不完美,但它首次采用了比較簡(jiǎn)單的應(yīng)用程序,所以使它有時(shí)間在幕后來(lái)慢慢演變,并解決其早期的弱點(diǎn)。此外,由于JavaScript的豐富對(duì)其其運(yùn)行時(shí)的支持,而不是在它的語(yǔ)言的語(yǔ)法,提高JavaScript實(shí)現(xiàn),而無(wú)需改變現(xiàn)有的JavaScript程序的語(yǔ)法是比較簡(jiǎn)單的。
當(dāng)Ajax革命開(kāi)始時(shí),JAVASCRIPT已經(jīng)在瀏覽器存在將近10年,移動(dòng)的JavaScript成為主流應(yīng)用的重要組成部分的發(fā)展。微軟觸發(fā)Ajax在Web接口的統(tǒng)治地位,通過(guò)加入XMLHttpRequest的功能在它的Internet Explorer瀏覽器。其他瀏覽器迅速加入了類似的功能,允許JavaScript從服務(wù)器檢索數(shù)據(jù)和更新HTML文檔,而不需要一整頁(yè)的請(qǐng)求 - 響應(yīng)周期。有了這個(gè)創(chuàng)新,高度互動(dòng)的用戶界面功能被搬進(jìn)創(chuàng)建類似桌面的經(jīng)驗(yàn)日益豐富的應(yīng)用程序,如瀏覽器谷歌郵件和谷歌地圖。
由于每一頁(yè)所需的代碼和數(shù)據(jù)量的增加,它暴露了JavaScript基于瀏覽器實(shí)現(xiàn)運(yùn)行時(shí)的弱點(diǎn)。不在是運(yùn)行每分鐘左右就重新啟動(dòng)JavaScript,同一個(gè)頁(yè)面會(huì)在瀏覽器中停留數(shù)分鐘伴隨著巨大的,動(dòng)態(tài)的在內(nèi)存中的數(shù)據(jù)元素和幾乎連續(xù)的后臺(tái)與服務(wù)器通信。谷歌建立了自己的Chrome瀏覽器的V8 JavaScript解釋器,把瀏覽器市場(chǎng)上的通知,絕不會(huì)容忍低性能的JavaScript實(shí)現(xiàn)。市場(chǎng)也迅速跟進(jìn)和改進(jìn)的JavaScript解釋器全線表現(xiàn)。
例如Node.js這樣的項(xiàng)目,使人們有可能使用JavaScript的語(yǔ)言構(gòu)建Web應(yīng)用程序的服務(wù)器元素。因?yàn)镴avaScript已經(jīng)從一開(kāi)始急就是基于事件的,建設(shè)管理的復(fù)雜性,多線程不使用JavaScript的高度可擴(kuò)展的Web應(yīng)用程序變得很自然的。
隨著HTML5的出現(xiàn),這是完全有可能,JavaScript將很快成為主導(dǎo)移動(dòng)和桌面應(yīng)用程序的編程語(yǔ)言。演進(jìn)和使用的JavaScript是真的才剛剛開(kāi)始,這是令人印象深刻的10天,早在1995年開(kāi)發(fā)的一種語(yǔ)言。
要查看我對(duì)艾希的采訪,訪問(wèn)這里http://youtu.be/IPxQ9kEaF8c。
更多建議: