某某茶叶有限公司欢迎您!
金沙棋牌在线 > 操作系统 > 编程与写作

编程与写作

时间:2019-12-29 06:39

我想这是一个不错的比喻,更重要的是,这是一个非常有意义的比喻。

       这个思路值得我们在写作中借鉴,《三十天写小说》这本书就是这种思想的体现。在初学者完全没有写作基础的情况,他不是要求学员按部就班先学写作技巧,研读小说模仿别人的作品,而是以三十天为一个循环周期,通过完成5万字为目标,通过完成写作同时,锻炼各种技能,有些以赛代练的味道。创作小说是件非常复杂的事情,需要用到的知识和技能牵非常多,初学者很难一下子做到面面俱到。按照传统的做法,需要一个很漫长的学习过程,才能完成一部作品。在这个过程中,由于始终没有自己的作品,很多学员可能耗掉了兴趣,而选择放弃。学习理论与写作脱离,小说的背景、人物、情节、结构各个方面都会让初学者头疼。由于总是达不到心中的期待,追求完美的心态,导致初学者总是徘徊在小说创作门外,苦于学习各种技术,做各种准备,却始终不能写出一部小说来。这样做如同在岸上学游泳。游泳的特点是身体记忆,动作协调,不完全是通过理论就能够学会的,必须亲自到水中实践一下,通过做这件事本身,体会其中所需的知识,技能,再回过头来学习理论,有针对性练习才能够更快的学会。写作恐怕也是这样,它是灵感与技术相融合的东西,不完全是靠钻研理论就能学会的,必须在实践中,通过不断的写来提高技能。给自己设定的期限(三十天)、目标(五万字),都是可测量的,非常有利于去监督与执行。跟自己限定期限,有利于强迫我们集中精力,把所有的力气用于做完成目标上,避免拖延。也强迫我们放弃追求完美的心态,转而务实。很多人写小说前,认为要把整个故事想完整,可是想来想去陷进去,苦苦没有好结果。书中的做法是把故事想个四分之三,或者更少就开始写。在写的过程中,让人物带着情节走,激发作者的创作灵感,在写的过程中完成情节的设计。如果写着写着受制于期限限制,没办法想出更好的情节,那就退而求其次,写个一般的情节也可以,总之先要完成字数的目标再说。以后(比如第二个循环)可以回来修改。再比如搜集小说背景资料的时候,如果找寻时间超过15分钟,就停止搜寻,而是标记下来,待到以后再做。这种所有事都围绕一个目标的做事思路,很容易调动我们的潜能,做出我们意想不到的结果来。有兴趣大家可以翻阅下这本书。

图片 1

由此可见,在编程这件事情上,和写作是非常相似的,甚至是息息相关的。而编程除了需要具备写作应具备的基本特质外,还需要掌握许多其他的关联性知识,要真正做好,某种程度上难度是要远大于写作的。

而且反过来说也不错。我并不想展开来讨论说作家应该像程序开发者那样思考,但我相信任何作者,如果采用程序员们使用的那些非常好的方法,他们的散文一定会有极大的提高。

       在编程方法论上有个有趣的现象可以对应写作谈一谈。最早的编程方法,强调写代码前的静态分析,相当于动笔写作前要进行周密的构思,画各种设计图,类之间的关系、模块间的接口都要考虑全面才能开始写代码。后来随着程序越来越庞大,问题域的复杂性远远超过了原有开发经验范畴。这个时候事前想太多,反而制约了开发的进程,要想的事情太多,往往会导致过度设计,程序臃肿不堪,甚至待到真正实现的时候,会出现与当初的设计完全不一样的情况,项目管理遇到前所未有的挑战。后来牛人们提出了极限编程的思想,尤其是针对轻量级开发项目,不再过度强调开始把问题想周全,而是一边开发一边通过相关技术,利用代码的演变(实际上就是写作中的修改)将设计揉入写代码中,达到边开发边设计的目的。而且使用迭代的思想,把大的实现目标,化整为零转换为一个个分目标,通过小步快跑,不断完成分目标向前推进。从而做出健壮的程序来。

文 | 一鸣

