跟着小说,去写代码

作者: spiritTalk | 来源:发表于2015-12-13 15:40 被阅读219次
最近帝都雾霾深森,只能意淫下野外自由、清新的空气。

我在上一篇文章“当我们烦恼的时候,我们在烦什么”里交代过《解忧杂货店》这本书中的5个咨询故事,如果单单看这些可能会有一种解忧集的感觉,像是我们做过的模拟专题,把一些相似的题型放在一起用来发散和巩固知识点,如果只是这样,那就不能称之为小说,更谈不上好评了。

《解忧杂货店》吸引我情不自禁读下去的关键,大概就是作者为故事营造出的丰满血肉(通过书信来咨询烦恼,使我情不自禁地站在了被咨询者的角度去思考烦恼,并期待着下一封来信),以及巧妙组织情节的发展和它们之间的联系(即便是不可思议的时空转换,也成为了情节上的亮点,给咨询双方带来更深的冲突,凸显出故事中隐含的小哲理和小喜剧)。

哈,如此的似曾相识(就知道今天不是来看书评的~)。是的,我每天的工作,大抵就是在组织一堆代码。像是组织小说文字这样吗?是的,但是没有你想的那么深奥和好玩,小说你可以天马行空地去构思,至于读者是否买账,那倒要看作者的功力了。程序则不然,你得能够让它被计算机编译,确保它在机器上运行良好。同样一个功能,100位程序员会有100种实现方法,而且还都能正确运行,那么简洁的实现方法便自然胜出。如果再增加硬件限制(如机器的性能配置)这一条件,那么高效的(所用资源最少)实现方法就很重要。如果再增加竞争对手这一条件,意味着你的程序就要支持快速迭代,以赶超(或甩开)对方的开发速度,那么健壮且可扩展的方法无疑便是第一选择。以上几点大概就是程序员需要天马行空的地方。

《Clean Code》的作者Robert把编程比作写书,他说:大师级程序员把系统当故事来讲,而不是当做程序来写。Paul Graham在《黑客与画家》一书中把编程比作画画,他这样形容黑客:对于他们来说,计算机只是一种表达的媒介,就像建筑师手里的混凝土,或者画家手里的颜料。我在《解忧杂货店》这本书里像是看到了作者构建时留下的痕迹,犹如我在组织代码一样。

全书五个章节对应5个咨询,作者把这5个故事独立开来阐述,并通过巧妙的安排进行联系,可谓布局精巧、结构嵌套。如果是程序,我也会把某一些功能独立地划分、实现,在相互调用或通知的地方规定好接口,这样做有几个好处:

1、各模块、功能是相互独立的,团队成员可以同时开工干活。也就是说作者可以同时(或者多人)对故事进行构思,在写A时,突然涌现出B的想法,也不会耽误A的实现。

2、各个模块并不过多依赖,他们负责自己部分的实现,将来无论是修改或替换,也只是把战火控制在他自己的范围内,并不影响其他部分。这也就意味着,书中5个咨询故事可以任意修改、甚至替换(当然连接部分是要保留的)。

啰嗦了那么多,其实就是方便修改和扩展,经济实惠,不用把时间都浪费在业务实现上,不至于每天忙碌成各种狗,这样便可以悠闲地喝杯咖啡,构思一下上层建筑,或者思考一下人生嘛。

另外,读了东野圭吾的长篇小说《白夜行》后,发现这哥们架构故事的功力很深,他擅长用不同人物的视角来交待故事的发展,而且经常引入新的角色来帮助读者找到蛛丝马迹,来交待疑点,从而一点点验证脑海中答案。这种感觉就像是在查看别人的程序,根据案发现场的蛛丝马迹去Find Useage,然后又跳转到下一个疑似区域,Find in Path、排查、猜测、锁定…最后找到答案,然后思考作者的良苦动机。如果这哥们来写程序,想必应该是专家级的,忍不住去网上查了下,发现他毕业于电气工学专业,曾在日本电装担任生产技术工程师。我说嘛…

同样是创作与表达,那我们为何不试着借鉴写小说的思路去看看怎么写代码呢?

