Ruby灵巧,快速,但其实并不简单。
Ruby中实现一个小功能,可以有3种甚至4种完全不同的思路与方法,因为Ruby在语法层次实现了冗余1,但是这样一来:
1).程序员深入掌握Ruby变得不很容易;
2).程序员们相互读懂代码也很难;
3).软件生产是一种大规模地、群体合作的行为。许多软件公司有自己的编码规范,促使员工编码风格统一,以便于A)程序解耦重构、B)代码复用、C)人员流动后项目如期推进。Java撇下C++,成为软件工业的支柱语言,正是得力于此。Ruby灵巧,快速,千变万化,没有统一风格,难于解耦,在目前,自然不适合工业生产。
如果说语法定义的冗余增加了灵活性,没有伤害,那么,Ruby 坚持缺陷也许是一种个性美吧。在 3.6 节我叙述 I/O 的输入方法gets 的时候,没有给出例程,是因为 Ruby for mswin32 的版本在windows 下不能正确处理标准输入和标准输出,要想使用,只好打开一个DOS 窗口,几个版本了,依旧如此。还有就是Ruby的语法中有许多容易产生歧义的地方,恕不举例,假如没有较深的功力、良好的编码风格(比如空格的使用),很容易犯错。软件生产总是偏向于成熟方案、成熟工具的。
1例如, length与size都表示数组长度,为什么Ruby要定义两个方法来表示数组长度呢?因为在英语中提到长度,有人会用length,有人会用size。这样的例子在Ruby语言里非常普遍。