读大学的时候我选的专业是计算机,大一下学期开始学习编程。我记得有一次,一项编程作业出了一点问题,我对其反复调试以找出错误,一直忙到凌晨四点才把问题全部解决。当时我心里兴奋难言,跟通宵写完了一部中篇小说一样痛快。那时候我就发现自己对编程感兴趣,毕业之后也找了一份程序员工作。

公司里的程序员分了两个方向,一个开发方向,一个维护方向。顾名思义,开发小组负责研发新产品,维护小组是在旧产品的基础上进行一些小改动或者修复小毛病。大部分时间里我都呆在开发组,我认为开发比维护更有意思。工作几年来,我发现自己的兴趣点在于创造,编程和写作都能给我满足感。尽管我喜欢编程这份工作,但也知道它并不是我此生最大的兴趣所在,后来我选择了更加纯粹的创造性工作,当一个小说写作者。

几年程序员工作的一些感悟和习惯可以很好地应用到写作领域。软件开发中有一个术语叫“迭代式开发”,简单理解就是先做出一个功能简单但是可以运行的系统,然后在这个可运行的系统上进行逐步扩充。有一个时期我负责一个大模块的开发,那也是我第一次接到大任务。那时我还不会采用迭代式开发,而是习惯性采用“瀑布式开发”,先把所有的细节和功能设计好,然后再开始编程实现功能。

一开始光是数据表就设计了几十个,各种设计文档写了一堆。随着设计工作一路下来,我发现那个模块组件的复杂性超出我的想象,里面复杂多变的程序逻辑也让我头大如斗。这种情况就好比工头要我建一所房子,而我却建成了迷宫,还把设计图弄丢了,自己困在里面无法脱身。主管见我被这个任务折腾得心力交瘁,没有让我跟进后面的编码工作。这是我工作几年来最大的一次失败,我一度感到羞愧郁闷。但这次失败的经历让我明白到,面对大规模任务“瀑布式开发”并不适合自己。

之后我又接了一个任务,也是一个重要的系统功能开发。这一次我就没有再用“瀑布式开发”,而尝试使用“迭代式开发”。我先提取出关键功能,并早早把它实现出来,这是一个能运行的系统。接下来,我再对总体功能进行拆分,把功能要点罗列出来,每一次只实现一个功能。在这样不断扩充之下,复杂的系统逐渐成型,实现过程也比我之前想象的要容易一些。

跟之前“建迷宫”的感觉很不一样,这一次开发的条理性清晰了很多,系统开发的进度,当前的功能状况我都能心中有数。当然,原来的一些设计跟后面的功能相冲突,也需要及时修正而付出一些时间精力。事实上,也难保“瀑布式开发”的实现过程中不会出现矛盾,而且各种设计已经确定下来,引发出连锁效应式的修改成本可能更大。最重要的是,这个过程来得舒服,还有几分实验成功的乐趣。能在工作中感受到快乐,这是一件很难得的事情。

后来我开始写长篇小说,我也不知不觉地沿用了迭代式开发的方式。在写一部小说之前,我会先设计好作品的完整性。我把作品中的一些大事件想出来,然后进行估算,如果这一部作品包含了这些事件,它的起承转合是不是完整了,以这些事件作为作品的主要剧情是不是足够好看。这些事件列表也可以理解为简单的大纲。定好大纲之后,我针对每个大事件进行写作,类似于迭代式开发中的功能扩充。创作每个大事件的过程,也是这个模式的嵌套实现:先定好事件,起承转合都安排好之后再创作正文。我之前写过一些关于大纲设计的文章,谈到大纲的一个作用就是保持作品的完整性。大纲的价值在于,在最坏的情况之下,小说的情节也能写到这个水平。

一开始我并不能把小说的各个细节完全想好,我只是先把关键事件记录下来。每一个大事件作为一次创作的完整过程:包括情节构思,写正文,修改分章。跟编程类比,相当于一个功能的开发过程,先设计再实现后测试。我发现这样的写作方式更容易保持我的创作热情,我的作品有一个逐渐成型的过程,它的进度能被我清楚感知。

