马蒂·赫斯特(Marti Hearst):加州大学伯克利分校信息学院计算机科学家,著有《搜索用户界面》(Search User Interfaces)。
从最初计算机编程出现到现在,我们一直面临的不幸的事实是,在这门学科里,我们找不到可以设计出零差错程序的方法。
为什么我们不能模仿其他工程领域的成功,克服计算机编程中的困难呢?或许能诗意地解决这个问题的思想家,就是弗雷德里克·布鲁克斯(Frederick Brooks)了,他是《人月神话》(The Mythical Man-Month)一书的作者。如果有人留意到的话,这有着一个让人有些怜惜的书名,它于1975年首次出版,虽然充斥着性别歧视的字眼,但鉴于它的伟大影响,我们也就将其忽略了。并且布鲁克斯在37年前提出来的观点,时至今日,除了假定所有的程序员都是“他”之外,其他几乎毫厘不差。
布鲁克斯妙笔生花,把编程的乐趣夸到了一个新高度:
程序员,像诗人一般,他们的工作无非就是对纯理论取其精华去其糟粕。在空中搭建楼阁,凭借想象进行创作。鲜有创作的介质如此灵活多变、如此轻轻松松对其做到润色和修订、如此轻而易举就实现了恢宏的概念架构。然而,不同于诗人的诗句,编程的搭建是真实不虚的,它能够启动和运行,与架构本身分离,并生成可视化的输出。它可以打印结果、绘制图片、发出声音、令模型挥动手臂。在我们的时代里,它就好像是神话和传奇的魔力。
但这种魔力被随之而来的另一面所反噬:
在形形色色的诸多创造性活动中,执行的介质最令人感到棘手。木材会开裂,油漆会涂花,电路会短路。这些介质的物理局限性,束缚了我们的创作,并在实现想法的过程中造成了意料之外的障碍。然而,计算机编程创造了一种极易被驾驭的介质。程序员从纯粹的思考开始着手搭建,这些思考包括概念和极其灵活的表征。由于介质易于驾驭,我们在实现方面很少遇到困难和障碍。由此我们普遍持有乐观态度。但因为我们的想法有可能是错误的,在实现过程也可能会出现差错,由此,我们的乐观也是要被求证的。
犹如在一篇散文中,有无数种方式来表达同一种意思一样,程序员也可以写出各种不同程序来实现同一种功能。宇宙存在的可能性是如此广泛与开放,如此无拘无束,以至于无法容忍误差的存在。
还有很多其他值得关注的导致编程错误的原因,但最重要的原因是,自主独立的交互系统与不可预测的输入所生成的复杂性,通常由更加不可预测的人类活动,和全球互联网络所驱动。于我而言,所谓优雅的理论,就是那些天马行空、任由驰骋的奇思妙想。