写文章与写程序

在网上看到有个讨论程序员是否应该写作,这里的写作主要是在说写技术博客。我个人是支持写技术博客的,不过有个前提,在能把程序写好前不要过多的写技术博客。为什么这么说呢,写程序是程序员的本职工作,而写技术博客是对自身知识掌握的总结梳理,并向特定的人群提供一些有价值的参考信息。所以只有先写好了程序,才可能写的好技术文章。

程序是用计算机语言来表达的,技术文章是用自然语言来表达的。计算机语言的逻辑性和精确表达能力要比自然语言强的多,自然语言是模糊的、混沌的、不精确的,因此写的一手好程序的人不一定能写的一手好文章,因为他们需要驾驭的语言特性完全不同。

刚学写程序时是磕磕碰碰的,好不容易才能搞得编译通过,这就和多数程序员写文章一样,使用自然语言遣词造句虽然从小就学起,写起来也是磕磕碰碰的。能一气呵成写出无编译错误的一段程序时,这样的水平大概就和职业写作者一气呵成写出一篇文章大致相当。一气呵成写完一篇文章,职业写作者要从头读一遍,对遣词造句加以润色,分段过长段落便于阅读等等。而程序员也要对一段程序进行调试运行,有时还会优化重构,重命名变量就像遣词造句润色,分拆过长的程序类似分段过长段落。一个稍微正常点水平得程序员很难写出一段什么也不干的程序,但写文章就不同了,经常有人写出什么也没说或者没说清的文章。这就是程序语言精确性的优势,一段程序总要解决个问题,自然语言的模糊性经常导致写作者写一篇文章很可能什么也没说,完全跑偏了。这也是为什么很多程序员感觉驾驭自然语言更难的原因。

为了避免一篇文章写出来让读者感觉什么都没说的窘境,一个简单的办法是保持言之有物,表达思想。思想不一定要主流或正,但关键要有,所谓形散而神不散,是之谓也。这就是所谓文章的神,神为内,形为外。神是内功,是思想,是故事布局,对应写程序无非架构与设计,而外功是形式、包括文风、用词、句式等等,对应程序的实现。写过程序都知道同样的架构设计,选择不同的语言、框架、算法和数据结构来实现,实现的技巧可谓千差万别。外功如招,程序的中的基本招式无非基础算法、数据结构、系统基础、语言语法与技巧等,最终的差别体现在招式的运用上。写文章也类似,思想可能一点就透,招式则非一日之功非苦读苦练不可。

同样主题的文章,不同人写来明显有高下之分,可见功力之深浅。网络小说兴起后看过一些,主角人物多男神,帅则温润如玉、玉树临风;正则气宇轩航、丰神俊朗。一般太正呢,女生还不太喜欢都要加点邪气,如狂浪不羁等描述。再看下金庸是怎么描述黄老邪的:

这本来面目一露,但见他形相清癯,风姿隽爽,萧疏轩举,湛然若神

这四组四字描述说的直白点大概就是:他身形清瘦、风姿绰约,洒脱轩昂、目光有神却又透出一股子高处不胜寒的空虚寂寞冷。这是不是就是你心中一个活脱脱得黄老邪形象了,金庸用词简练而韵味深长、境界高下立判。就这么简单一句描述一般人读来都未必顺口,何论随手用出了,这正是招式运用得的精妙之处了。

最后,本文作者写程序十余年,写文章的感觉还在努力解决编译错误一气未能呵成阶段,路漫漫兮,共勉。


下面是我自己开的一个微信公众号 [瞬息之间],除了写技术的文章、还有产品的、行业和人生的思考,希望能和更多走在这条路上同行者交流,有兴趣可关注一下,谢谢。

<script type="text/javascript"> $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('\n').length; var $numbering = $('<ul/>').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('<li/>').text(i)); }; $numbering.fadeIn(1700); }); }); </script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值