如果去写小说,你会试着揣摩读者的心理,斟词酌句地去营造故事的情节和意境,生怕说的太通俗显得没内涵,又怕读者骂你啰嗦充字凑纸张。而在程序里,你只需做到言简意赅、清晰明了,不至于在数个月后看到自己曾经的代码而咬文嚼字地紧缩眉头。Paul Graham在他的书中说过:代码是写给人看的,顺便能在机器上运行。代码的确是写给未来的自己和别人看的,机器只是按照既定规则有条不紊地执行罢了。

在写小说时,你会发现小说中重复的句子、段落或情节是多么的可笑,你不能容忍读者觉得你词穷意尽这件事。可是在程序里,你却经常干类似的事(相同的代码或逻辑在多个地方出没)却也能心安理得。

小说中的隐喻太深,读起来就会感觉吃力,太注重技巧的话,可能又使读者感到空洞飘渺。沿着这个角度去思考,你也许会发现自己在程序里太注重抽象,或者一味地使用模式。过度的抽象和套用设计模式反而使逻辑复杂化,也可能导致过早地给程序和自己的思想围上篱笆,并装饰了美丽的小花,待到需求排山倒海压来,你是忍心拆了已经看得见的小情调?还是牵强地又在四周砌上围墙?我想东野圭吾也应该是根据故事的需要和发展一步步调整结构和布局,最终演化为如此精妙的全篇。

小说中离谱的情节可能会给故事带来破坏,而且经不起读者的质疑。其实,倒不如说是作者已经失去对故事的把控,只好拿各种奇遇、各种绝世秘籍、各种神秘高人来救场。回想一下,你是否也正在拿着各种凑巧的逻辑来驾驭你的程序,当更高的魔咒降临,只好再去搬下一个秘密武器。靠巧合去编程,就如同刚出道的弟子在掌门面前大耍招式,破绽百出却不自知。

其实,以上都是废话,因为小说发表之后便能接受读者的检验和反馈,至于软件用户不会知道你的代码实现。所以用不着纠结,因为过不了几天你就会把刚才看到的全忘掉。


本篇为原创文章,转载请标明出处。

相关文章

  • 跟着小说,去写代码

    我在上一篇文章“当我们烦恼的时候,我们在烦什么”里交代过《解忧杂货店》这本书中的5个咨询故事,如果单单看这些可能会...

  • 跟着《30天写小说》去写小说

    最近新入一本书《30天写小说》,特别兴奋。两天就把前半部分读完了,恨不得马上开始小说创作。书中说要选用完整一个...

  • 跟着名著去写故事小说

    一、每个优质作者都要当高明的画师 作品一定要有代入感。创作者就是高明的画师,笼万物于形内,挫风情于笔端。传神细腻,...

  • 让我们跟着他们去写小说和诗歌

    一一读无戒的一篇小说和邛海幽蓝以及顾宸星的诗有感 亲爱的简友们,我是稻香,稻谷的稻,芳香的香,今天我们又有...

  • 拼命折腾的人生,不知道自己还能蹦跶到多远

    我要写小说我要写小说我要写小说。 虽然知道这样很作,但是,暂且作着吧。 跟着《30天写小说》这本书来,写之前要有个...

  • 如何去写小说

    很多友友总是在问如何去写小说? 写小说其实也不难,写一篇普通一些的短篇或者中篇小说,只要把小说的大纲列好,先整理出...

  • 跟着《小说课》学写故事

    最近读的一本书,来自许荣哲的《小说课》,浅显易读,跟你推荐下。做了读书笔记也录了音频,不想看文字的可以直接点击以下...

  • 开头好写,后面难

    很久之前就想写网络小说。 看了很多的网络小说,想跟着别人学学经验。 在看别人的小说的时候,感到写这样的小说很简单,...

  • 西班牙旅居日记 |2021-09-27 DAY 162

    今天突然忙了起来,报了无戒学堂的小说课,又跟着日课写日更。 我还是放不下写小说的梦想,这次决定跟着节奏好好写一篇小...

  • 跟着电视剧学写小说

    最近这段时间写小说,感觉头脑已经枯竭了。 实在是挤不出来东西了,今天看了热播剧电视剧《雪中悍刀行》,感觉学到好多。...

网友评论

    本文标题:跟着小说,去写代码

    本文链接:https://www.haomeiwen.com/subject/syxuhttx.html