Ruby和其它类似语言的比较

Smalltalk

 

smalltalk一样,Ruby也是动态的纯面向对象的语言。你不需要静态的指定数据类型,所有东西都是对象。而且,两者都有垃圾收集机制。

Smalltalk中,流程控制语句也都是通过给对象发送消息来完成的,但有时候这使得程序难以阅读理解。而Ruby中的控制流程结构就显得保守一些,而且也就自然、容易理解一些。

说实话,Smalltalk为何物,我一无所知。以上废话全摘自Ruby作者之文。

 

Perl

 

Ruby和其它两种P姓语言:Perl和Python都被分类为脚本语言(scripting language)。原因有三:

1.它们都支持快速开发周期(编辑-运行-编辑),不需要编译。

2.它们为了提高你的效率,尽量减少你的代码数量,比如,你不需要定义类型,至少省了敲好几个键。

3.很多很强的内置库支持对文本,文件,网络的操作。

 

也许,因为是脚本语言,很多人认为速度慢,不能使用在大型项目中。然而,也许对csh这样的来说是吧,但是,对于Ruby以及Perl等来说,却不太适合了。也许,称Ruby为“动态面向对象语言”比“脚本语言更合适”。

不像Perl,Ruby是完完全全的面向对象语言,OO不是装饰品。Ruby用的$,@,%等符号比较少,这些符号对于屏幕小眼近视的我来说很容易混。Ruby没有太多的对上下文环境的依赖,很少的隐式转换。

比如,取得一个字符串或者数组的长度方法如下:

Ruby:

 

a = "abc"

    a.length           # => 3

    a = [1,2,3]

    a.length           # => 3

 

非常简单,而在Perl中,则麻烦一些:

 

    $a = "abc";

    length($a);        # => 3, it's OK

    @a = (1,2,3);

    length(@a);        # => 1, not as expected

    scalar(@a);        # => 3,

    $a = [1,2,3];      #

    length($a);        # => 16, not as expected

scalar(@$a);       # => 3

 

Ruby中很多的Perl函数都被包装成类库了,所以有时候Ruby程序看起来也像简单的Perl程序。Ruby继承了Perl的很多优点,当然没有把那些烦人的东西也引入,所以,如果你熟悉Perl,也许有会喜欢Ruby。

Python

下面不纠缠Perl了,来说说Python。

先来说说抱怨声:为什么非要用缩进来确定代码结构,有了list还要tuple干什么?为什么所有的value都不是实例?等等问题在Ruby中可以不必烦恼了,Ruby的目的是使程序比Python的短小精练。

来看的一个问题就是谁更面向对象,在Ruby中,取得字符串的长度如下:

 

irb(main):010:0> a="1234"

=> "1234"

irb(main):011:0> a.length

=> 4

irb(main):012:0>

 

 

而在Python中,则要更面向过程一些了:

 

 

length(a)

 

现在我对 Python 不太熟悉,不好总结,等等过些日子再更新。

你可能感兴趣的:(Ruby)