Programming and Writing

Salvatore Sanfilippo

编程与写作

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

一年前,我暂停了自己的编程生涯,开始写一部小说,当时还错以为这项新事业与过去的工作截然不同。写下——更多时候是重写了——成千上万字之后,我几乎可以肯定事实恰恰相反:构建大型系统与创作长篇小说有着许多共通之处,过程也十分相似。

两者之间最显而易见的相似之处在于,它们都是在“写”东西。代码不是用自然语言写成的散文,但它也有一套固定的规则(语法),有一些写法会让大多数程序员觉得自然,而另一些写法虽然在形式上完全正确,却让人难以理解。

然而,两者之间还有更深层的联系:好的程序和好的小说,都是局部与整体都处理得当的结果。好的代码不仅要求每一条语句都写得清晰可读,从整体上看,程序的各个部分还必须正交、设计一致、交互清晰。好的小说同样需要在微观和宏观这两个层面上都取得成功。句子要写得好,但整体结构以及各部分之间的关系也至关重要。

编程与写作另一个不那么结构性的关联,在于从事两者所需的驱动力:要想成功,就必须取得进展;而要取得进展,就必须保持持续。人们普遍认同,程序和小說至今都不会自己写出来。二十年的写代码经历在这方面给了我极大的帮助;我明白只有每天坐下来写,事情才会发生:有一天写一百个字,另一天写两千个字,但很少有一天不在纸上落下文字。而如果你写过的代码不只是庞大系统中一块“填充物”,而是你自己的创造,你就会知道,写作障碍在编程中同样会出现。唯一的区别在于,对大多数人而言,你是工程师,所以如果你没干活,就是懒惰;而同样的懒惰,放在艺术家身上,就会变成创作过程中一个迷人的组成部分。

差异。

我认为写作与编程之间最鲜明的区别在于,小说一旦写完、编辑并定稿,就基本保持不变了。当然也有作家在数年后重拾自己的小说,出版一个“修复缺陷”的版本,但这种情况很少见,即便发生,也只是一次性的。而代码则会随着时间不断演进,面临无休无止的修改,往往由多人协作完成。这个简单的事实对两种创作过程产生了深远的影响:程序员常常认为系统的第一个版本可以相当不完美,反正以后还有时间改进。相反,作家知道每一部小说都只有一次机会,以至于写作在很大程度上就是重写。重写句子、重写整章、重写听起来虚假的对话,有时要重写两遍、三遍,甚至十遍。

在这一点上,我认为编程可以向写作学习:当为一个新系统编写最初的核心时,当最初的创造者还独自一人、与世隔绝、可以为所欲为时,她应该假定这个最初的核心就是自己唯一的机会。在系统的创生阶段,她应该一遍又一遍地重写这个原始的内核,以找到尽可能好的设计。我的假设是,这一初始设计将极大地影响之后的一切:在一个良好的初始结构上有机地生长,即使在远离最初创造的数年之后,即使最初的核心只是未来系统庞大体量中微小的一部分,最终也会形成一个更好的系统。

如果你感兴趣,这里顺便更新一下我的科幻小说的进展。经过多轮自我审校后,我已将书稿交给了我的编辑 Giulio Mozzi。他会在几周内把修改建议发给我。我将根据他的意见开始新一轮的修订,希望能在一两个月内完成定稿。届时,我就可以发布意大利语版本了。与此同时,定稿后的小说会送到我在美国的译者手中,待她完成翻译后,英文版也将出版。这是一段漫长的旅程,但我深深享受其中。

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

评论