对独立程序员的赞美
Photo: Dominic Alves, Flickr
英文原文:A Salute To Solo Programmers
帕金森定理【注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】」,它显示了图片和消息。之后,山顶上的一间小屋,门开了,然后音乐响起。其设计初衷是为了说服某些人来俄勒冈州拜访我,它起到了作用。
- 在 NASA,他为 HP-25 和 HP-67 手持计算器编写程序,来计算空间飞行轨迹和「星历表【注5】」:
它没有处理计算机部分和 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 做个比较吧。
有庞大,也有希望。
- 注1:帕金森定理(英语:Parkinson’s law),由英国作家西里尔·诺斯古德·帕金森提出的俗语。西里尔·诺斯古德·帕金森在 1958 年,将这个观察,扩充为一本书,《帕金森定理:对于进度的追求》(Parkinson’s Law: The Pursuit of Progress)。在此书中,帕金森定理被当成一个数学等式,用来描述官僚组织随着时间而扩大的速率。帕金森观察到,一个官僚组织中的雇员总数,通常以 每年5-7% 的速度增加。他认为,有两股力量造成了这个增长, (1) 一个官员希望他的下属增加,但不希望解雇造成敌人增加;以及(2) 官员会制造工作给彼此。https://zh.wikipedia.org/wiki/%E5%B8%95%E9%87%91%E6%A3%AE%E5%AE%9A%E7%90%86
- 注2:准系统电脑(barebone computer),又称“骰仔机”,指的是已组装一半的个人电脑,具有机壳、电源供应器、主板、散热系统。使用者可依照自身需求以及预算而自行决定所需 的 CPU、内存、储存装置(硬盘及光驱)等以购买及安装。对于使用者和厂商而言,是具有弹性的电脑销售和选购方式。https://zh.wikipedia.org/wiki/%E6%BA%96%E7%B3%BB%E7%B5%B1%E9%9B%BB%E8%85%A6
- 注3:保罗·卢特思(Paul Lutus,1945 年-)是一名美国程序员、飞行员、帆船水手和一名 NASA 的工程师。他是 Apple Writer、Arachnophilia、AboutTime 的作者。他有一个关于 Careware 的新想法。https://zh.wikipedia.org/wiki/%E4%BF%9D%E7%BD%97%C2%B7%E5%8D%A2%E7%89%B9%E6%80%9D
- 注4:A ‘Computer Letter’ is a letter, document, or computer file that is sent electronically from one desktop/laptop/mobile phone to another, with the aid of programmes such as Microsoft Outlook, Hotmail, and Yahoo. Whilst most are satisfied with the term ‘Email’, others prefer to use this terminology to reduce the chances of confusion. Used by only a rare number of individuals, the’Computer Letter’ terminology originated in Southern England and will inevitably spread to more northern regions such as Manchester and Newcastle. Since origin, the term has been abbreviated to ‘CL’ and ‘Com-let’.http://www.urbandictionary.com/define.php?term=Computer+Letter
- 注5:星历表,简称历表,源自希腊文ἐφήμερος(ephemeros),刊载一个或多个天体每天特定时刻位置的数据表列,通常还附带其他补充材料;而天文年历也是星历表的一种。https://zh.wikipedia.org/wiki/%E6%98%9F%E6%9B%86%E8%A1%A8
- 注6:VisiCalc 是世界上第一套电子表格软件,由丹·布李克林(Dan Bricklin)和鲍伯·法兰克斯顿(Bob Frankston)发展而成,1979 年 10 月跟着苹果二号电脑推出,成为苹果二号电脑上的“杀手应用软件”。https://zh.wikipedia.org/wiki/VisiCalc
- 注7:预览程式(Preview)是 Mac OS X 操作系统中的影像检视器及 PDF 阅读器。跟 Mac OS X 本身一样,是从 NeXT 的 OpenStep 操作系统里衍生出来的。https://zh.wikipedia.org/wiki/%E9%A0%90%E8%A6%BD%E7%A8%8B%E5%BC%8F