JavaScript:從最受誤解的程式設計語言演變為最流行的語言 The World’s Most Misunderstood Programming Language Has Become

來源:互聯網
上載者:User

edit@2011-4-27 by frank
: 1、加入了插圖;2、修改了文章的字眼、語句;3、統一了CSS樣式。

最新地址在http://www.ajaxjs.com/popular.htm

-----------------------------

早期07年學習js時候翻譯的文章,後來發mail給DC,DC就加上我的連結了,嘿嘿。

作者:Douglas Crockford 08.3.3

原文:http://javascript.crockford.com/popular.html

《電腦語言:曆史與基石》一書由Jean Sammet寫於1969年。此書的內容是對120種程式設計語言的考查,其中一些語言有詳盡的簡介。Sammet這本語言編年史寫在隨後的結構化編程革命(Structured
Programming Revolution)、物件導向編程之前。書籍以一張巴別塔(Tower of Babel,又譯通天塔。見譯註)的圖片作封面。塔身由磚塊圍成,圍在裡面的是各種名稱的程式設計語言。

譯註:巴別塔,《聖經》中的通天塔,大洪水之後諾亞的子孫繁衍,並試圖建造通天塔直通天界,上帝不爽,於是給他們創造了不同的語言,語言隔閡、交流障礙,通天塔轟然倒塌。

這是大家熟知的《聖經Genesis》[11:1-9]的故事:

耶和華降臨,要看看世人所建造的城和塔。耶和華說,看哪,他們成為一樣的人民,都是一樣的言語,如今既作起這事來,以後他們所要作的事就沒有不成就的了。
我們下去,在那裡變亂他們的口音,使他們的言語彼此不通。於是,耶和華使他們從那裡分散在全地上。他們就停工,不造那城了。因為耶和華在那裡變亂天下人的言語,使眾人分散在全地上,所以那城名叫巴別(巴別就是變亂的意思)。

這段意思有時理解為做人不能太傲慢;有時理解為一個寓言故事,告訴你為什麼人們在說不同的語言:耶和華為防止人們達到自己的潛能而製造了i18N
問題。不過我想把這個道理放到程式設計語言上去理解也是如此。編程根本問題在於對複雜問題的掌控能力。如果語言在需求變化時未能協助我們處理複雜的系統,而最終令人感到混亂,自然離失敗不遠。

為何有如此之多的程式設計語言?不計Sammet當時的數量,過去四十年已經有大量的新語言或方言問世。雖說我們已經在好長的時間內是在一個進階(High
Level)的環境下編程了,但真正能跨域邊界,達致完備的地方還不是很多。那麼我們應不應該就遵循某種恰當的方式來做,更幛顯電腦的優勢呢?毫無疑
問,能夠以同一種絕佳的語言進行設計所帶來的效率是很明顯的。因為我們可以更有效地集中資源來配合來培訓或工具的研發。為什麼我們還不這樣子做?

我們已經努力過。現在已經有幾種語言嘗試構建起大規模的、通用的語言,結果卻是失敗了。隨著語言設計的不斷更新,加入更多的功能,從而使語言本身變得越來越複雜。

因此我們看到取而代之的是許多的專用語言。在完成一些任務的領域中,專用語言可以非常高效地解決,而且本身是不錯的。對於要完成此類任務的人而言,選擇好的語言,自然是如虎添翼。

一門程式設計語言從某些運算式的文法的運算得到模型的修正。大多數語言有一組常用的值如數字和文本(numbers、texts
在大多數語言中,奇怪地稱作字串),和若干的操作,如改變和合成值,或一些變數和迴圈的操作,還有就是把一些常用的操作打包到命令中。

變化是行如幻影,變化莫測,就像一道菜和一首樂曲每一次都不盡相同。語言設計的藝術在於清楚哪些是舍的(leave out)。一門良好語言,它裡面的功能應該是和諧地工作在一起,協助我們更好地明白問題和找出解決方案的最佳表達方式(the
best expression of its solutio)。

一門好的語言有幾組功能所構成,但是哪一項的功能才是最好的就永遠沒有結論。程式員可以不斷地討論這個話題和是否比其他的語言優秀。這裡不是說功能不重要。功能它非常重要。只不過我們還沒清楚它真的這麼重要。

 時髦與技術之間語言設計需要做更多的是在時髦方面。時髦是nerdliest藝術中一種主要的因素,可能看起來很奇怪,但的確是一點不假。無論語言的設計有多麼精巧,若以一個另類的文法出現的話,是沒有希望得到廣泛使用的。這樣會約束了語言的進化。

像音樂和食物一樣,程式設計語言也屬於時間的產物。語言設計的深層問題不是技術上的,是心理上的問題。一門程式設計語言應該與我們認知的結構相吻合,以便更高效率地協助我們判斷問題。

