Fascinating little programs

Salvatore Sanfilippo

迷人的小程序

原文由 Salvatore Sanfilippo 发布,订阅该博客

这两天我花了些时间摆弄 linenoise(http://github.com/antirez/linenoise),一个极简的行编辑库,旨在作为 readline 轻量、小巧的替代品。
我尝试合并了几个 pull request、修复了一些问题,同时也做了一点重构。那是一种近乎涅槃的体验:对一段小巧、自洽而又实用的代码拥有完全的掌控。

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

编程世界向来痴迷于小程序。几十年来,程序员们一直在 1K 或 4K 的极限中挑战自我,从 6502 汇编到如今的 JavaScript 竞赛。
即便是国际 C 语言混乱代码大赛,究其根本,很大程度上也是对极简的推崇。

为什么摆弄一小段代码会如此美妙?没错,小而简单,这本身就是两大优点。它可以被彻底理解、完全掌控。你可以尽情施展聪明才智,因为小代码是世界上唯一能让编程技巧真正带来回报的地方——在大型项目中,长远来看,直白要好得多。然而我相信,原因还不止于此,那就是小程序可以臻于完美。就像一首仅由寥寥数语构成的十四行诗那样完美。体积和功能范围上的限制,构成了一种巧妙的思想策略,让人得以避开“也许还能更好”的陷阱——当这种“更好”根本无法衡量、也无从显现时。在这些严格的限制之下,程序所能做到的,远比它不能做的更有意思。实际上,约束才是孕育创造性解法的最肥沃土壤,否则那些解法很可能毫无用处:在规模化的场景下,做任何事总有一种更正确、更易理解、更合乎规范的方式。

在微软创业初期的一次访谈中,比尔·盖茨曾描述过他在编写著名的 Microsoft BASIC 解释器时的这种感受。那时的限制,与我们今天出于乐趣、在竞赛中或仅仅为追求本身而自我设定的限制如出一辙。曾有一代程序员得以在自己的作品中体验完美——在那个空间与时间都极度匮乏的领域里,一次改动究竟是否让程序变得更好,是可以被清晰衡量和感知的。那里容不下任何浪费和不必要的复杂。

今天的软件在某种程度上是软件另一面的胜利:层层复杂性堆叠,带来了不可思议的设备与基础设施技术,让非专业人士也能拥有众多可能性。然而,或许我们仍应从那个软件可以臻于完美的古老年代保留下一些东西——那种感觉,即你所创造的东西拥有结构,而不仅仅是一堆能跑起来的代码。如果你把视野拉得足够远,就会发现你的大型程序其实又变得很小了,而至少在这个尺度上,它应该呈现出完美的样子,或至少,以此为目标。

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

评论