【51CTO獨家特稿】TIOBE近日發佈了2010年5月的編程語言排行榜,上期榜單C語言反超Java,本期C繼續以18.186%的份額領跑,Java則位居第二。排名三到五位的依然是C++、PHP、VB,如下是本期編程語言排行榜前十名榜單:javascript
更多榜單回顧,歡迎訪問:51CTO編程語言排行榜java
仔細觀察本期榜單的Top10,咱們會發現其中半數是動態語言,它們是:PHP、Visual Basic、Python、Perl和JavaScript。今天咱們就一塊兒走進動態語言的前世此生。編程
何謂動態?ide
對於動態語言,網上比較流行的說法是:程序在運行時能夠改變其結構,新的函數能夠被引進,已有的函數能夠被刪除,即程序在運行時能夠發生結構上的變化。咱們能夠理解成:直接被解釋執行的語言稱爲動態語言。而須要編譯環境將程序轉換爲其它的中間編碼再執行的語言稱爲靜態語言。函數
事實上,動態語言的根本是在語言設計之初的編譯策略選擇,即:編譯器能對一段程序做出哪些斷定。若是一個語言使用的編譯策略支持編譯器靜態決定某個問題,咱們認爲這個語言使用了一個靜態(static)策略,或這說這個問題能夠在編譯時刻(compile time)決定。另外一方面,一個只容許在運行程序的時刻作出決定的策略成爲動態策略(dynamic policy),或這被認爲須要在運行時刻(run time)做出決定,(以上摘自《編譯原理 2ed》)。一門語言動態與否的重點是在編譯和運行,這在應用場景方面所產生的不一樣與程序員的工做密切相關:你能作什麼,在什麼時候作。性能
動態語言的歷史優化
世界上第一門動態語言(也是世界上第二門編程語言)是Lisp,其後不少語言都從Lisp身上繼承了必要的優點基因(好比Smaltalk、Python、Ruby等),動態性就是其中之一。上世紀七十年代,Smalltalk語言出現,集合了面向對象和動態性得到當時開發界的承認;1986年Perl出現,高效的開發效率和極少的語法限制得到了大量程序員的歡迎,也使更多人領教了動態語言的魅力。this
目前,主要的動態編程語言有:PHP、Visual Basic、Ruby、Python、JavaScript、Groovy和Perl等,從動態與靜態語言趨勢圖能夠看出,動態語言已經逐漸轉變成主流的編程語言,它們是Web應用開發的主力,並以一種比較輕鬆的姿態漸漸走進軟件開發的其餘角落。動態語言近年的高速發展與其自身特色和IT界的高速發展有很大關係。
因何而動?
與靜態語言不一樣,動態語言對類型的要求並不十分嚴格,代碼簡潔自由,通常的動態語言多爲動態類型和弱類型,自身即支持泛型編程(這裏的類型概括並不絕對,通常認爲Python屬強類型語言,Groovy支持靜態類型)。動態語言秉承的一個理念是:優化人的時間而不是機器的時間。所以動態語言會爲提升程序員的生產力方面竭盡全力,但對程序性能方面的影響也不可忽視。
51CTO一直提倡從應用場景和程序員生產力兩個方面來評價一門語言或技術。站在程序員的角度,使用動態語言進行程序開發要比靜態編譯型語言更加輕鬆自如,沒有過多的語法和編譯限制。咱們常常能夠聽到從其餘語言轉向Ruby或Python的人提到「編程的樂趣」,這種樂趣是源自動態語言更接近人的思惟(而不是機器思惟),更符合項目需求流程而不是項目實現流程;一樣一個功能,動態語言能夠用更小的代碼量來實現。動態語言對程序員生產力的提升,是其大行其道的主要緣由。
在性能方面,動態語言沒有太大的優點,但動態語言的理念是:優化人的時間而不是機器的時間。提升開發者的生產力,寧可犧牲部分的程序性能或者購買更高配置的硬件。隨着IT業的不斷髮展和摩爾定律的做用,硬件相對於人件一直在貶值,這個理念便有了合理的現實基礎。從動態與靜態語言趨勢圖能夠看出,動態語言的擡升自2002年開始,2004年達到高潮,這一區間也正是計算機硬件價格大幅下降、互聯網高速發展的時段。動態語言的流行,事實上是動態語言的相關特性迎合了互聯網和IT界的發展,提升了程序員的生產力;雖然具備種種性能方面的不足,但很明顯,動態語言的優勢打敗了這些缺點。
其餘編程語言及趨勢
下面是本期榜單第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年編程語言排行榜回顧】