TIOBE今日公布了2009年4月的編程語(yǔ)言排行榜,本期前十的榜單與上期相比沒(méi)明顯變化,Java、C、C++依然以絕對(duì)優(yōu)勢(shì)占據(jù)前三甲的位置;排名第四到十位的分別是:PHP、VB、Python、C#、JavaScript、Perl和Ruby。Ruby經(jīng)過(guò)數(shù)月的艱難爬升后終于進(jìn)入前十,上期第十名Delphi下滑一位,排在第十一位。 仔細(xì)分析本期榜單可以看出,前十名中的PHP、Python、 JavaScript、Perl、Ruby均為腳本級(jí)語(yǔ)言(榜單中的Visual Baisc未列入腳本級(jí)語(yǔ)言,但在ASP和ASP.NET中,如果選擇VB作為開(kāi)發(fā)語(yǔ)言,則是以VB Script這種腳本進(jìn)行編程的);撇開(kāi)應(yīng)用場(chǎng)景和項(xiàng)目規(guī)模不說(shuō),至少在使用率上,腳本語(yǔ)言已經(jīng)占據(jù)了編程語(yǔ)言的半壁江山。 2009年4月TIOBE編程語(yǔ)言排行榜前20名 腳本語(yǔ)言(Script language,或scripting programming language)是為了縮短傳統(tǒng)的編寫(xiě)-編譯-鏈接-運(yùn)行(edit-compile-link-run)過(guò)程而創(chuàng)建的計(jì)算機(jī)編程語(yǔ)言。腳本語(yǔ)言的命名起源于一個(gè)腳本“screenplay”,每次運(yùn)行都會(huì)使對(duì)話(huà)框逐字重復(fù)。早期的腳本語(yǔ)言經(jīng)常被稱(chēng)為批次處理語(yǔ)言或工作控制語(yǔ)言。一個(gè)腳本通常是解釋運(yùn)行而非編譯。腳本語(yǔ)言通常都有簡(jiǎn)單、易學(xué)、易用的特性,目的就是希望能讓程序設(shè)計(jì)師快速完成程序的編寫(xiě)工作。大多腳本語(yǔ)言共性是:良好的快速開(kāi)發(fā),高效率的執(zhí)行,解釋而非編譯執(zhí)行,和其它語(yǔ)言編寫(xiě)的程序組件之間通信功能很強(qiáng)大。 就腳本語(yǔ)言的應(yīng)用場(chǎng)景而言可以大致分為:工作控制(shell)、GUI 腳本、 應(yīng)用程序定制腳本、Web編程、文本處理;就語(yǔ)言特性而言,大致可以分為: 文本處理語(yǔ)言、動(dòng)態(tài)語(yǔ)言和可嵌入語(yǔ)言。 處理基于文本的記錄是腳本語(yǔ)言最早的用處之一。如Unix's awk最早是設(shè)計(jì)來(lái)幫助系統(tǒng)管理員處理調(diào)用UNIX基于文本的配置和LOG文件。PERL最早是用來(lái)產(chǎn)生報(bào)告的,現(xiàn)在它已經(jīng)成了全面成熟的語(yǔ)言。許多腳本語(yǔ)言用來(lái)執(zhí)行一次性任務(wù),尤其是系統(tǒng)管理方面。它可以把服務(wù)組件粘合起來(lái),因此被廣泛用于GUI創(chuàng)建或者命令行。操作系統(tǒng)通常提供一些默認(rèn)的腳本語(yǔ)言,交互式的解釋和執(zhí)行用戶(hù)輸入的命令或者自動(dòng)地解釋和執(zhí)行預(yù)先設(shè)定好的一連串的命令,即通常所謂shell腳本語(yǔ)言。 目前主要的腳本語(yǔ)言有:JavaScript、PHP、Python、Perl、Ruby、Groovy、Action Script、VBScript、PowerShell、Smalltalk等。 腳本語(yǔ)言與編譯語(yǔ)言 腳本語(yǔ)言與傳統(tǒng)編程語(yǔ)言(C、C++)有很多相似地方,比如腳本語(yǔ)言的函數(shù)與編譯語(yǔ)言比較相象,也會(huì)涉及到變量、參數(shù);腳本語(yǔ)言也具有面向?qū)ο蟮确矫娴奶匦缘鹊。但在語(yǔ)言核心和本質(zhì)上,腳本語(yǔ)言與傳統(tǒng)語(yǔ)言有著明顯的區(qū)別。 腳本語(yǔ)言一般都有相應(yīng)的腳本引擎來(lái)解釋執(zhí)行,一般需要解釋器才能運(yùn)行;而C、C++、Java等則需要編譯、鏈接后,形成獨(dú)立執(zhí)行的exe文件。腳本語(yǔ)言是一種解釋性的語(yǔ)言,它不象Java等可以編譯成二進(jìn)制代碼,以可執(zhí)行文件的形式存在,腳本語(yǔ)言不需要編譯,可以直接用,由解釋器來(lái)負(fù)責(zé)解釋。 腳本語(yǔ)言與動(dòng)態(tài)語(yǔ)言 動(dòng)態(tài)語(yǔ)言是指程序在運(yùn)行時(shí)可以改變其結(jié)構(gòu),比如,在程序運(yùn)行過(guò)程中可以引入新的函數(shù),已有的函數(shù)可以被刪除等在結(jié)構(gòu)上的變化。動(dòng)態(tài)語(yǔ)言的類(lèi)型檢查是在運(yùn)行時(shí)做的。它的優(yōu)點(diǎn)是方便閱讀,不需要寫(xiě)非常多的類(lèi)型相關(guān)的代碼。事實(shí)上,大多數(shù)的動(dòng)態(tài)語(yǔ)言都是解釋執(zhí)行的,他們具有腳本語(yǔ)言的一般特點(diǎn)和結(jié)構(gòu),只是在運(yùn)行時(shí)上更具動(dòng)態(tài)性,狀態(tài)上更為靈活。 一般地,腳本語(yǔ)言都是動(dòng)態(tài)語(yǔ)言,而動(dòng)態(tài)語(yǔ)言都是解釋型語(yǔ)言。 其他編程語(yǔ)言 下面是排名21到50的編程語(yǔ)言。
ABC, AD, Alpha, APL, Applescript, bc, Beta, Boo, C shell, cg, Clean, Clojure, Cobra, cT, Curl, Dylan, Eiffel, Factor, Icon, IDL, Inform, Io, Lingo, MAD, Magic, Maple, Mathematica, MAX/MSP, MOO, MUMPS, Natural, Occam, Oz, PILOT, PL/I, Postscript, PowerBuilder, Progress, Q, R, Revolution, REXX, S-lang, SIGNAL, SPSS, SuperCollider, VBScript, Verilog, VHDL, XSLT 編程語(yǔ)言類(lèi)別 下面給出了編程語(yǔ)言類(lèi)別的一年變化趨勢(shì),相比2008年,動(dòng)態(tài)語(yǔ)言了近1%的增幅,占整個(gè)編程語(yǔ)言類(lèi)型份額的42.8%。
靜態(tài)類(lèi)型和動(dòng)態(tài)類(lèi)型的語(yǔ)言走勢(shì) |