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 |
本文对比分析了Python和Ruby两种动态语言的发展潜力,认为Python因具有更好的代码维护性及支持多核并行等特性,更适合用于复杂系统开发,因此预计其发展前景优于Ruby。
1万+

被折叠的 条评论
为什么被折叠?



