对独立程序员的赞美

本文是翻译,版权归原作者所有



[caption id=”attachment_2448” align=”alignnone” width=”600”]对独立程序员的赞美 Photo: Dominic Alves, Flickr[/caption]

帕金森定理【注1】告诉了我们,「在工作能够完成的时限内,工作量会一直增加,直到所有可用时间都被填充为止。」将其应用到软件上,这意味着应用程序倾向于成为臃肿软件(bloatware)、极为臃肿的程序,其复杂程度使得它们几乎不可能被调试和维护。今天,我们看到了更开心的反例,从过去到现在,由「隐士级的程序员」创造的有野心的产品。

很久以前,我们对一名「独立攀登者」肃然起敬,该程序员在一台准系统电脑【注2】上独立地编写了一个杰作,比如只有 64kb 内存的 Apple II( 是的,K——不是 M,更不要说是 G 了),1Mhz 的 8 位处理器(重申,是 M 而不是 G)。

过去,这个巨人就是 Paul Lutus【注3】。据他自己承认,他符合隐士级程序员的风格:

「在计算机业务方面,我因俄勒冈州隐士而广为人知。根据谣传,我编写个人计算机程序时,与世隔绝,避开吃饭和睡觉,在无尽头遁走的状态下工作。为了使得一些后续的编程想法不被丢掉,我挂掉了重要来访者的电话,我住在荒野之中的、一条肮脏公路的尽头。我在这里是为了告诉你,这些狠毒的谣言是千真万确的。」

当我在 1981 年访问美国加州 Cupertino 市苹果公司总部时,Paul Lutus 因其 Apple Writer 字处理软件的名气,已经在 Bandley Drive Hall 赢得了一个挨着乔布斯和 Wozniak 的位置。崇拜者说过,他是如何开着私人飞机,收齐版税支票,随后立即飞回他在树林中的、俄勒冈州的寓所。

刚出现字处理行业时( Exxon Office Systems 公司及其 Vydec 专业的工作站),我带着蔑视看了看 Lutus 小巧、功能不全的玩具。然后我参观了 Apple 仓库,在那儿我看到了一辆铲车正装载 Apple Writer 箱子的面板。好几堆软件!经过速算、带着一堆疑问,我得出了一个结论:Apple Writer 将很容易击败所有那些带着「pros」的字处理工作站的软件。

在当时我理解不了,但是我目睹了一个人的破坏。

(对于真正的极客,Lutus 的网站 arachnoid.com 充斥着让人喜欢的「孤独攀登者」的趣闻和态度:

我过去使用我编写的 GraForth 图像语言,以磁盘的形式创建了一个「计算器信件【注4】」,它显示了图片和消息。之后,山顶上的一间小屋,门开了,然后音乐响起。其设计初衷是为了说服某些人来俄勒冈州拜访我,它起到了作用。
它没有处理计算机部分和 24 小时的延迟,而是使用一台桌子上的设备,就能得到合理地、精确到秒的结果。对于时间,这近乎奇迹。

在《Programming Handheld Calculators》文章结尾,却停留在了关于维基百科的、令人惊奇的跑题上了。)

Bill Budge 是另一个知名的独立程序员。在 1981 年,Bill Budge 在 Apple II 上编写了一个名叫 Raster Blaster 的弹球游戏。鉴于 1 MHz 的 8 位处理器「明显地」无法支持该游戏所要求的、快速的图像、冲突处理和有趣的声效,这款游戏绝对是个壮举。

他攀登的下一个舞台是 Pinball Construction Set——他最终因此而成名,这是一套模块,像我这样的傻瓜可以将其组合为自定义的弹球设计。在当时,也就是 1983 年,这(无疑)被视作又一项让人惊叹的成就,使用了每一个 6502 芯片周期来取悦用户的完美方案。(之后,市场人员劫持了这个词语,将其包装为 Surprise and Delight™,带着渺茫希望使用这个词语,希望掩盖产品的空洞。)

