闻技者


春眠不觉晓,处处闻啼鸟
夜来风雨声,花落知多少


Unix编程艺术
代码大全
写小说和编程的共通之处

写小说和编程,都要将字符拼凑到一起。
小说里,有人物和情节;代码里,有数据和算法。
下面看看大佬的经验之谈,会发现相似的地方。

1、什么更重要?
人物 or 情节 ?

创造人物是小说家的第一项任务。把一件复杂热闹的事写得很清楚,而没有创造出人来,那至多也不过是一篇优秀的报告,并不能成为小说。


人物的创造是件最上算的事

老舍. 我怎样写小说[M]. 文汇出版社, 2009.


数据 or 算法 ?

数据压倒一切。如果已经选择了正确的数据结构并且把一切都组织得井井有条,那么,正确高效的算法也就不言而喻。
编程的核心是数据结构,而不是算法。Raymond E S. UNIX 编程艺术[J]. 2006.


村上在《海边的卡夫卡》的序中也说:


这部作品于二零零一年春动笔,二零零二年秋在日本刊行。《海边的卡夫卡》这部长篇小说的基本构思浮现出来的时候,我脑袋里的念头最先是写一个以十五岁少年为主人公的故事。至于故事如何发展则完全心中无数(我总是在不预想故事发展的情况下动笔写小说),总之就是要把一个少年设定为主人公。这是之于我这部小说的最根本性的主题。


总而言之,人物>情节;数据>算法。




2、原因
什么造成了上述的差异呢?

我说,应当先写简单的故事,好多注意到人物的创造。

试看,世界上要属英国狄更司的小说的穿插最复杂了吧,可是有谁读过之后能记得那些勾心斗角的故事呢?

狄更司到今天还有很多的读者,还被推崇为伟大的作家,难道是因为他的故事复杂吗?不!他创造出许多的人哪!

老舍. 我怎样写小说[M]. 文汇出版社, 2009.


表示原则:把知识叠入数据以求逻辑质朴而健壮。

即使最简单的程序逻辑让人类来验证也很困难,但是就算是很复杂的数据,对人类来说,还是相对容易地就能够推导和建模的。

数据比编程逻辑更容易驾驭。在复杂数据和复杂代码中选择,宁可选择前者。在设计中,你应该主动的将代码的复杂度转移到数据中去。

Raymond E S. UNIX 编程艺术[J]. 2006.


原因似乎挺简单:人的脑袋更擅长记忆人物而非情节,更擅长理解数据而非逻辑。