本章介绍了Matz创作Ruby的缘由。Matz从高中时候就开始编程。但他自认为自己是个“怪才”,因为别的程序猿普遍关注程序可以做什么,而他却更关注我们如何有效的和机器进行交流。驱使他完成Ruby创作的动力,完全来自与自己的兴趣而不是为了“这下可以大赚一笔”或者名留青史之类的。很多人问道,你为什么开发Ruby,他认为最合适的回答应该和Linux的开发者Linux Torvalds对"为什么开发Linux“的回答一样
"因为它给我带来到了快乐!"
1.1.1编程语言的重要性
语言是信息传递的媒介。因为语言的出现,使得人与人之间才可以传递知识和交流信息,也正是因为语言,才造成人和动物的区别。
Matz认为,编程语言很大程度回决定使用者的思考方式和编程风格。
《人月神话》里有这么一个观点:一个程序员,不管他使用什么样的语言,他在一定时间内编写出来的代码行数是一定的。但如果真的是这样,一个程序员每天可以写500行汇编和500行Ruby代码所能实现的功能还是有天壤之别的。感谢摩尔定律,现在的计算机已经价格更低,性能也更强劲。在程序猿的效率和程序执行效率这个矛盾中,前者已经成为了主要矛盾。如何用更少的成本和更高的效率开发出软件,是目前我们主要关注的问题。
1.1.2 Ruby的原则
如果一种语言不假思索的吸收其他语言的特点,那么最后这么语言只会成为其他语言的翻版,从而失去它作为一种新的语言存在的价值。
Ruby编程语言的设计目标是:高效开发,轻松工作。所以Ruby的一切语言特性都是围绕着这个原则来的。
·简洁性
对比下同样是Fibonacci数列的实现,不难发现,Ruby省去了很多变量定义的代码,虽然这可能回造成一些代码安全性的问题,但可以让程序猿更加专注于实际算法的实现。想想读过的数据结构和算法书上不都是用伪代码来定义数据结构和算法么?不就是为了去掉非实质代码,让读者更加专注与算法本身。所以,Ruby做到了
·扩展性
每种编程语言其实都有自己特定的应用领域,比如php适合后台网页开发,C适合底层的嵌入式开发。Ruby因为照顾到程序猿的效率,所以难免会牺牲程序执行上的性能。Matz在1999年写的《面向对象脚本语言Ruby》中就明确了Ruby不太适合“以数值计算为主的程序”和“数万行的大型程序”。但事实证明,Ruby的易用性还是造出了规模在万行,甚至几十万行的软件,甚至气象数据分析和物理领域也用到了Ruby。
Ruby天生的面向对象特性,为后期拓展提供了便利。比如Ruby以“块”这种明白易懂的形式为程序员提供了相当于Lisp高阶函数的特性。
关于扩展性,要特别注意不要“想当然的加入无谓的限制“。比如,刚开始开发Unicode的时候,作者认为16位即65535个字符可以表示世界上的所有文字了;同样,Y2K(千年虫)问题也是想当然的认为用2位数表示日期足够才导致的
·稳定性
Ruby在创作的过程中,Matz拒绝了加入Lisp的宏特性,因为他认为这会是的语言变得过于灵活,使程序缺少统一的编程风格,给程序员阅读代码带来麻烦。比较对于每个程序员来说,读代码的时间要远远多于写代码的时间。
1.1.6一切皆因兴趣
Matz开发Ruby,因为兴趣。而我学习Ruby也是因为兴趣。