5月編程語言排行榜:動態語言的前世今生
原創【51CTO獨家特稿】TIOBE近日發布了2010年5月的編程語言排行榜,上期榜單C語言反超Java,本期C繼續以18.186%的份額領跑,Java則位居第二。排名三到五位的依然是C++、PHP、VB,以下是本期編程語言排行榜前十名榜單:
更多榜單回顧,歡迎訪問:51CTO編程語言排行榜
仔細觀察本期榜單的Top10,我們會發現其中半數是動態語言,它們是:PHP、Visual Basic、Python、Perl和JavaScript。今天我們就一起走進動態語言的前世今生。
何謂動態?
對于動態語言,網上比較流行的說法是:程序在運行時可以改變其結構,新的函數可以被引進,已有的函數可以被刪除,即程序在運行時可以發生結構上的變化。我們可以理解成:直接被解釋執行的語言稱為動態語言。而需要編譯環境將程序轉換為其它的中間編碼再執行的語言稱為靜態語言。
事實上,動態語言的根本是在語言設計之初的編譯策略選擇,即:編譯器能對一段程序作出哪些判定。如果一個語言使用的編譯策略支持編譯器靜態決定某個問題,我們認為這個語言使用了一個靜態(static)策略,或這說這個問題可以在編譯時刻(compile time)決定。另一方面,一個只允許在運行程序的時刻做出決定的策略成為動態策略(dynamic policy),或這被認為需要在運行時刻(run time)作出決定,(以上摘自《編譯原理 2ed》)。一門語言動態與否的重點是在編譯和運行,這在應用場景方面所產生的不同與程序員的工作密切相關:你能做什么,在何時做。
動態語言的歷史
世界上第一門動態語言(也是世界上第二門編程語言)是Lisp,其后很多語言都從Lisp身上繼承了必要的優勢基因(比如Smaltalk、Python、Ruby等),動態性就是其中之一。上世紀七十年代,Smalltalk語言出現,集合了面向對象和動態性獲得當時開發界的認可;1986年Perl出現,高效的開發效率和極少的語法限制獲得了大量程序員的歡迎,也使更多人領教了動態語言的魅力。
目前,主要的動態編程語言有:PHP、Visual Basic、Ruby、Python、JavaScript、Groovy和Perl等,從動態與靜態語言趨勢圖可以看出,動態語言已經逐漸轉變成主流的編程語言,它們是Web應用開發的主力,并以一種比較輕松的姿態漸漸走進軟件開發的其他角落。動態語言近年的高速發展與其自身特點和IT界的高速發展有很大關系。
因何而動?
與靜態語言不同,動態語言對類型的要求并不十分嚴格,代碼簡潔自由,一般的動態語言多為動態類型和弱類型,自身即支持泛型編程(這里的類型歸納并不絕對,一般認為Python屬強類型語言,Groovy支持靜態類型)。動態語言秉承的一個理念是:優化人的時間而不是機器的時間。因此動態語言會為提高程序員的生產力方面不遺余力,但對程序性能方面的影響也不可忽視。
51CTO一直提倡從應用場景和程序員生產力兩個方面來評價一門語言或技術。站在程序員的角度,使用動態語言進行程序開發要比靜態編譯型語言更加輕松自如,沒有過多的語法和編譯限制。我們經??梢月牭綇钠渌Z言轉向Ruby或Python的人提到“編程的樂趣”,這種樂趣是源自動態語言更接近人的思維(而不是機器思維),更符合項目需求流程而不是項目實現流程;同樣一個功能,動態語言可以用更小的代碼量來實現。動態語言對程序員生產力的提高,是其大行其道的主要原因。
在性能方面,動態語言沒有太大的優勢,但動態語言的理念是:優化人的時間而不是機器的時間。提高開發者的生產力,寧肯犧牲部分的程序性能或者購買更高配置的硬件。隨著IT業的不斷發展和摩爾定律的作用,硬件相對于人件一直在貶值,這個理念便有了合理的現實基礎。從動態與靜態語言趨勢圖可以看出,動態語言的抬升自2002年開始,2004年達到高潮,這一區間也正是計算機硬件價格大幅降低、互聯網高速發展的時段。動態語言的流行,事實上是動態語言的相關特性迎合了互聯網和IT界的發展,提高了程序員的生產力;雖然具有種種性能方面的不足,但很明顯,動態語言的優點戰勝了這些缺點。
#p#
其他編程語言及趨勢
下面是本期榜單第21-50的編程語言排名:
以下是本期第51-100的語言排名
ABC, Algol, APL, Applescript, Awk, Beta, cg, Clean, cT, Dylan, Eiffel, Euphoria, Factor, Falcon, Focus, Heron, Icon, IDL, Inform, Informix-4GL, Io, LabWindows/CVI, Lingo, LotusScript, LPC, MAD, Maple, Mathematica, MAX/MSP, Modula-2, Modula-3, MS-DOS batch, MUMPS, Natural, Occam, Oz, PL/I, Postscript, Progress, Q, R, Revolution, REXX, Sed, Seed7, SIGNAL, SPSS, VBScript, VHDL, XSLT
【2010年編程語言排行榜回顧】
- 4月編程語言排行榜:Top20里的“陌生人”
- 2010年3月編程語言排行榜:Fortran歸來
- 2月編程語言排行榜:Objective-C的詠嘆調
- 1月編程榜發布:Google Go意外奪得年度編程語言