作为写作新人,我也经历过全凭灵感创作的阶段。有一年我花了十个月的时间写一部武侠小说,起初想写六万字左右的篇幅。写下来收不住,结果写了差不多十八万字。而且这个写作过程常常感到痛苦,不知道接下来要怎样写,脑子里一团混乱。我隐约知道故事发展的方向,但细节毫无头绪。到了后来,我回想起这个写作过程,感觉它跟之前那次失败的编程经历差不多。总体感觉是混乱,更难受的是长期看不到尽头,不知道哪一天才能将它完成。这种挫败感一度让我创作停滞,造成恶性循环。我不知道自己会不会摸索出更好的创作方式,而目前迭代式的创作模式是最适合我的。

曾经有朋友问我,为什么从程序员转变成小说写作者,感觉这个两个职业完全没有相通的地方。这篇文章正好回答这个问题,两者确实有相通点:第一点,它们都是创造性的工作;第二点,工作过程相似,迭代模型可以适用于编程和写作。

它们之间确实也有不同的地方,我感觉最明显的一点就是对灵感的需求。编程工作在设计阶段需要的灵感比较多,实现过程所需的灵感不多。甚至,编程有很多成熟的设计模式,可以直接采用相应的设计解决对应的问题,免去自己动脑设计。编程的实现过程基本上是体力活,哪怕脑子有点累了,但还是知道工作应该怎样做下去,依然可以码字如飞。写作则不然,不管在设计阶段还是实现阶段,无时无刻都需要灵感。写作者大概都有过这样的经历,明明脑袋很清醒,但是没有灵感,想写也写不下去。

在我看来,写作跟编程最大的区别在于对待“复用”的态度。编程鼓励复用,以提高工作效率,把现成的功能和代码稍稍改一下就可以直接使用。编程者可以自己开发完整的组件,同一个组件可以用到多个项目之中。而写作则不鼓励“复用”。精巧的比喻只能出现一次,如果多次出现就会被读者批评,甚至作者惯用的高频用词被读者发现了,他们也会觉得别扭。写作者不要有“口头禅”,发现了要及时修改。有趣的情节设计也只能出现一次,用多了读者同样会反感。如果某些桥段跟另一部作品类似,更有可能被指责抄袭,这可是写作界非常严重的罪名。说到这里,可能有朋友会以网文的套路模式向我反驳。熟悉我的朋友都知道我对这种现象的态度,在此也不多作讨论了。


更多写作经验分享请点击:【写作那些事】目录
关于转载问题:请联系我的经纪人 南方有路
青春小说《晴时有风》已经上市,请大家多多支持~

回到 “选择” 的事情上。本质上来看,你追着热点走,但热点往往不会等你,而如果热点主动靠近你,你想不抓住机会也难。换句话说就是,当你能持续地在做某件事情的时候,这件事情本身刚好契合了某个正在发生的热点,那可能就是你的一个机会了。

编写软件被人们类比成各种各样的事情,从数学计算,到科学,到工程,到手工艺。Bruce的观点是,跟编写软件最相似的应该是写作

从一定程度上来讲,善于写作的人,在学编程的时候其实是占了便宜的;而善于编程的人,即使文章写得没那么圆润,但逻辑也会是比较清晰的。这里提到的 “善于” 指的是一个比较客观的评价,不是自我评价。

“我终于给软件开发找到了一个好的类比,” Bruce 写到。“可是,我的读者们可能对这个类比不会满意。”

在编程上有一个很经典的比喻:代码如诗。我觉得特别形象,深刻地阐述了编程应力求达到的境界,而要这个正是通过对代码不断提炼的结果。

本文转载自: 外刊IT评论

  • 可以锻炼自己的表达能力;
  • 可以让自己的思维更清晰;
  • 有助于帮助自己回顾和反省;
  • 积累和沉淀更容易可见。

图片 2
埃里克·雷蒙德,全名“埃里克·S·雷蒙德”(Eric Steven Raymond)。1957年12月4日出生于美国波士顿,常用名称ERS,著名的计算机程序员,开发源代码软件运动的旗手。

糟糕的代码是如何产生的呢: