我们为了获得更轻松便捷的体验而编写程序。但轻松便捷不等于偷工减料。偷工减料在前,痛苦在后,这不是真正的便捷。 懒惰:程序员的三大美德之一 大家听说过“程序员的三大美德”吗?Perl语言的设计者Larry Wall在其著作Programming PerlC中提出,优秀的程序员具有三大美德:懒惰、急躁和傲慢(Laziness, Impatience and Hubris)。这就是俗称的程序员的三大美德。本节,我们介绍其中最重要的一项素质:懒惰。D A “Much of my work has come from being lazy, ” http://www.msnbc.msn.com/id/17704662/. B “I didn’t like writing programs,... I started work on a programming system to make it easier to write programs.” http://www.msnbc.msn.com/id/17704662/. C 中文版为《Perl语言编程(第3版)》,由中国电力出版社于2001年出版,何伟平译。 D 美德中“急躁”的意思是,程序员忍受不了程序执行的低效。“傲慢”的意思是,程序员容不得对错误不管不顾。 懒惰(Laziness) 懒惰是一项为了减少总能量支出,而不遗余力地努力的素质。为了节省工夫,设计的程序逐渐被更多的人使用。单独回答每个使用者的疑问费时费力,于是,程序中开始标有注释。所以说,懒惰是程序员最宝贵的素质。也正因如此,本书才得以展现在各位面前。请参考急躁和傲慢的解释。 《Perl语言编程(第3版)》 Laziness有懒惰、懒散、慵懒等不同的翻译方式,总的来说就是让自己轻松、方便。但这不是追求一时轻松,而是选择能将轻松便捷最大化的方法。也就是说,在能达到相同目的的多种方法中,选取一种效率最高、效果最好的方法。 根据《Perl语言编程(第3版)》一书,Perl这一名字是来自Practical extraction and report language(实用的数据获取及展示语言)。可见,Perl是为了能方便地展示数据而发明的一种语言。 语言们各有各的便捷 前面说到程序设计语言是为寻求便捷而创造的。那么,为什么需要有这么多种语言呢?这是因为,大家对于便捷的理解因人而异。我们来看一下语言设计者们的目的以及他们是以何为便捷的吧。 何为“便捷” 语言旨在使什么变得便捷呢?是高速的代码执行?还是简单易于掌握的语言规范?抑或是轻松地理解他人编写的代码? 比如,C++是一种非常重视代码执行速度的语言。为了使编程实现相同目的时,执行速度不亚于C语言,C++语言的规范相应变得复杂了。 另外,Scheme是一种很重视语言规则是否容易掌握的编程语言。它追求语言规范最简原则,所以它的语言规范全部加起来只有紧凑的50页而已A。但是,对满是括号的书写方式存在抵抗情绪的人应该不少。 A 准确来讲,在1998年第五版修订版前是这样的。第五版修订版是50页,2007年的第六版放弃了规范最简原则,增加到187页。然而,C++语言有着超过1300页的规则说明书。相比之下,Scheme语言算是非常紧凑的了。(这里的页数都是指日文版页数。——译者注) Python是一种侧重于把代码阅读变得容易的语言。相对于Scheme语言,它更接近于C语言。熟练的编程人员会使用很多控制语句,并且会在结构层面通过缩进符来规范书写。相对应地,其速度不是特别快,语言规则也不那么少而紧凑。 各有各的便捷 语言的便捷之处各不相同。比如,用PHP语言编写Web服务很轻松,但它不擅长文字处理。相反,Haskell和OCaml这样的ML(Meta-Language)系列语言,编写处理语言文字的应用很便捷,但编写Web服务时就没有PHP使用得那么多了。 在不同语言中,既有便于个人独立实现复杂算法的语言,也有便于多个人协作实现大型作业的语言,还有便于书写一次性使用的测试类语言。 程序设计语言的选用因使用者目的不同而不同。不同语言致力于达成不同的目的。如果把为实现高速执行而设计的C++语言和为了便于代码阅读而设计的Python语言放到一起比较,说C++语言的可读性差或者Python的执行速度慢,这样的争论意义并不是很大。