我很高兴来到松本先生的家乡——日本松江市拜会松本先生。我们在谈话间聊到一些Ruby语言背后的设计思想,松本先生也解答了我向他提出的几个问题。
Bruce:你为什么要开发Ruby?
Matz:我从一开始摆弄计算机,就对编程语言产生了兴趣。编程语言不仅是用来编程的方法,还是思维的放大器,可以塑造思考编程的方式。所以很长一段时间,我都把编程语言当作一项兴趣爱好,下了不少功夫研究。我甚至实现了几门玩具语言,但都派不上什么用场。
1993年,当我看到Perl的时候,不知怎么的,这种混合了Lisp和Smalltalk特征的面向对象语言让我的灵感一下子迸发出来。我意识到Perl将成为一门可提高我们生产力的伟大语言。于是,出于自娱自乐的动机,我着手开发一门与之类似的语言,并将其命名为Ruby。刚开始的时候,开发Ruby还纯属业余爱好,处处都能按自己的口味设计。后来,世界各地的程序员开始渐渐接受这门语言及其背后的设计原则。它越来越受人们喜爱,这远远超出了我的预期。
Bruce:你最喜欢它哪一点呢?
Matz:我喜欢它寓编程于乐的方式。说到某个具体的技术点,我最喜欢的是“代码块”(block)。 代码块即是一种易于控制的高阶函数,也为DSL(Domain-Specific Language,领域特定语言)及其他特性的实现提供了极大的灵活性。
Bruce:如果能让时光倒流,你想改变哪些特性?
Matz:我想去掉线程,加入actor(参与者)或一些更高级的并发特性。
无论你是否已对Ruby有所了解,都请一边阅读本章,一边留意Matz为设计这门语言所做的种种权衡。你可以看看他添加了哪些语法糖——那些打破了语言常规,不仅为程序员提供更加友好的体验,而且让代码更容易理解的小特性。还可以看看Matz在集合(collection)等处用到的代码块,体会一下它们如何发挥出梦幻般的效果。还有,尽可能去理解他在简单性和安全性之间、编码效率和程序性能之间所做的哪些让步和折中。
摘自《七周七语言》