2004年12月的《程序员》杂志发表了我一篇名为《我的2004,我的林阴小路》的文章。那本是一份个人意义上的年度总结。所以,我在写作时选择的是非常“个性化”的视角,表达上也含蓄了一些,整篇文章看上去并不像随处可见的“网文”那样通俗易懂。应几位读者的要求,我在这里对文章里较重要的几个地方做些疏解和辨正。
★ “我的2004是一条没有尽头的林阴小路”
文章的标题和立意都来自海德格尔的《林中路》。在海德格尔的作品里,我对《林中路》最熟,因为那是海德格尔最没有大师架子的作品之一。“林乃树林的古名。林中有路。这些路多半突然断绝在杳无人迹处。……每人各奔前程,但却在同一林中。常常看来仿佛彼此相类。然而只是看来仿佛如此而已。”——不是吗?我们这些IT人不就是在同一林中各奔前程的芸芸众生吗?
★ “当时的我早已像古人预言的那样,进入‘目盲’、‘耳聋’、‘口爽’和‘心发狂’的状态了”
这里的“目盲”、“耳聋”等说法来自《老子》第12章。引用陈鼓应先生的白话译文就是:“缤纷的色彩使人眼花缭乱;纷杂的音调使人听觉不敏;饮食餍饫会使人舌不知味;纵情狩猎使人心放荡;稀有货品使人行为不轨……”这其实就是今天这个充斥着信息爆炸和欲望膨胀的世界里人心浮动的真实写照。拿程序员来说,当你看到C++语言每隔5年就“面目全非”一次的时候,当你看到Java平台每隔6个月就“推陈出新”一回的时候,当你看到开发和测试工具每隔3个月就“更新换代”一轮的时候,你真的认为这就是软件开发的全部吗?不,我想你不会的,一个聪明的程序员总能在“心发狂”之余找到以不变应万变的法门,并由此回归真正的自我。
★ “科学上的真理通常有着单一和纯粹的特点,而软件开发之类的工程技术却更多地追求有限资源下最为恰当和稳妥的解决方案”
我的意思并不是说软件开发或类似的工程技术就不用追求真理,就不需要剔除谬误。只不过,在“真”的范畴之内,我们仍会面临许多两难的选择——因为在工程技术领域,绝对的“完美”并不存在,连“真理”本身也只能在约束和局限中存活。是否善于在复杂情况下做出最合理的判断,这才是衡量程序员水平高低的根本标志。
★ “一边熟悉历史和历法,一边用C++语言编写律历换算工具”
这句话当然是指我在网上发布的一个免费律历工具而言。但说实在的,在国内目前的IT环境里,绝大多数程序员都在从事行业应用软件的开发工作。对他们来说,同时学习行业知识和编程技能就显得尤为重要。比如说,在从事银行软件开发的公司里,我见过的几位薪水最高的程序员都是既精通平台、语言和工具,又能随时顶替某个银行职员办上几小时日常业务的双料专家。
★ “‘差异化’的学习方法只是我一时心血来潮的产物,我自己最终也没有从这种学习中获得多少进益”
这当然是我的真心话。但需要强调的是,每个人的经验和资质都不尽相同,学习方法也是因人而异的。很多程序员一听到某个“权威人士”或某本“权威书籍”介绍了一种“最好的”学习方法,就迫不及待地想亲自尝试,殊不知古往今来,跌到在“盲从”和“迷信”上的人又何止千万!有的人在学习时选择深入,有的人选择广博;有的人善于强记,有的人长于演绎;有的人可以无师自通,有的人就必须循序渐进……学习本就是妙趣横生的过程,为什么一定要让如此美妙的个人经历变成平淡无奇的世俗体验呢?
★ “那些憎恨并排斥差异的自大狂们”
我并不喜欢指名道姓,但现在这种“自大狂”还真有不少,尤其是在因特网上。我们不是经常看见,某些人因为喜欢某种技术、某种文化,就大肆抨击其他所有的技术和所有的文化吗?那些借LaTeX抨击Word,借Linux抨击Windows,借专有软件抨击开源软件,借Java抨击C++或借面向对象抨击结构化设计的人,抑或持相反观点、与他们针锋相对的人不都经常能在网上制造出万众瞩目的“噱头”来吗?他们是在为“真理”而辩争吗?不,他们只不过想靠贬低他人来提高自己或达到自己的商业目的罢了。对一个程序员来说,你当然有权利喜欢某种理论或技术,但你没有权利因此而封杀他人的选择权。世界本就丰富多彩,这已经是我们最大的幸福了。一些行使了选择权的自由人却非要让别人听从自己的号令,非要让这个世界回到充满了口诛笔伐和人身攻击的专制社会,这不是身在福中不知福吗?
★ “没准儿,他还会搬出自己发明的différance一词给我好好上一堂哲学大课呢!”
différance(中文一般译作“延异”)是雅克·德里达对解构主义哲学和叙事学的重要贡献之一。我不懂哲学,也不懂德里达,不敢乱发言。还是引用牛津文学术语词典里的一段英文解释吧(据说,把感兴趣的文句摘录在blog里也是一种不错的学习方法):
différance, a term coined by the philosopher Jacques Derrida to combine two senses of the French verb différer (to differ, and to defer or postpone) in a noun which is spelt differently from différence but pronounced in the same way. The point of this neologism is to indicate simultaneously two senses in which language denies us the full presence of any meaning: first, that no linguistic element (according to Saussure's theory of the sign) has a positive meaning, only an effect of meaning arising from its differences from other elements; second, that presence or fullness of meaning is always deferred from one sign to another in an endless sequence. Thus if you look up a word in a dictionary, all it can give you is other words to explain it; so - in theory, at least - you will then have to look these up, and so on without end. Différance, then, may be conceived as an underlying principle of non-identity which makes signification possible only by 'spacing out' both signifiers and concepts (signifieds) so that meaning appears merely as a 'trace' of other terms within or across any given term. Derrida has tried to avoid placing différance as a fixed concept, preferring to use it as an unstable term, although it is fundamental to his philosophy of deconstruction.