Ruby对比Python的优势和劣势
Ruby和Python太相似了,取舍大部分都是个人喜好上的原因。比如我就觉得Python的“Thereisonlyonewaytodoit.”比Ruby的“Therearemanywaystodoit.”要好,这不光是考虑团队协作的问题,更重要的是自己能很快明白自己三个月前写的没有任何注释的代码是在干什么。当然也有很多人觉得自由和灵活要比可读性来的重要,所以我说这个是个人喜好的原因。
客观上的Ruby比Python的优势我想到的有这么几个:
Block应该是语言层面上Ruby比Python更酷的地方,Python的匿名函数(lambdafunction)制约太多,属于鸡肋(BFDLGvR不认可函数式编程的许多方面)。
OSX上的话,Ruby比Python最重要的优势可能是MacRuby(http://www.macruby.org/)的存在。我大胆猜测以后MacRuby将成为Objective-C之外(如果不是完全替代的话)的苹果官方语言。MacRuby除了能更加方便快捷的创建Cocoa应用外,rubyblock使得利用OSX的GrandCentralDispatch变得容易,在以后的多核、混合核(CPU+GPU)应用上非常重要。
劣势:
Ruby的硬伤之一在于性能。官方实现Ruby1.9比CPython逊色不少。另外Python拥有诸如Numpy,Psyco,PyPy,Cython等多种性能倍增的途径,相比之下Ruby想要提高性能的途径则非常有限。
Ruby的硬伤之二在于第三方包。Ruby传入英语世界并大规模流行起来的时间不长,大部分的第三方包都和Web相关,Web领域外的包数量远远不及Python。特别是在科研等方面的区别非常明显,很多学科领域都有基于Python的成熟应用,而几乎找不到Ruby的相关包。这除了历史渊源,也和Python更加简洁的语法(很多用Python做研究的人不是计算机专业的)以及前述的性能倍增器(主要是Numpy和Scipy)有密切的关系。