Python 和 Ruby 的异同
Python(KK 英语发音:/'pa? θɑn/, DJ 英语发音:/?paiθ ?n/)是一种面向对象、直译式计算机程序 设计语言 Ruby,一种为简单快捷的面向对象编程(面向对象程序设计)而创的脚本语言
python 和 ruby 的相同点:
? ? ? ? ? ? ? ? ? ? ?
都强调语法简单,都具有更一般的表达方式。python 是缩进,ruby 是类 basic 的表达。都大量减 少了符号。 都是动态数据类型。都是有丰富的数据结构。 都具有 c 语言扩展能力,都具有可移植性,比 perl 的可移植性更好。也都可以作为嵌入语言。 都是面向对象的语言,都可以作为大项目的开发工具。 都有丰富的库支持。 也有最宽松的
版权许可,除了一些工具属于 GNU 世界。 都有 lisp 特色的 eval 函数,也都能把函数作为参数。 也有图形界面的 ruby 的专门编辑器。 都获得了广泛的 c 库的支持。 qt、 如 gtk、 SDL、 tk、 FOX 等, ruby 计划实现 SWIG 接口 (已实现) 。 都有完善的
文档。 具有正则表达式和嵌入 html 的功能。python 也有正则表达式,但没有 ruby 的应用方便和广泛。 python 的嵌入 html 项目才刚起步。ruby 还有 apache 的 mod 模块。ruby 本身也实现和很多 unix 工具,如 racc,doctools。比 python 更亲近
linux。
和 python 相比 ruby 的优点:
? ? ? ? ? ? ?
比 python 功能更完整的面向对象的语法。 ruby 的整个库都是具有类继承的结构。 他的基本的数据类型和运算符都是可以重载的。 ruby 主要的功能都是通过对象的方法调用来实现的,而不是函数。python 也在向这方面发展,但 没有 ruby 做的彻底。 ruby 的类是更规范的单继承,还有接口等概念的实现。 python 可以实现在
列表内的条件语句、 循环语句, ruby 用“块”的方式来实现这个功能, python 而 比 的更灵活,更具有通用性。 ruby 具有类似 lisp 的彻底的函数方式的条件语句、循环语句等。语句的表达能力更强。 附带一些 unix 工具,如 racc 等。
和 python 相比 ruby 的不足:
? ? ? ?
最大的不足正是因为 ruby 的强大所引起的。 它没有 python 的简单性好。 比较复杂的面向对象语法、 “块”语法的引入、正则表达式的引入、一些简写标记都增加了语言的复杂性。 python 的缩进表达方式比 ruby 的 basic 的表达方式更让人悦目, ruby 程序的满眼的 end 让人不舒 服。当然,ruby 认为 end 的方式比 python 更先进。 ruby 还没有 python 的“自省”的能力,没有从程序文件中生成
文档的能力。 ruby 没有国际化的支持。国际化支持在 ruby 的计划中。这是因为 ruby 的历史比 python 要短造成 的。
?
ruby 没有类似 jython 的东西(JRuby 有了)。
python 和 ruby 的语言的选择:
从简单的就是好的来说,选 python 是没错的。python 适合寻找简单语言的人,这很可能造成 python 更 流行, 因此也有更多的支持。 但如果要追求更强大的语法功能, ruby 是好的选择。 则 因为 ruby 和 python 的哲学有很多相似的地方, 先从 python 入手, 尽量用 python, 如果 python 的能力不足了, 可以在找 ruby。 ruby 和 python 的比较, 就像五笔和拼音输入法的比较。 拼音作为入门的输入法和长久使用的输入法都没 有
问题。五笔适合更高要求的情况。如果追求性能的不妨学学 ruby。对编程语言感兴趣,想了解各种编 程概念的学 ruby 也会很兴奋。
Python/Ruby 和其它语言的比较
?
跟 C/C++/Java 相比 — Python/Ruby 能让你用少的多的多的代码写出相同的程序。有人计算过, Python 戒 Ruby 写出的
程序的代码行数只相当亍相对应的
Java 代码的行数的五分之一。如果没有绝 对的必要,为什么要花这么多时间写出这么多的代码呢?而且,有人说,一个优秀的程序员能维护的 代码量最多是 2 万行。这不区分用的语言究竟是汇编,C 还是 Python/Ruby/PHP/Lisp。所以,如果 你用 Python/Ruby 写,你一个人干的,不管是干什么,如果换用 Java/C/C++,那都需要一个 5 人 的