6月編程語言排行榜:框架之翼
原創(chuàng)【51CTO獨(dú)家特稿】TIOBE今天(6月7日)發(fā)布了最新一期的編程語言排行榜,在本期榜單中,曾奪得2009年年度編程語言的Google Go跌出前20名;TIOBE評(píng)論稱,最初Google Go能獲得如此成績(jī)(Google Go推出三個(gè)月就獲得了1.25%的增長(zhǎng)),多數(shù)是出于人們的好奇心:一門由Google推出的編程語言。
Google Go的確有其技術(shù)上的閃光點(diǎn)。Go自身支持并發(fā)編程,因此滿足了對(duì)多處理器充分利用語言的需求;眾多頂級(jí)程序員的參與其設(shè)計(jì)和代碼改進(jìn)也使得人們對(duì)它充滿信心。但關(guān)鍵是,Go還沒有在眾多的編程語言中找到合適它的位置。
在這期編程榜中,Java重新回到榜首的位置,第二名至第五名分別是:C、C++、PHP、Visual Basic。本期編程榜我們關(guān)注的主題是開發(fā)框架(Framework)。
《設(shè)計(jì)模式》中對(duì)框架的定義是:框架就是一組相互協(xié)作的類,對(duì)于特定的一類軟件,框架構(gòu)成了一種可重用的設(shè)計(jì)。使用開發(fā)框架可以減少重復(fù)開發(fā)工作量、縮短開發(fā)時(shí)間,降低開發(fā)成本。同時(shí),框架的引入和使用還可以使程序設(shè)計(jì)更加合理和穩(wěn)定,利于二次開發(fā)和維護(hù)。框架的使用在Web開發(fā)中應(yīng)用尤為廣泛。對(duì)于一個(gè)特定的項(xiàng)目,選擇合適的語言平臺(tái)及框架會(huì)使你如虎添翼。
Ruby——因框架而流行
Ruby是一門因開發(fā)框架而走紅的語言。沒錯(cuò),是Rails框架才使Ruby變得如此熱門。最初Ruby只是其創(chuàng)始人Matz對(duì)理想編程語言的一個(gè)實(shí)踐,1993年開始編寫,1995年12月才發(fā)布第一個(gè)版本。經(jīng)過漫長(zhǎng)的發(fā)展,自2000年后才被日文以外的開發(fā)者了解。
Ruby是一門純面向?qū)ο蟮恼Z言,開發(fā)效率非常高。減少編程時(shí)候的不必要的瑣碎時(shí)間,令編寫程序的人高興,是Matz設(shè)計(jì)Ruby語言的一個(gè)首要的考慮。
在Ruby on Rails之前,Rails的創(chuàng)始人DHH曾嘗試過使用PHP進(jìn)行框架設(shè)計(jì),但他最終選擇了Ruby。靈活高效的Ruby語言搭配良好框架設(shè)計(jì)思想,DHH對(duì)Rails的解釋是“最近的一條路”。從Rails這個(gè)名字我們可以看出,DHH希望軟件開發(fā)可以沿著一個(gè)正確的軌跡不斷向前,告別復(fù)雜的左轉(zhuǎn)右轉(zhuǎn)和討厭的紅燈;他也是按照這樣的想法架構(gòu)整個(gè)Rails。目前,Ruby on Rails已經(jīng)進(jìn)階主流Web開發(fā)技術(shù),使用其開發(fā)的各種網(wǎng)站不計(jì)其數(shù),詳細(xì)可以參考51CTO之前的報(bào)道《TOP 50 用Ruby on Rails開發(fā)的網(wǎng)站》。關(guān)于Ruby on Rails創(chuàng)始人DHH的更多介紹請(qǐng)參考51CTO的創(chuàng)始人小傳《Ruby on Rails創(chuàng)始人DHH:架構(gòu)是將復(fù)雜的問題簡(jiǎn)單化》 #p#
PHP——最流行最泛濫
上文我們?cè)岬剑珼HH曾嘗試過使用PHP進(jìn)行最初的框架設(shè)計(jì),但他最后放棄了PHP。這里面涉及到的不是只編碼效率和DSL能力,更多的是編程語言底層機(jī)制和運(yùn)行效率。
PHP每次HTTP請(qǐng)求都要初始化資源,這個(gè)過程的開銷非常大。盡管PHP解析器的運(yùn)行速度快速且沒有缺陷,但一旦使用框架,那么每次請(qǐng)求時(shí)初始化整個(gè)框架使性能的下降非常厲害,當(dāng)使用一個(gè)很復(fù)雜的PHP框架的結(jié)果就是整體性能嚴(yán)重下降;同時(shí),PHP語言本身的問題造成了PHP添加跨請(qǐng)求的高級(jí)特性相當(dāng)困難,這是PHP本身一個(gè)很大的限制,但是反過來說,正是這種限制使得PHP始終保持在一個(gè)比較簡(jiǎn)單的Web語言上面,而正是這一點(diǎn)才是PHP得以成為互聯(lián)網(wǎng)流行Web編程語言的原因。
但作為最流行的Web編程語言,數(shù)量眾多的PHP程序員無法拒絕框架的誘惑,這也催生了PHP開發(fā)框架的泛濫。在51CTO對(duì)PHPCMS創(chuàng)始人鐘勝輝的采訪中他談到:PHP的框架跟ROR的情況有所不同,多而混亂;他同時(shí)提到:從長(zhǎng)遠(yuǎn)來看,一個(gè)優(yōu)秀的框架可以延長(zhǎng)一個(gè)項(xiàng)目的壽命,降低維護(hù)和二次開發(fā)的成本。
目前主流的PHP開發(fā)框架主要有:Zend Framework、CakePHP、CodeIgniter、Symfony等,國(guó)內(nèi)也涌現(xiàn)出ThinkPHP、FleaPHP等優(yōu)秀PHP框架。對(duì)于PHP開發(fā)者而言,如何在眾多框架中挑選一個(gè)適合自己項(xiàng)目的成了一個(gè)難題。關(guān)于PHP框架的介紹和選擇,可以參考51CTO之前的報(bào)道《國(guó)外十大最流行PHP框架排名》和《幾款主流PHP框架的優(yōu)缺點(diǎn)評(píng)比》。
在Web開發(fā)領(lǐng)域,關(guān)于PHP和Ruby語言的爭(zhēng)論一直存在,詳細(xì)請(qǐng)參考51CTO的策劃專題:大師論戰(zhàn)Web開發(fā):Ruby和PHP誰將稱王?
還有很多
不只是Ruby和PHP,在編程語言排行榜的眾多語言中,幾乎所有主流語言都有多種自己的框架,比如Python的Django、JavaScript的jQuery、C++的MFC以及著名的Java開發(fā)框架Spring、Hibernate、Struts等。事實(shí)是,開發(fā)框架的使用已成為當(dāng)前軟件開發(fā)的主流應(yīng)用形態(tài)。
同一門語言的不同框架往往都能實(shí)現(xiàn)相同的功能,根據(jù)自身項(xiàng)目和框架的特點(diǎn)進(jìn)行選擇尤為重要。在JavaScript方面,Dojo面向?qū)ο蠊δ軓?qiáng)大,提供豐富的庫及UI控件;jQuery則以簡(jiǎn)潔、快速著稱,對(duì)DOM對(duì)象和事件處理尤為擅長(zhǎng);prototype則顯得更為輕量,善于處理Ajax的交互過程。
有時(shí),基于同一種語言,不同的框架也具有不同的應(yīng)用場(chǎng)景,比如對(duì)Java而言,Hibernate專注于數(shù)據(jù)層的持久化,Struts則精于業(yè)務(wù)邏輯的處理。#p#
框架的誕生和演進(jìn)不僅拓展了編程語言的應(yīng)用場(chǎng)景和范圍,還大幅提高了基于語言平臺(tái)的項(xiàng)目開發(fā)和維護(hù)效率。框架使語言如虎添翼,善用框架,可以使你的項(xiàng)目錦上添花。
前十名編程語言走勢(shì)圖
其他語言及排名
Position
Programming Language
Ratings
21
Go
0.519%
22
ActionScript
0.501%
23
Transact-SQL
0.486%
24
RPG (OS/400)
0.443%
25
Bourne shell
0.426%
26
Ada
0.416%
27
D
0.398%
28
JavaFX Script
0.393%
29
FoxPro/xBase
0.388%
30
COBOL
0.380%
31
Fortran
0.376%
32
Haskell
0.365%
33
S-lang
0.347%
34
Alice
0.340%
35
LabVIEW
0.333%
36
Logo
0.330%
37
Scratch
0.329%
38
Tcl/Tk
0.321%
39
J
0.305%
40
NXT-G
0.301%
41
Forth
0.294%
42
Prolog
0.254%
43
Scala
0.253%
44
Groovy
0.251%
45
Caml/F#
0.248%
46
CL (OS/400)
0.240%
47
Erlang
0.234%
48
Q
0.224%
49
Smalltalk
0.222%
50
ML
0.213%
下面是第50到100的編程語言排名
ABC, Algol, Alpha, APL, Applescript, Awk, Beta, C shell, cg, Clean, cT, Curl, Dylan, Eiffel, Euphoria, Factor, Falcon, Focus, Heron, Icon, IDL, Informix-4GL, Io, LabWindows/CVI, Lingo, MAD, Maple, Mathematica, MAX/MSP, Modula-2, MS-DOS batch, MUMPS, Natural, Occam, OpenCL, Oz, PL/I, Postscript, PowerBuilder, Progress, R, REALbasic, Revolution, REXX, SIGNAL, SPSS, VBScript, Verilog, VHDL, XSLT
編程語言類別
下面給出了編程語言類別的一年變化趨勢(shì),面向?qū)ο缶幊蹋∣bject-Oriented Languages)依然占到編程語言類型的半壁江山。
Category
Ratings Jun 2010
Delta Jun 2009
Object-Oriented Languages
55.5%
+0.3%
Procedural Languages
39.9%
-1.0%
Functional Languages
3.2%
+0.2%
Logical Languages
1.5%
+0.5%
Category
Ratings Jun 2010
Delta Jun 2009
Statically Typed Languages
62.8%
+3.5%
Dynamically Typed Languages
37.2%
-3.5%
編程語言類型走勢(shì):
【編輯推薦】
- 5月編程語言排行榜:動(dòng)態(tài)語言的前世今生
- 4月編程語言排行榜:Top20里的“陌生人”
- 3月編程語言排行榜:Fortran歸來
- 2月編程語言排行榜:Objective-C的詠嘆調(diào)
- 1月編程榜發(fā)布:Google Go意外奪得年度編程語言