Fascinating little programs

Salvatore Sanfilippo

迷人的小程序

昨天和今天,我抽出时间研究了一下 linenoise(http://github.com/antirez/linenoise),一个极简的行编辑库,旨在作为 readline 简单小巧的替代品。
我尝试合并了几个 pull request,修复了一些问题,同时也做了一些重构。那是一种近乎涅槃的感受:对一段小巧、自包含且实用的代码拥有完全的掌控。

简单的代码有某种特别之处。在这里,我指的不是为了对抗复杂性或过度工程而追求的简单,而是简单本身,自指的,除了美、可理解性和优雅之外别无他求。

毕竟,编程世界一直以来都对小程序着迷。几十年来,程序员们在 1k 或 4k 的限制下不断挑战自我,从 6502 汇编到如今的 JavaScript 竞赛。
说到底,即便是国际 C 语言混乱代码大赛,也有很大一部分体现了极简主义。

为什么 hack 一小段代码会如此美妙?是的,它小而简单,这是两个优点。它可以被完全理解、完全掌控。你可以耍一些小聪明,因为小代码是世界上唯一一个靠编程上的小聪明能得到回报的地方,毕竟在大型项目中,从长远来看,直白才是更好的选择。然而我相信不止于此,小程序可以臻于完美。就像由寥寥数语构成的十四行诗那样完美。大小和范围上的限制,构成了一种智识上的策略,用以避开“也许可以更好”的陷阱,当这种“更好”实际上无法衡量、也不明显的时候。在这些严格的限制下,程序所实现的功能远比它未实现的功能更有趣。实际上,约束才是解决方案创造力最肥沃的土壤,否则这些巧思很可能毫无用处:在规模化的场景下,做任何事总有一种更正确、更易理解、更正统的方式。

在微软早期的一次访谈中,Bill Gates(比尔·盖茨)描述了他在编写著名的 Microsoft BASIC 解释器时的这种感受。当时的限制与我们今天出于乐趣、在竞赛中或仅仅为了追求本身而自我施加的限制如出一辙。曾有一代程序员能够在自己的作品中体验到完美,在那个空间和时间都极度匮乏的领域里,一次改动是否真正带来了程序的改进,是可以被清楚地衡量和理解的。那里没有容纳浪费和不必要复杂性的余地。

今天的软件在某种程度上是软件另一种现实的胜利:层层复杂性带来了令人难以置信的设备或基础设施技术,让非专业人士也能发掘出诸多可能性。然而,也许仍有一些东西值得从那个软件可以臻于完美的古老时代中保留下来,那就是你所创造之物是有结构的,而不仅仅是一堆能运行的代码的感觉。如果你把视野拉得足够远,你会发现你的大型程序其实又变得相当小巧,而至少在这个尺度上,它应该呈现出完美的样子,或者至少,向完美努力。

原文由 Salvatore Sanfilippo 发布

本文章由 muse-spark-1.2-contributor 进行翻译