当不知名的计算机智者使用他的时候,程序员的工作就跑了走在水面上的用户的脚下,要确保这些脚不要被弄湿。Pinball Construction Set 就做到了这一点。

就在同一年,我在 Apple 发布会上排队时,碰到了 Bill Budge。对于他超人般的编程技巧,我表示了崇拜之后,也表达了担忧,他在 SoftTalk 杂志的一篇文章上揭示了 Pinball Construction Set 内部的图形算法。那次揭示会不会暗中破坏他的名声?这位年轻智者给出了永生难忘的回答:一本食谱书无法造就出一名厨师长。

故事到了这里,如果我不提及 Bob Frankston 和 Dan Bricklin,就无法结束本文,他俩是具有划时代意义的 VisiCalc【注6】的联合作者。VisiCalc 催生了 Excel,也就是说,VisiCalc 的影响,每一天、在大大小小的每个商业角落,都能被感受到。

那个时代就是这样的……计算机机器操作系统,是应用到程序员身上的 PC(个人电脑)里的「P」。他或她(那个时候大多数是他)孤独地坐在树林中的小屋里,就可以对宇宙产生深远影响

多么怀旧呀。今天,貌似不再可能出现如此非凡的成就了。

我写本文时,我正在 iMac 下载最新的 Xcode,它是 Apple 的编程环境和工具集。它需要 7.77G 的磁盘空间。我在写本文时使用的、「过时的」字处理软件(Pages 2009)有 388M;更新的、更愚蠢的 Pages 版本 5.5.3 占用了 478M。

操作系统已经变得如此复杂,以致于孤立的一个人不可能内在化他们的运作方式,以编写让用户在水上行走的代码了。对于「2015 年的 Paul Lutus」而言,是没有那样的环境了。

但是,真有这么恐怖吗?

结果显示,操作系统和开发工具的大小和复杂度,并没有呈现出完全不可逾越的障碍;我们仍然能够找到大量的、由一个人完成的程序。一个例子是 Preview【注7】,它是 Mac 一体化的文件预览和编辑程序。虽然这篇维基百科的词条过时了,也不那么热情,然而 Macworld 网站的一篇名为《The many superpowers of Apple’s Preview》文章(第一部分第二部分)公正地宣示了这个应用的力量和灵活性。请阅读这篇文章,和我一起,为那位独立的、不知名的程序员所付出的劳动,表示感激,他从 NeXT 时代起就陪伴着这款软件。

Preview 甚至催生了 CAD 文件,它是 .DAE 扩展,亦称 Collada 文件,是面向 CAD 程序的一种交换格式。你可以把玩 3D 图像,而无需原始的 CAD 程序。令人印象深刻———对于 iTunes(好事者称之为 Apple’s Windows Vista)、Pages、甚至 Mail 的凄凉状况,把我带向了黑暗思想,这么多年了,这些应用仍然有 bug、仍然会崩溃。难道是因为有太多厨师的缘故?

我们有了 Gus Mueller 的 Acorn,它比 Preview 更新、但同样有野心,它是「面向人类的图像编辑器」,现在它在 Mac 苹果商店的版本是 5。为了对这款应用有个深度和广度方面的了解,可以浏览这家公司官网上的文档。除了「直接」 的技术文档,还有一个 FAQ,Acorn 社区的指示,以及面向初学者、中级和高级用户的、海量视频教程。(Gus Mueller 把他的这家位于华盛顿州埃弗里特市的公司叫做「妈妈和爸爸的店铺」,因为他的妻子 Kristin 在不做理疗师时,为他写过文档。)

在我的 iMac 上,Acorn 5 只有 24.6M。不管公平与否,把它和动辄 1.5G 或更多的应用(Microsoft Word、Excel……)、或有着 478M 的 Pages 做个比较吧。

有庞大,也有希望。


译文:对独立程序员的赞美 》| 腊八粥