5月編程語(yǔ)言排行榜:動(dòng)態(tài)語(yǔ)言的前世今生
原創(chuàng)【51CTO獨(dú)家特稿】TIOBE近日發(fā)布了2010年5月的編程語(yǔ)言排行榜,上期榜單C語(yǔ)言反超Java,本期C繼續(xù)以18.186%的份額領(lǐng)跑,Java則位居第二。排名三到五位的依然是C++、PHP、VB,以下是本期編程語(yǔ)言排行榜前十名榜單:
更多榜單回顧,歡迎訪問:51CTO編程語(yǔ)言排行榜
仔細(xì)觀察本期榜單的Top10,我們會(huì)發(fā)現(xiàn)其中半數(shù)是動(dòng)態(tài)語(yǔ)言,它們是:PHP、Visual Basic、Python、Perl和JavaScript。今天我們就一起走進(jìn)動(dòng)態(tài)語(yǔ)言的前世今生。
何謂動(dòng)態(tài)?
對(duì)于動(dòng)態(tài)語(yǔ)言,網(wǎng)上比較流行的說法是:程序在運(yùn)行時(shí)可以改變其結(jié)構(gòu),新的函數(shù)可以被引進(jìn),已有的函數(shù)可以被刪除,即程序在運(yùn)行時(shí)可以發(fā)生結(jié)構(gòu)上的變化。我們可以理解成:直接被解釋執(zhí)行的語(yǔ)言稱為動(dòng)態(tài)語(yǔ)言。而需要編譯環(huán)境將程序轉(zhuǎn)換為其它的中間編碼再執(zhí)行的語(yǔ)言稱為靜態(tài)語(yǔ)言。
事實(shí)上,動(dòng)態(tài)語(yǔ)言的根本是在語(yǔ)言設(shè)計(jì)之初的編譯策略選擇,即:編譯器能對(duì)一段程序作出哪些判定。如果一個(gè)語(yǔ)言使用的編譯策略支持編譯器靜態(tài)決定某個(gè)問題,我們認(rèn)為這個(gè)語(yǔ)言使用了一個(gè)靜態(tài)(static)策略,或這說這個(gè)問題可以在編譯時(shí)刻(compile time)決定。另一方面,一個(gè)只允許在運(yùn)行程序的時(shí)刻做出決定的策略成為動(dòng)態(tài)策略(dynamic policy),或這被認(rèn)為需要在運(yùn)行時(shí)刻(run time)作出決定,(以上摘自《編譯原理 2ed》)。一門語(yǔ)言動(dòng)態(tài)與否的重點(diǎn)是在編譯和運(yùn)行,這在應(yīng)用場(chǎng)景方面所產(chǎn)生的不同與程序員的工作密切相關(guān):你能做什么,在何時(shí)做。
動(dòng)態(tài)語(yǔ)言的歷史
世界上第一門動(dòng)態(tài)語(yǔ)言(也是世界上第二門編程語(yǔ)言)是Lisp,其后很多語(yǔ)言都從Lisp身上繼承了必要的優(yōu)勢(shì)基因(比如Smaltalk、Python、Ruby等),動(dòng)態(tài)性就是其中之一。上世紀(jì)七十年代,Smalltalk語(yǔ)言出現(xiàn),集合了面向?qū)ο蠛蛣?dòng)態(tài)性獲得當(dāng)時(shí)開發(fā)界的認(rèn)可;1986年P(guān)erl出現(xiàn),高效的開發(fā)效率和極少的語(yǔ)法限制獲得了大量程序員的歡迎,也使更多人領(lǐng)教了動(dòng)態(tài)語(yǔ)言的魅力。
目前,主要的動(dòng)態(tài)編程語(yǔ)言有:PHP、Visual Basic、Ruby、Python、JavaScript、Groovy和Perl等,從動(dòng)態(tài)與靜態(tài)語(yǔ)言趨勢(shì)圖可以看出,動(dòng)態(tài)語(yǔ)言已經(jīng)逐漸轉(zhuǎn)變成主流的編程語(yǔ)言,它們是Web應(yīng)用開發(fā)的主力,并以一種比較輕松的姿態(tài)漸漸走進(jìn)軟件開發(fā)的其他角落。動(dòng)態(tài)語(yǔ)言近年的高速發(fā)展與其自身特點(diǎn)和IT界的高速發(fā)展有很大關(guān)系。
近十年動(dòng)態(tài)語(yǔ)言與靜態(tài)語(yǔ)言走勢(shì)圖
因何而動(dòng)?
與靜態(tài)語(yǔ)言不同,動(dòng)態(tài)語(yǔ)言對(duì)類型的要求并不十分嚴(yán)格,代碼簡(jiǎn)潔自由,一般的動(dòng)態(tài)語(yǔ)言多為動(dòng)態(tài)類型和弱類型,自身即支持泛型編程(這里的類型歸納并不絕對(duì),一般認(rèn)為Python屬?gòu)?qiáng)類型語(yǔ)言,Groovy支持靜態(tài)類型)。動(dòng)態(tài)語(yǔ)言秉承的一個(gè)理念是:優(yōu)化人的時(shí)間而不是機(jī)器的時(shí)間。因此動(dòng)態(tài)語(yǔ)言會(huì)為提高程序員的生產(chǎn)力方面不遺余力,但對(duì)程序性能方面的影響也不可忽視。
51CTO一直提倡從應(yīng)用場(chǎng)景和程序員生產(chǎn)力兩個(gè)方面來評(píng)價(jià)一門語(yǔ)言或技術(shù)。站在程序員的角度,使用動(dòng)態(tài)語(yǔ)言進(jìn)行程序開發(fā)要比靜態(tài)編譯型語(yǔ)言更加輕松自如,沒有過多的語(yǔ)法和編譯限制。我們經(jīng)??梢月牭綇钠渌Z(yǔ)言轉(zhuǎn)向Ruby或Python的人提到“編程的樂趣”,這種樂趣是源自動(dòng)態(tài)語(yǔ)言更接近人的思維(而不是機(jī)器思維),更符合項(xiàng)目需求流程而不是項(xiàng)目實(shí)現(xiàn)流程;同樣一個(gè)功能,動(dòng)態(tài)語(yǔ)言可以用更小的代碼量來實(shí)現(xiàn)。動(dòng)態(tài)語(yǔ)言對(duì)程序員生產(chǎn)力的提高,是其大行其道的主要原因。
在性能方面,動(dòng)態(tài)語(yǔ)言沒有太大的優(yōu)勢(shì),但動(dòng)態(tài)語(yǔ)言的理念是:優(yōu)化人的時(shí)間而不是機(jī)器的時(shí)間。提高開發(fā)者的生產(chǎn)力,寧肯犧牲部分的程序性能或者購(gòu)買更高配置的硬件。隨著IT業(yè)的不斷發(fā)展和摩爾定律的作用,硬件相對(duì)于人件一直在貶值,這個(gè)理念便有了合理的現(xiàn)實(shí)基礎(chǔ)。從動(dòng)態(tài)與靜態(tài)語(yǔ)言趨勢(shì)圖可以看出,動(dòng)態(tài)語(yǔ)言的抬升自2002年開始,2004年達(dá)到高潮,這一區(qū)間也正是計(jì)算機(jī)硬件價(jià)格大幅降低、互聯(lián)網(wǎng)高速發(fā)展的時(shí)段。動(dòng)態(tài)語(yǔ)言的流行,事實(shí)上是動(dòng)態(tài)語(yǔ)言的相關(guān)特性迎合了互聯(lián)網(wǎng)和IT界的發(fā)展,提高了程序員的生產(chǎn)力;雖然具有種種性能方面的不足,但很明顯,動(dòng)態(tài)語(yǔ)言的優(yōu)點(diǎn)戰(zhàn)勝了這些缺點(diǎn)。
#p#
其他編程語(yǔ)言及趨勢(shì)
下面是本期榜單第21-50的編程語(yǔ)言排名:
以下是本期第51-100的語(yǔ)言排名
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年編程語(yǔ)言排行榜回顧】
- 4月編程語(yǔ)言排行榜:Top20里的“陌生人”
- 2010年3月編程語(yǔ)言排行榜:Fortran歸來
- 2月編程語(yǔ)言排行榜:Objective-C的詠嘆調(diào)
- 1月編程榜發(fā)布:Google Go意外奪得年度編程語(yǔ)言