编程是写作的子集
我和编程与写作,经历了互相交织且十分专注投入的时光。大量的实践让人深有感触并体会到其中的一些奇妙关系。
写作是高中失恋开始的,那是一段非常艰难且需要独自面对的时光。最终我发现了写作的治愈效果,把内心的感受和情绪一字字写下来的过程。仿佛让人可以勇敢的面对真正的悲伤细节,搞清楚原本混沌说不清楚的难过,反而心情会逐渐的平静起来。在编程中也是,击败你的复杂,都是思路不清晰,逻辑混乱的原因。
后来就养成了写作的习惯。开始只是抒发心情,最喜欢写天气,温度,和一些琐碎事务的细节。大概持续了有2年的时间,中间能够慢慢感觉到对文字控制渐进的变化。大概就像文字和你的心绪能够产生一种互动,心思与想法用文字来表达,文字也会反作用于你的思考。就像河床引导河流,河流潜移默化改变河床。
在这个过程中,你的文字会越来越简洁有力,抽象程度高,具有可塑性的表达。这个过程编程也会出现。文字是信息的承载与传递者,就像代码一样。开始,都会表达起来很冗余繁杂,信息量还少。后来,经过封装抽象架构,表达会贯穿着优雅与深刻的压缩信息。但你的思想达到驾驭文字与代码的程度,就会展现出一种力量,文字的力量与代码的力量。
慢慢的除了对现实的描述。会无端的想到一些奇怪的逻辑组合,自己会觉得或搞笑或不可思议,常常惊讶了自己。写作无形中,培养了自己的洞察力,以及不断把想法写出来过程,强化了想法在大脑内创造的链路。这就增加了随机的关联性和意外的事物组合,这就是闪念和创造力。
在后来,生活中也会不断积累知识和经历,这些产生的观点和价值主张,会被写作重构并强化甚至升华。又过了2年,那些零碎的事物随机组合的想法,慢慢点线面连接起来,会形成一些片段的情节。就像某种配方,这些情节场景,都融入了我的思想,性格,价值观,以及幻想。
又过了2年,恰逢创业失败赋闲在家。碰巧的时间上,很多因素组合在一起。特别有写故事的冲动。那些片段不断扩大,彼此之间的联系增大,就像一个拼图逐渐清晰。写故事就顺理成章,接下来专心投入3个月写小说。每天从早上写到晚上,在写到早上又写到晚上。整天一行代码都不写,一方面是特别想进行文字创作,一方面想远离代码静静。这是一段美妙的经历,心悦开心,和现实世界完全脱离,完全在文字的空间里。最终写了大概有40w字左右,自己不是很满意,就把所有的素材,草稿思路,架构图全部尘封起来。因为我知道,不是放弃了,而是时机不够成熟,我还无法写出我想要的结果。因为我写小说的练习,算是闪念和内心冲动,平时的积累和练习远不及代码。但,我相信有一天我的故事一定会跃然于纸上,感染他人。
后来又恢复到大部分时间编程,间或的写作。但我的故事一直在背后发芽成长,因为我在慢慢丰富结构,细化层次与关键点剧情就像代码里的算法函数。如同代码架构一样,我是架构师只是放弃了实现,转而慢慢打磨结构。
编程从学习以来,就一直保持编程频率。用delphi写过客户端,c#写过aspnet,后来转战j2ee研究架构思考模块化,喜欢自己抽象通用中间层和工具库。接触了前端,对js充满热情所见所得的操作很有成就感。就业余时间写自己的js库,实现css选择器,动画库,封装浏览器差异层。在后来开发手游一直到现在,开始用公司私有的引擎,后来切换到商业引擎。实现过单机动作,RPG,射击,益智,跑酷,塔防游戏,网游有策略,卡牌,经营类的。最终,开始实现一个游戏引擎。
大量写作和编程的实践,让我感受到编程是写作的一个子集。因为我在编程积累的过程中,能体验到和写作的一样的乐趣和感受。两者的积累从量变到质变的过程以是一致的。文字和代码,都是一个媒介,和你的思想情绪互动纠缠,试图把闪烁的灵感固化到现实世界。当然,只有创造性的编程和写作才有快乐。如果是重复的流水账文字,和无脑的复制代码组合功能,毫无乐趣可言。
一个深深的体会是,文字和代码是有生命的,只有不断的练习积累和试图探索,就能和他们产生通信,交流沟通起来。它们承载信息的片段组合就像DNA一样,能够自我复制和进化,能够不断的发展。虽然,代码和文字是你写的。但它说凝固的信息是不断积累的,有可能你都忘记了那些记载数据,但是它们仍在那里,并且与其它的数据产生不可思议的关联和影响。这些数据,不是属于你的,而是透过你捕捉的环境信息,所以这些信息是有生命的。
就像这篇文章,开始写的时候,我的思路大概想要说的是想好的。但是过程中,文字的上下文会拉扯我的想法和思考,很多表达是写的过程才有的,这是典型的信息来自其它文字代码和环境信息。
文字,代码,都有上下文,并且至关重要,这是一种内在的关联性,并且会深远的影响未来,连接着过去。
编程和写作,都要探索事物背后的关系规律和逻辑。然后,编程是映射这种关系,写作是描述刻画这个关系。一个调理清晰,层次分明的逻辑,是优秀的文字和代码的必要条件。
编程的时候需要掌控所有的细节,这个很耗费脑力。写作的时候需要连接所有的细节,这个需要一些直觉和天赋。编程在给定数据范围内,操作处理这些信息,并要确保所有细节的正确性。写作并没有局限数据,数据的操作体现在描述表达上很容易正确,只是不容易优雅,而对数据内在联系的捕获上属于架构范畴。
有时候,用写作的关联性去思考代码探索关系,用编程细节处理的精确性去掌控文字,会有不一样的意想不到的结果。
代码和文字的追求都是结构的优雅,和细节的表达简洁不冗余。当反复修改,写出了满意的文字和代码时候的感觉是一样的。就是,这就是我要的,并且反复的阅读文字还是代码,内心都能体验到一种美的感受。
写作有比编程更多的身心体验,是一个超集。因为编程是在映射现实,解决现实问题,需求来自于现实。而写作既可以是映射现实的,也可以是超越现实的,可以是幻想奇幻的架空的超现实。
编程的时候,我总是想着我要的结果,然后填补所有的过程细节。而写作的时候,结果我自己有时候都不知道,可能最后推翻了最开始设定。也就是说,写作的过程有很多的随机性,而编程是确定性。而,共同的乐趣都是创作。这种创造不存在的排列组合,会得到大脑的化学奖励。我想这就是人类进步发展的源动力。
另外,写作需要一种情绪,脑海中凌乱的字词句,都是被情绪所捕捉,然后串联起来的。文字就像是情绪的产物或是映射,总是关联并带动着情绪,字里行间的感染力就来源于此。这意味着,当思路清晰逻辑感强烈的时候,是没有灵感写作的,因为此时缺少一种情绪。而内心充满情绪的时候,又很难进行流畅的编程,因为编程需要平静的内心去书写冰冷的逻辑。
情绪是波动的、随机的、跳动的,而逻辑是平稳的、确定的、紧密的。所以,编程与写作需要两种不同的状态。头脑清醒适合编程,而情绪强烈的时候,正是渲染故事氛围的良好时机。
阅读能保持心灵的纯净和自然 ,无论是阅读代码还是文字都是如此。写作能保持灵魂的清澈和自由,而编程是写作的子集。那么在未来,要么编程,要么被编程。。。
「心有所感,思绪万千」