2010年12月編程語言排行榜:觸摸經典語言化石之Lisp
原創【51CTO獨家特稿】Tiboe今日發布了2010年最后一期編程語言排行榜,在本期榜單中前五名依然是Java、C、C++、PHP和C#。Tiobe官網給出本期主題是“一直上升的C#和一直下降的Visual Basic”。同時,Tiobe還透露了2010年年度編程語言的一些消息,今年,C#語言年度增幅6.687%,但依然不足以贏得年度語言,最有可能的是Objective-C和Python。
從本期開始,51CTO將挑選編程榜中的“經典”語言進行回顧。它們基本都經歷了長達半個世紀的計算機技術變遷,如今依然發揮著重要作用;這些語言在剛創立時都以超前的技術思想和理念震驚業界,如今,這些思想和理念像基因一樣深深融入每一種高級語言,并被我們廣泛應用。
我們試圖觸摸這些經典語言化石,讓您了解在編程語言發展史上的一座座豐碑。在當時所處的年代,他們解放了計算機從業人員的生產力,也奠定了現代高級計算機語言的雛形。值得我們細細回味。
Lisp,由編程語言到編程思想
Lisp誕生于上世紀60年代,由圖靈獎得主約翰·麥卡錫創造;全名LISt Processor,可以理解為鏈表處理語言。在今年歷期的編程語言排行榜中,Lisp都有上佳表現,從五月份的榜單開始進入前20名(這個排名一部分來自Lisp本身和它的方言Scheme和Clojure)。
簡單來說,Lisp是一門關于列表操作的編程語言,在Lisp中,無論是數據還是程序流程代碼都由列表組成;而每個列表都由一些原子和列表組成;數字就是原子。下面是一段Lisp簡單的代碼示例:
- > (first '(lions tigers bears))
- LIONS
- > (rest '(lions tigers bears))
- (TIGERS BEARS)
在編程語言史上,Lisp代表了一種重要的編程思想,在與Lisp同時代同影響力的編程語言還有Fortran,這兩門語言從兩個不同的方向直接影響著現代高級編程語言進化。Lisp的基礎是數學和邏輯,而Fortran代表的是與硬件架構的依附與融合。Lisp在創建之初就定義了現代語言廣為流行的幾種編程思想,其中2種至今仍然是Lisp所獨有的。它們是:
1、條件結構,即if-then-else
2、函數也是一種數據類型。在Lisp語言中,函數與整數或字符串一樣,也屬于數據類型的一種。
3、遞歸,Lisp第一次在編程語言中提出遞歸的概念并實現。
4、變量的動態類型。在Lisp語言中,所有變量實際上都是指針。
5、垃圾回收機制。這個無需解釋了吧。
6、程序由表達式(expression)組成。Lisp程序是一些表達式區塊的集合,每個表達式都返回一個值。
7、符號(symbol)類型。符號實際上是一種指針,指向儲存在哈希表中的字符串。
8、代碼使用符號和常量組成的樹形表示法
9、無論什么時候,整個語言都是可用的。Lisp并不真正區分讀取期、編譯期和運行期。你可以在讀取期編譯或運行代碼;也可以在編譯期讀取或運行代碼。
這些思想被廣泛應到到現代編程語言的設計中。如果你熟悉的語言足夠多,可以看出這樣的趨向,Java、Perl、Python、Ruby,語言越是進化越在思想上向Lisp靠攏。
經過半個多世紀的發展,Lisp依然表現出旺盛的生命力,這與其兩門方言的流行和普及有關,它們是Scheme和Clojure。Scheme具有很好的移植性和嵌入性,由于其解釋語言的特性,不同的平臺的都有相應的解釋器;Scheme另一個特點就是解釋器非常小巧,可以作為一門腳本語言內嵌于很多工具之中,例如GNU。Lisp的另一門方言是當今在JVM平臺大紅大紫的Clojure,帶著Lisp的語言特性,具備良好動態函數式編程的Clojure可以編譯為字節碼在JVM上運行。
編程語言不僅僅是一種技術,它更是一種思維習慣。不同的語言用不同的方式影響我們的大腦思維,這并不是因為這種語言可以讓我們這樣思考問題,而是它在強迫你這樣思考。如今,Lisp更多作為一種編程思想存在,而基于其特性和思維的方言在各自的領域大為流行和發展。可以說,當今的Lisp已經不只是一種編程語言,更是一種重要的編程思想和思維方式。網上有人撰文稱:程序員要學的最后一門語言就是Lisp。
下面是本期編程語言排行榜的其他排名數據和趨勢走向。我們重點關注C#和Scala兩名語言。#p#
前10名編程語言趨勢走向
在最近10年里,C#語言一直保持著上揚趨勢,已成為微軟平臺的主力編程語言。詳細請參考之前的編程語言排行榜:微軟鋒利的刀C# 。
其他編程語言及趨勢
下面是本期榜單第21-50的編程語言排名,Go語言小幅上升,但仍沒進入前20名的榜單。
Position | Programming Language | Ratings |
---|---|---|
21 | Go | 0.587% |
22 | NXT-G | 0.583% |
23 | PL/SQL | 0.566% |
24 | PowerShell | 0.552% |
25 | ABAP | 0.547% |
26 | R | 0.544% |
27 | Lua | 0.503% |
28 | Object Pascal | 0.496% |
29 | Scheme | 0.493% |
30 | Awk | 0.460% |
31 | Fortran | 0.435% |
32 | C shell | 0.398% |
33 | D | 0.397% |
34 | COBOL | 0.391% |
35 | Tcl | 0.365% |
36 | Logo | 0.361% |
37 | ActionScript | 0.349% |
38 | CL (OS/400) | 0.339% |
39 | APL | 0.338% |
40 | Scratch | 0.332% |
41 | JavaFX Script | 0.307% |
42 | Haskell | 0.301% |
43 | PL/I | 0.291% |
44 | Prolog | 0.283% |
45 | Visual Basic .NET | 0.259% |
46 | Korn shell | 0.247% |
47 | Forth | 0.247% |
48 | Q | 0.244% |
49 | Erlang | 0.242% |
50 | IDL | 0.233% |
下面是第50到100的編程語言排名
本期榜單,我們在50-100名的區間里看到了Scala,上期Scala排名第50位,本期再度下滑。
(Visual) FoxPro, ABC, Algol, Alice, Bash, bc, Beta, Bourne shell, C++/CLI, CFML, cg, Clean, cT, Curl, Dylan, Eiffel, Euphoria, F#, Factor, Groovy, Icon, Io, J, JScript.NET, LabVIEW, LabWindows/CVI, MAD, MAX/MSP, ML, Modula-2, MUMPS, Natural, Oberon, Objective Caml, Occam, Oz, Postscript, PowerBuilder, REALbasic, Rebol, S, Scala, SIGNAL, Smalltalk, SPSS, Standard ML, Verilog, VHDL, XBase, XSLT
編程語言類別
下面給出了編程語言類別的一年變化趨勢。
Category | Ratings Nov 2010 | Delta Nov 2009 |
---|---|---|
Object-Oriented Languages | 56.7% | +2.4% |
Procedural Languages | 38.0% | -3.5% |
Functional Languages | 3.6% | +0.7% |
Logical Languages | 1.7% | +0.4% |
動態和靜態語言趨勢走向
Category | Ratings Nov 2010 | Delta Nov 2009 |
---|---|---|
Statically Typed Languages | 63.1% | +4.1% |
Dynamically Typed Languages | 36.9% | -4.1% |
【2010年榜單回顧】
- 11月編程語言排行榜:手機里的代碼
- 10月編程語言排行榜:Java的混亂之治
- 9月編程語言排行榜:Perl 不走尋常路
- 8月編程語言排行榜:微軟鋒利的刀C#
- 7月編程語言排行榜:這里有支足球隊
- 6月編程語言排行榜:框架之翼
- 5月編程語言排行榜:動態語言的前世今生
- 4月編程語言排行榜:Top20里的“陌生人”
- 3月編程語言排行榜:Fortran歸來
- 2月編程語言排行榜:Objective-C的詠嘆調