不是单纯孤立地去学习数据结构、设计模式、线程技术,或者其它任何编程技术,—— 必定有一条中心主线贯穿其中、统筹全局,这条中心主线就是:表达思想。
程序员到底在做什么呢?写程序?那只是表面形式而已。程序员所做的事情,与作家一样,与现实中无时不刻所做的事情一样,不过就是在表达思想。只是,现实中或者作家使用自然语言,而程序员则受限于计算机能够听懂的语言。
程序员必须熟悉所使用的语言要素。“树木”,标识现实世界中的一类植物;int i,则标识内存中的4字节空间。作家要熟练自如地使用自然语言来表达思想,职业程序员则要熟练自如地使用计算机语言来表达思想;而其前提是,熟悉语言要素所代表的含义,就像现实生活中说话时要明白所说的话代表的含义一样。
作家要写出好的作品,就必须借助各种技法和修饰;程序员要自如表达思想,构建好的软件,也必须借助各种技法和手段。组织、存储和处理大量数据的技法和手段称之为“数据结构”,对于经常出现的特定问题所生成的解决方案及思维模式称之为“设计模式”,并行不悖地执行多个任务的技术和方法,称之为“并发技术”,……,于是,所有的一切,完美地统一于“更好地表达思想”这一主题中。
作家要写出好的作品,还要拥有丰富深刻的思想。同样,程序员首先应当拥有丰富的思想。不是简单的编程,绝对不是!程序员首先是一个完整的富有思想和创意的社会成员,其次,才是“程序员”。程序员并不能代表一个人的完整内涵,只是一个人生命的一个重要组成部分而已。
既然程序员所做的事情就是在表达思想,那么,凡是有助于表达思想的技法和手段,都是有益的。大声朗读,冥思凝神,写作,甚至交际聊天,等等,虽然看上去与编程毫不相关,却也是有助于表达和整理思想的,因此,也是在“编程”,姑且可称之为“隐编程”。
聪明的程序员应当学会充分运用“隐编程”的方法,而不是埋头于敲打键盘中。任何时候,走路,吃饭,运动,或者观赏景色,阅读新闻,充分利用这些时间来整理思想,表达思想,这样,便无时不刻在“编程”了。