6月編程語言排行榜:框架之翼
原創(chuàng)【51CTO獨(dú)家特稿】TIOBE今天(6月7日)發(fā)布了最新一期的編程語言排行榜,在本期榜單中,曾奪得2009年年度編程語言的Google Go跌出前20名;TIOBE評論稱,最初Google Go能獲得如此成績(Google Go推出三個月就獲得了1.25%的增長),多數(shù)是出于人們的好奇心:一門由Google推出的編程語言。
Google Go的確有其技術(shù)上的閃光點(diǎn)。Go自身支持并發(fā)編程,因此滿足了對多處理器充分利用語言的需求;眾多頂級程序員的參與其設(shè)計和代碼改進(jìn)也使得人們對它充滿信心。但關(guān)鍵是,Go還沒有在眾多的編程語言中找到合適它的位置。
在這期編程榜中,Java重新回到榜首的位置,第二名至第五名分別是:C、C++、PHP、Visual Basic。本期編程榜我們關(guān)注的主題是開發(fā)框架(Framework)。
《設(shè)計模式》中對框架的定義是:框架就是一組相互協(xié)作的類,對于特定的一類軟件,框架構(gòu)成了一種可重用的設(shè)計。使用開發(fā)框架可以減少重復(fù)開發(fā)工作量、縮短開發(fā)時間,降低開發(fā)成本。同時,框架的引入和使用還可以使程序設(shè)計更加合理和穩(wěn)定,利于二次開發(fā)和維護(hù)??蚣艿氖褂迷赪eb開發(fā)中應(yīng)用尤為廣泛。對于一個特定的項(xiàng)目,選擇合適的語言平臺及框架會使你如虎添翼。
Ruby——因框架而流行
Ruby是一門因開發(fā)框架而走紅的語言。沒錯,是Rails框架才使Ruby變得如此熱門。最初Ruby只是其創(chuàng)始人Matz對理想編程語言的一個實(shí)踐,1993年開始編寫,1995年12月才發(fā)布第一個版本。經(jīng)過漫長的發(fā)展,自2000年后才被日文以外的開發(fā)者了解。
Ruby是一門純面向?qū)ο蟮恼Z言,開發(fā)效率非常高。減少編程時候的不必要的瑣碎時間,令編寫程序的人高興,是Matz設(shè)計Ruby語言的一個首要的考慮。
在Ruby on Rails之前,Rails的創(chuàng)始人DHH曾嘗試過使用PHP進(jìn)行框架設(shè)計,但他最終選擇了Ruby。靈活高效的Ruby語言搭配良好框架設(shè)計思想,DHH對Rails的解釋是“最近的一條路”。從Rails這個名字我們可以看出,DHH希望軟件開發(fā)可以沿著一個正確的軌跡不斷向前,告別復(fù)雜的左轉(zhuǎn)右轉(zhuǎn)和討厭的紅燈;他也是按照這樣的想法架構(gòu)整個Rails。目前,Ruby on Rails已經(jīng)進(jìn)階主流Web開發(fā)技術(shù),使用其開發(fā)的各種網(wǎng)站不計其數(shù),詳細(xì)可以參考51CTO之前的報道《TOP 50 用Ruby on Rails開發(fā)的網(wǎng)站》。關(guān)于Ruby on Rails創(chuàng)始人DHH的更多介紹請參考51CTO的創(chuàng)始人小傳《Ruby on Rails創(chuàng)始人DHH:架構(gòu)是將復(fù)雜的問題簡單化》 #p#
PHP——最流行最泛濫
上文我們曾提到,DHH曾嘗試過使用PHP進(jìn)行最初的框架設(shè)計,但他最后放棄了PHP。這里面涉及到的不是只編碼效率和DSL能力,更多的是編程語言底層機(jī)制和運(yùn)行效率。
PHP每次HTTP請求都要初始化資源,這個過程的開銷非常大。盡管PHP解析器的運(yùn)行速度快速且沒有缺陷,但一旦使用框架,那么每次請求時初始化整個框架使性能的下降非常厲害,當(dāng)使用一個很復(fù)雜的PHP框架的結(jié)果就是整體性能嚴(yán)重下降;同時,PHP語言本身的問題造成了PHP添加跨請求的高級特性相當(dāng)困難,這是PHP本身一個很大的限制,但是反過來說,正是這種限制使得PHP始終保持在一個比較簡單的Web語言上面,而正是這一點(diǎn)才是PHP得以成為互聯(lián)網(wǎng)流行Web編程語言的原因。
但作為最流行的Web編程語言,數(shù)量眾多的PHP程序員無法拒絕框架的誘惑,這也催生了PHP開發(fā)框架的泛濫。在51CTO對PHPCMS創(chuàng)始人鐘勝輝的采訪中他談到:PHP的框架跟ROR的情況有所不同,多而混亂;他同時提到:從長遠(yuǎn)來看,一個優(yōu)秀的框架可以延長一個項(xiàng)目的壽命,降低維護(hù)和二次開發(fā)的成本。
目前主流的PHP開發(fā)框架主要有:Zend Framework、CakePHP、CodeIgniter、Symfony等,國內(nèi)也涌現(xiàn)出ThinkPHP、FleaPHP等優(yōu)秀PHP框架。對于PHP開發(fā)者而言,如何在眾多框架中挑選一個適合自己項(xiàng)目的成了一個難題。關(guān)于PHP框架的介紹和選擇,可以參考51CTO之前的報道《國外十大最流行PHP框架排名》和《幾款主流PHP框架的優(yōu)缺點(diǎn)評比》。
在Web開發(fā)領(lǐng)域,關(guān)于PHP和Ruby語言的爭論一直存在,詳細(xì)請參考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則以簡潔、快速著稱,對DOM對象和事件處理尤為擅長;prototype則顯得更為輕量,善于處理Ajax的交互過程。
有時,基于同一種語言,不同的框架也具有不同的應(yīng)用場景,比如對Java而言,Hibernate專注于數(shù)據(jù)層的持久化,Struts則精于業(yè)務(wù)邏輯的處理。#p#
框架的誕生和演進(jìn)不僅拓展了編程語言的應(yīng)用場景和范圍,還大幅提高了基于語言平臺的項(xiàng)目開發(fā)和維護(hù)效率??蚣苁拐Z言如虎添翼,善用框架,可以使你的項(xiàng)目錦上添花。
前十名編程語言走勢圖
其他語言及排名
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
編程語言類別
下面給出了編程語言類別的一年變化趨勢,面向?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%
編程語言類型走勢:
【編輯推薦】
- 5月編程語言排行榜:動態(tài)語言的前世今生
- 4月編程語言排行榜:Top20里的“陌生人”
- 3月編程語言排行榜:Fortran歸來
- 2月編程語言排行榜:Objective-C的詠嘆調(diào)
- 1月編程榜發(fā)布:Google Go意外奪得年度編程語言