Ruby 和Python,同样作为动态语言,到底谁会走得更好更远?
一年前我就认定python,当初我只有一个理由,那就是python有Java那样的一种大气。主要体现在它强制要求代码缩进,当时很多的人批判python的这个特点,但是我认为这个特点将使python代码容易维护,从而能够被应用于复杂系统和企业级应用开发,所以能走得更远。现在我有更多的理由相信python能比ruby走得更好:
1.ruby的火爆源于rails框架,如果没有rails我相信基本上没有人会把它引入到应用开发中来,它只能成为玩具,但是除了rails以外,它还有什么?我想不出来,这么多年了它有plone那样的平台吗? 有zenoss那样可以和j2ee相媲美的复杂应用吗?答案是没有。
2.从Java登上王位的路径来看,java并不是靠语言的动态性和灵活性占领王位的,也不是像C#那样被强大的商业力量推上去的,和微软相比,Sun没有这么强劲的商业势力,但是Java登上了王位,那是它的开放性、它的规范性使得代码易于阅读和维护,并且很适合大规模团队协作开发,大家可以看看还有哪门语言的开发工具有Java这样丰富?有几门语言有模型驱动架构的高度自动化代码生成的开发工具支持,历史规律决定了以语法优势鹊起的ruby必然被抛弃。
3.Ruby的Thread是伪线程,不管代码中写了多少个Thread.new,Ruby都只启动了一个线程去运行这些Thread的代码,单核时代已经过去,再过些年头,发现单核的CPU都会困难了,并行能力这么差的语言怎么会有前途呢?相反,python在2.6 就发布了Multi-processing包,支持多核甚至多计算机并行,跨计算机创建和运行子进程。据说东京今年才开始研究Ruby的并行计算,现在还没结果,不知后续会如何。
至于Ruby和Java,他们几乎不具备可比性,ruby不可能取代Java,拿ruby和Java相比纯属炒作。
目前python最大的问题是3.0不兼容以前版本的代码,这可能会在一定程度影响python的前景,同时像Groovy的出现,也对其它动态语言形成了压力,当然Groovy的发展也面临众多的问题。
总体上看,动态语言的语法优势是非常明显的,但是语法对于应用和受欢迎程度来说不是决定性因素。
2009年5月TIOBE编程语言排行榜
Position May 2009 | Position May 2008 | Delta in Position | Programming Language | Ratings May 2009 | Delta May 2008 | Status |
---|---|---|---|---|---|---|
1 | 1 | ![]() | Java | 19.537% | -1.35% | A |
2 | 2 | ![]() | C | 16.128% | +0.62% | A |
3 | 3 | ![]() | C++ | 11.068% | +0.26% | A |
4 | 4 | ![]() | PHP | 9.921% | -0.28% | A |
5 | 5 | ![]() | (Visual) Basic | 8.631% | -1.16% | A |
6 | 7 | ![]() | Python | 5.548% | +0.65% | A |
7 | 8 | ![]() | C# | 4.266% | +0.21% | A |
8 | 9 | ![]() | JavaScript | 3.548% | +0.62% | A |
9 | 6 | ![]() ![]() ![]() | Perl | 3.525% | -2.02% | A |
10 | 10 | ![]() | Ruby | 2.692% | +0.05% | A |
11 | 11 | ![]() | Delphi | 2.327% | +0.30% | A |
12 | 14 | ![]() ![]() | PL/SQL | 1.101% | +0.34% | A |
13 | 13 | ![]() | SAS | 0.801% | -0.12% | A |
14 | 15 | ![]() | Pascal | 0.776% | +0.18% | A |
15 | 26 | ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() | RPG (OS/400) | 0.678% | +0.43% | B |
16 | 27 | ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() | ABAP | 0.670% | +0.43% | B |
17 | 12 | ![]() ![]() ![]() ![]() ![]() | D | 0.628% | -0.82% | A- |
18 | 23 | ![]() ![]() ![]() ![]() ![]() | MATLAB | 0.517% | +0.25% | B |
19 | 21 | ![]() ![]() | Logo | 0.504% | +0.17% | A- |
20 | 19 | ![]() | Lua | 0.486% | +0.12% | B |