2011年07月08日 星期五 08:40
Ruby,一种为简单快捷的面向对象编程(面向对象程序设计)而创的脚本语言,在20世纪90年代由日本人松本行弘(まつもとゆきひろ/Yukihiro Matsumoto)开发,遵守GPL协议和Ruby License。
一、Ruby 关注细节。
Ruby 提供丰富的同义词和别名。不记得对数组或字符串是用 size 还是 length 吗?两个都可以用。对于范围(range),是用 begin 和 end ,还是 first 和 last?由您自选。您心里拼写 indices ,而您的手却拼出 indexes 吗?两个都可以用。
二、Ruby 具有灵活的语法特性。
在方法调用中可以忽略括号,参数之间可以忽略逗号。Perl 风格的引号允许我们定义数组或字符串时不必劳烦去敲那些引号和逗号(译注:Ruby 中 a = [ 'ant', 'bee', 'cat' ] 可以简写为 a = %w{ ant bee cat })。return 关键字也可以忽略。
三、Ruby 有丰富的程序库可供使用。
Ruby 的程序库提供了对线程、套接字(socket)、有限的对象永续机制、CGI、服务器端可执行机制、DB 文件等许多功能的支持。Ruby 还对 Tk 有所支持,今后会有更多的支持。
四、Ruby 有调试器(debugger)。
在完美世界里我们大约不需要调试器。可惜这并不是完美的世界。
五、Ruby 可通过交互的方式来使用。
Ruby 设计为可以将其当作一种类似 Kornshell 的 shell 来使用。(这是本文中最令人质疑的观点,而且我也不得不承认,Ruby 并不是真正非常优秀的 shell。但我还是坚持认为,基于 Ruby 的 shell 是个不错的东西。)
六、Ruby 是精炼的语言。
Ruby 中没有非必要的关键字,比如 Pascal 的 begin,if 之后的 then,while 之后的 do。不需要事先声明变量,因为变量无类型。不需要为方法指定返回类型。不需要 return 关键字;方法会返回最后被求值的表达式之结果。另外一方面……Ruby 不像 C 或 Perl 那么晦涩。
七、Ruby 是面向表达的语言(expression-oriented)。
您可以像说话一样很容易写出 x = if a<0 then b else c end 这样的句子。
八、Ruby 语言中系结了 syntax sugar(语法糖)。
(转述 Mary Poppins 的话说就是:一勺语法糖可以压一压语义的药味。"A spoonful of syntax sugar helps the semantic medicine go down.")只要您想,您就可以用 for a in x 来迭代遍历数组 x,可以用 a += b 来代替 a = a + b。大多数操作符其实只是简化的方法表示、更加直觉的名称以及更加方便使用的语法形式。
译注:Mary Poppins 指的是美国1964年拍摄的经典电影《欢乐满人间(Mary Poppins)》。
九、Ruby 支持操作符重载(overloading)。
如果我没记错的话,操作符重载源起自很久以前的 SNOBOL,但却是由较近的 C++ 振兴。这个机制可能会被滥用或误用,但有总比没有好。另外,Ruby 会自动定义操作符的赋值(assignment)版本,比如说,您定义了操作符 + ,那么您就会自动得到操作符 +=。
十、Ruby 具有无限精度的整数算法。
谁还关心 short、int、long 呢? 使用 Bignum 就行了。承认吧,您总还是想看看365的阶乘是多少。现在您可以看了。
十一、Ruby 具有幂运算操作符。
在过去年代,我们在 BASIC 和 FORTRAN 里使用过幂运算操作符。但是后来我们学会了 Pascal 和 C 语言,知道了这个操作符邪恶的一面。(我们被告知,我们甚至都不曾知道求值是如何完成的——是使用了对数还是迭代?效率有多高?)可是我们真的关心这些么?如果是,我们可以编写自己的版本。如果不是,Ruby 还提供了您珍爱的老好用的 ** operator 供您使用。享用它吧!
十二、Ruby 具有强大的字符串处理能力。
如果您想对字符串进行搜索、替换、修改、格式化、截断(trim)、分隔(delimit)、追加(interpose),或者字元化(tokenize)等操作,您可以使用 Ruby 内建的方法。如过内建方法不能满足要求,您可以利用内建方法来建构自己所需。
十三、Ruby 几乎没有违反自身规则的例外情况。
Ruby 的语法和语义比大多数语言更具自我完备性(self-consistent)。每种语言都有犄角旮旯,每种规则都有例外情况;但 Ruby 的旮旯和例外可能比您想象的要少。
到这,关于Ruby受欢迎的三十七个理由,就为大家介绍完了。希望对你有帮助。
51cto:http://developer.51cto.com/art/201107/273386.htm
Zeuux © 2024
京ICP备05028076号