程式設計語言像貓這種動物,換一隻貓總比把一隻舊的貓馴化容易些。按照常理,大多數語言成功後由後來的升級版所取締。重新規劃的語言幾乎很少到達舊版那種成就。Fortan曾經是語言翹楚,好些年在不斷改進,但Fortran
IV的聲譽非現代化後的Fortran方言所能及。類似地,Pascal是結構化編程的流行語言,但其OO的版本難蓋原Pascal之光芒。結果,它漸漸被取代。

專用語言做起來挺有意思的,這也解釋了它們的數量為什麼是如此地多。如果一門語言結構不太龐大,那麼一個程式員就可以掌控它了。大多數語言可以由一個設計師自己創造出來。Pascal:Wirth。C:
Ritchie。C++: Stroustrup。Java: Gosling. C#:Hejlsberg。Rebol: Sassenrath。Python:van
Rossum.PHP: Lerdorf. Perl:Wall. Ruby: Matsumoto。Lua: Ierusalimschy. E:Miller。JavaScript:Eich。

大多數語言失敗之處在於不夠清晰。而剩下不多的語言能夠一直在單個項目或公司中使用下去。也只有極少數量的語言成為重要的語言。

有兩種途徑會使某種語言變得更重要。第一是它能讓思想光輝發射光芒。Smalltalk和Scheme都具備這種特質,雖然這些語言並不廣泛使用,現在看也是過時的,但它們公認為是傑出的語言,並對後來的語言設計帶來深遠的影響。

第二是他本身的流行程度怎麼樣,體現了語言的重要性。

程式員在選擇一門程式設計語言的時候,很多東西必須再三考慮,不過到了編寫web瀏覽器的時候當前唯一的選擇便是JavaScript。

JavaScript可算是一種乖張、亦正亦邪的語言,其貌不揚。它這種乖張的特性給它帶來極其糟糕的聲譽。DOM文件物件模型也與JavaScript
同休公戚,是一個讓人不太討好的API。在理清了JavaScript的概念之後關於DOM各種亂七八糟的東西又隨著來(譯註:跨瀏覽器的障礙)。有許多人嚷著要改進JavaScript,但就目前web開發的狀況而言可改善的餘地很少。JavaScript語言的功能不夠清晰,包括彆扭的互動操作或失敗
的設計。正如Emperor Joseph所說的,這語言搞太多花樣了。

嗯,那這個JavaScript的缺失之處這麼多,怎麼還能做Web的龍頭程式設計語言?Brendan
Eich就有這個本事,能夠說服當時Netscape的禿頭老闆,要做Navigator自己的指令碼語言,還要不是新的語言不去做,——就這樣,匆匆忙忙地設計出一門新的語言並實現出來,還真的沒有別的語言能代替這種需求。為了能蠶食Netscape的市場份額,微軟的IE團隊通過逆向工程小心翼翼地得到
Netscape的語言,明顯有許多不足但也不管三七二十一了。其他瀏覽器廠商亦效仿微軟的做法,因此不存在web瀏覽必須實現的是標準的
JavaScript之說法。除了JavaScript外,沒有其他語言的實現可以在瀏覽器內全部行得通。互連網發展一切充滿著未知,因此不存在對語言仔細地調研,並從來沒有什麼前期性的調研或周密的設計。它只是出自Netscape之手,然後不斷被複製而已。若我們刻意、費煞苦心地創造一個類似JavaScript的東東而且為它過早地去建立一個標準,那麼說不定這不是我們想要的。

儘管JavaScript充滿著缺點,但深入其核心是有許多地方錯有錯著的。當你一步一步慢慢到內部瞭解,會發現這個一個精練和強大的程式設計語言。許多
Ajax庫現在用JavaScript來處理DOM,以網頁的形式來產生應用程式的互動平台。Ajax變得更為流行正因JavaScirpt還算可以的,
而且還超乎我們的想象。世界上最為流行的JavaScript曾經是世界上最受誤解的語言。以其明顯的缺陷、不時髦的編程模型、令全世界都誤導的簡介與它那個不相稱的名字,曾經讓大多數聰明的程式員覺得毫無價值而遭到抵制。但是Ajax給了JavaSciprt第二次的機會。

正因為JavaScript是瀏覽器的語言,正因為web瀏覽器漸漸成為傳送訊息程式中的重要部分,正因為JavaScript並不是太糟
糕,JavaSciprt已經成為世界上最流行的程式設計語言。由於流通性在加大,同時也被應用在一些嵌入式程式中,——JavaScript已經越來越重要了。

It is better to be lucky than smart..

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.