在Strunk和White的编程格言中,James Devlin典型地出色地研究了我在过去五年中一直注意到的一些东西:编写代码和编写之间意想不到的关系。在写作这个话题上,也许没有比斯特伦克和怀特的“文体元素”更重要的参考文献了。它是你在高中或大学里发现的必备书籍之一,然后在你的余生中思考为什么其他教科书会用那些不必要的词来浪费你的时间来理解他们的观点。就像所有真正伟大的书一样,它永久地改变了你看待世界的方式,只是一点点。维基百科为这本永恒的书提供了一点历史和背景:[风格的元素]最初写于1918年,由康奈尔大学(Cornell University)教授小威廉·斯特伦克(William Strunk,Jr.)私人出版,1935年在爱德华·A·坦尼(Edward A.Tenney)的帮助下首次修订。1957年,它引起了“纽约客”的E.B.怀特的注意。怀特曾在1919年师从斯特伦克,但后来就忘了那本小书,他称这本书为43页,总结了英语使用中的整洁、准确和简洁。几周后,怀特为“纽约客”写了一篇文章,赞扬了斯特伦克教授及其对清晰英语散文的奉献精神。这本书的作者于1946年去世,麦克米伦公司委托怀特重塑1959年出版的新版“风格元素”。在这次修订中,怀特独立地扩展和现代化了1918年的作品,创造了这本手册,现在数百万的作家和学生都知道,简单地说,就是斯特伦克和怀特。怀特的第一版卖出了大约200万册,在40年的时间里,三版的总销量超过了1000万册。
如果你打算成为一名作家,这一切都很好,但是这本永恒的小书和编写计算机程序之间有什么联系呢?可以肯定的是,编写计算机能够理解的程序是具有挑战性的。这就是为什么从大局来看,成为称职程序员的人如此之少。但是写出你的同胞能够理解的段落和句子--嗯,那就更难了。你写程序的时间越长,年龄越大,最终你就会意识到,为了真正取得成功,你必须写出计算机和你的程序员同事都能理解的程序。在软件工程中所有残酷的把戏中,这一定是最残酷的。我们中的大多数人进入这个领域是因为机器比人更有逻辑性。然而,即使您正在编写明确用于机器的代码,您仍然在编写代码。为其他人准备的。像你一样容易犯错、有缺陷、心烦意乱的人类。而这才是真正困难的部分。我认为这就是Knuth用他的识字编程(Pdf)概念所要表达的意思。让我们改变对程序建设的传统态度:与其想象我们的主要任务是指令计算机做什么,不如让我们专注于向人类解释我们想让计算机做什么。识字编程的实践者可以说是一位散文家,他的主要关注点是文体的阐述和精益求精。这样的作者手持同义词表,仔细选择变量的名称,并解释每个变量的含义。他或她努力争取一个可理解的程序,因为它的概念是以最有利于人类理解的顺序介绍的,使用了相互加强的正式和非正式方法的混合。
当然,这说起来容易做起来难。我们中的大多数人一生都在学习如何有效地写作。一本像“风格元素”这样的书可以提供有用的路标,几乎可以全盘翻译成编码过程。我想强调一条来自风格元素的规则,自从多年前最初发现这本书以来,我一直在反复提到这条规则。13.省略不必要的话。有力的写作是简明扼要的。句子不应该包含不必要的单词,段落不应该包含不必要的句子,同样的原因是,图纸不应该有不必要的线条,机器不应该有不必要的部件。这并不要求作者把所有的句子都写得简短,也不要求他回避所有的细节,只要求提纲地对待他的主题,而是要求每一个字都能说明问题。