写程序就像作家写小说一样,程序就类似一个剧本。如此一来,程序员和作家其实是同行,而且,他们都是坐在电脑跟前不停地敲打着键盘,两人在一起没准能用键盘奏一曲呢~
为什么这么说呢?小说是从构思到实现,程序从编程到运行,二者都是在运行你的思想,只是他们的表达出来的形式不太一样。作家在下笔之前若没有想法,就会出现很错乱的故事剧情,毫无逻辑可言。写程序也一样,先酝酿好想法,才好写下来告诉二逼电脑该干嘛。不过程序语言不是每个人都读得懂,毕竟对大多数人这是外语。但看不懂火星文,不代表没有好的火星文作品。
大家都会记得第一次写出来的作文,是多么混乱和随意,因此你想写出好作文必须对写完的文字进行调整、润色,这在编程中称为重构。
并且,作家和程序员,等级也有着明显的差异。
作家可以创作,程序员也可以。但这跟实力和理想有关。写程序如写文章,写出来的好坏,得看哪位程序员的功力。
给大家举个例子,我看完《指环王》这本书之后,不由得感叹《指环王》真是一部神作。就像程序员写代码一样~
《指环王》最初只是《霍比特人》的续集。托尔金的出版商想通过续集从大获成功的《霍比特人》大赚一把。但《精灵宝钻》并不是成功的续集。于是,托尔金开始打算为《霍比特人》创作一个续集。第一本书的书名是《黑影重临》,而不是《指环王》。这部小说仍然是写给孩子看的。弗罗多被称为宾果,斯特尔德是个名叫特罗特的霍比特人,比尔博打算结婚,魔戒仍然只是一枚戒指。这个故事没有明确的动机或方向。托尔金曾问道:“霍比特人还能做什么?”接着,霍比特人的想法涌现了出来。
托尔金写了一份又一份草稿,寻找引领故事的方向。托尔金写到《黑骑士》的场景时,一切都变了。一开始,黑骑士实际上是白骑士。甘道夫来找宾果谈话。随后故事开始展开。随后,突然之间,马的颜色从白色变成了黑色,甘道夫变成了披着黑色斗篷、头戴兜帽的人,这就类似于编程中的一个新的框架。
我们怎么知道,这是一个新的框架呢?幸好,通过克里斯托弗·托尔金,我们了解了他父亲对《指环王》所作的改变。科里·奥尔森博士(注:托尔金小说的权威研究者)向我们介绍了实际上是《指环王》的git日志。
想象一下,这好比是从真正的托尔金研究专家、天才分析师那里读到Papers We Love论文,这很神奇。
我们看到一个又一个想法在文本中涌现。这是持续不断的重构和新开发过程。一些想法从头贯穿到最后。许多想法被摈弃,许多想法发生了演变。许多对话被保留下来,但被赋予了不同人物,以便在不同的情形下说出来。
这个创作过程的整体感觉就像是在开发软件,只是结果不是一款切实可行的应用软件,而是有史以来最具影响力的故事之一。
对我来说,这个教训印证了这句老话:任何成功的大型系统都是从成功的小型系统开始的。这同样适用于作家和程序员。在创作过程中,你很容易对自己没信心,因而感到沮丧。无论故事还是程序,不一定一开始都很出色;只有不断进化,才会获得出色的结果。
因此,我要告诉各位,我们不是码农,我们是艺术家~