TIOBE今日公布了2009年10月的编程语言排行榜,……本月我们关注一直在稳步爬升的Ruby。
在今年4月的编程榜单中,Ruby首次进入了榜单的前十名,造成了脚本语言占据榜单半壁江山的景观。做为一个动态脚本语言,Ruby有着语法简洁、灵活性强、代码量少便于维护的特征。
Ruby的历史
从这张Web开发时间轴上可以看出,Ruby最初的草案与PHP大约在同一时间诞生。Ruby语言由日本程序员松本行弘(网名matz)编写,最初在1995年12月正式公开发布。根据一次访谈,Matz是这样描述自己创立Ruby语言的动机的:
Ruby创始人Matz
“我觉得脚本语言是条正确的道路。
作为一个长期的面向对象编程的忠实拥护者,对我来说面向对象编程也非常适合于脚本语言,所以我开始在网上搜寻。我发现了Perl 5,当时它还没正式推出,正打算实现一些OO的特点,但是那不是我想要的,我最终放弃了将Perl作为一个面向对象脚本语言的企图。
后来我发现了Python, 它是一个解释型,面向对象的语言,但是我觉得它不是一个“脚本”语言,除此之外,它还是一个包括了过程编程和面向对象编程的混合型语言 。
我需要的是一个比 Perl 更强大,比Python更面向对象的语言,这就是为什么我决定设计我自己的语言的原因。”
然而由于互联网的流通度在90年代末期还比较局限,诞生在日本的Ruby语言由于非日文资料(尤其是英文)缺乏的关系,其早些年间的流行与发展基本局限于日本境内。这种情况在大约2000年之后有所改观。
大约在2000年左右,美国程序员Dave Thomas接触到了当时在英文界还没什么人知道的Ruby语言,并立刻产生了兴趣。这位《程序员修炼之道》(最近是这本书的10周年,因此出了新版)的作者后来出版了一本叫做《Programming Ruby》的书,成为了英文界(包括后来的中文开发界)很多开发者认识Ruby的启蒙书籍。这是开发界开始认识Ruby语言的一个转折点。不过,真正的转折点发生在06年。
【图 TIOBE的Ruby流行度趋势】
在近日51CTO记者对Dave Thomas的访谈中,他是这样描述Ruby的成功因素的:
“在我看来,有两件事物决定了Ruby今日的规模。很明显,Ruby on Rails是一个。做为一个间接的测量,我们可以看一看Ruby相关书籍的销售情况。如果你回顾2000年以来的书籍销售情况,你会看到一条缓慢上升的直 线;然后Rails出来了,这条直线立刻弯了上去。因为Ruby是解决问题的一个很好的答案,而Rails中也有这样的特性。现在你可以用一种非常简洁的 方法编写Web应用,而Ruby只是刚好出现在了正确合适的位置。所以我的看法就是,Rails相当于Ruby的杀手应用。”
Ruby on Rails的出现对于当时的Web开发是一次极大的启发,并随后影响了一系列PHP框架的诞生。事实上,由于Rails创始人DHH原本就是Web应用厂 商37 Signals的合作伙伴,而设计Rails的时候对37 Signals的一些项目的开发是有相当针对性的,所以Ruby on Rails从一开始就是一个注重实用性的Web开发框架:在其中你几乎看不到什么多余的东西。DHH本人是这样评价Ruby on Rails的:
“Rails一开始象一群叛乱份子,它拒绝教条,拒绝其他语言的僵化思路,因此出现了很多观念上的 冲突和争论。现在Rails已经获得它的地位,在很多方面被证明是正确的,被更多的人接受,也就意味着Rails开始不那么边缘化了。但是我认为事情都是 在发展的,总会有新的争论出来,Rails能够始终保持反传统的挑战地位。”
由于Rails这个杀手应用,使得Ruby也成为Web开发领域凤毛麟角的语言之一。就目前而言,Web开发之王基本确定是PHP(在9月TIOBE榜单中,PHP刚刚进入前三甲,以绝对优势占据了“最流行的Web开发语言”这个称号。在这种情况下,关于Ruby的前景,51CTO策划了一次对数位开发领域大师与专家的调查活动,并得到了他们对于Ruby未来的看法。基本上,大师们对于Ruby(on Rails)的潜力有着十分的肯定,只是它在Web开发领域还相对比较新,需要更多成功的案例来被人认可。Ruby的进一步流行,相信只是时间问题。
其他编程语言
21 | RPG (OS/400) | 0.457% |
22 | ActionScript | 0.438% |
23 | COBOL | 0.421% |
24 | Ada | 0.389% |
25 | Scratch | 0.383% |
26 | Fortran | 0.373% |
27 | Transact-SQL | 0.367% |
28 | Logo | 0.365% |
29 | FoxPro/xBase | 0.321% |
30 | S-lang | 0.281% |
31 | PowerShell | 0.263% |
32 | Scala | 0.238% |
33 | Erlang | 0.231% |
34 | Prolog | 0.230% |
35 | NXT-G | 0.229% |
36 | ML | 0.228% |
37 | Haskell | 0.211% |
38 | Tcl/Tk | 0.210% |
39 | Smalltalk | 0.175% |
40 | Bourne shell | 0.162% |
41 | Alice | 0.161% |
42 | Caml/F# | 0.161% |
43 | Focus | 0.159% |
44 | LabVIEW | 0.159% |
45 | Forth | 0.157% |
46 | Groovy | 0.154% |
47 | PL/I | 0.136% |
48 | Awk | 0.136% |
49 | J | 0.136% |
50 | ABC | 0.123% |
2008 | C |
2007 | Python |
2006 | Ruby |
2005 | Java |
2004 | PHP |
2003 | C++ |