设计模式的阴谋论
阴谋论者都试图对历史或者当代事件作出特别解释,将事件解释为个人或是团体秘密策划的结果。其实我一直认为,在计算机的学习中,多用阴谋论的眼光去看待每一个问题,反而能更加深入底层机制的理解。
那么人类生产出计算机的阴谋到底是什么?
计算机的产生源自人工智能的发展,当世界上第一台图灵机产生之后,计算机就不再是单纯的计算器了,而是带有逻辑控制能力的机器。
其实从历史发展的轨迹来看,战争是促使人类进步的一大动力。第二次世界大战期间,为了研制和开发新型大跑和导弹,美国陆军军械部在马里兰州的阿伯丁设立了"弹道实验室"。而当时担任弹道研究所顾问,正在参加美国第一颗原子弹研制工作的数学家冯·诺依曼提出的"冯氏模型"成为至今为止计算机的低层架构基础。
如果抛开了"冯氏模型",那么我们今天所建立的一切编程思维都成为了无稽之谈。从"冯氏模型"产生的那一天起,计算机和人类大脑之间的战争就正式打响了。
"冯氏模型"提出在计算机内部用二进制代替十进制和程序存储的理论。这意味着,计算机能最终执行的,只能并且唯一是二进制的代码。
但是人类的大脑无法记忆,也很难适应二进制的东西。于是一些人阴谋让计算机更适应人类大脑的思维方式,汇编语言产生了,它使用mov ax,4C01之类的助记符帮助人类大脑避免直接接触计算机低层的二进制代码。
汇编语言只是阴谋的第一步,因为它仅仅是个助记符。在人类需要计算机做越来越多的工作的时候,它显然是无法胜任的。
改变人类历史的,往往只是少数几个人。在Dennis写Unix系统的时候,这位伟大的计算机科学家终于无法再忍受汇编的烦琐,创造出了C语言。
毫无疑问,C语言是计算机科学史上的一个里程碑,它是人类大脑战胜计算机的一场重要战役。尽管C只是被设计成为一种便携式汇编语言,但是这也决定了C是面向系统编程的最终极限,在面向系统编程时,没有任何一门语言能代替C语言。我一直很鄙夷语言之争,因为任何一门语言的产生,都是现实问题的阴谋实现。
在C语言产生之后,自此,人类在"抽象"的道路上愈行愈远。后来产生了C++、产生了Java、产生了Delphi。
可见,从计算机有纪元的那一天起,人类就在阴谋让计算机适应人类大脑的思维方式,而在这个阴谋实现过程中,人类大脑的抽象思维能力扮演了唯一重要的角色。这也是比尔·盖茨喜欢招物理系出身的人的原因,因为学物理的人抽象能力相对其他学科要强那么一点。
在这个抽象过程中,OO是重要的一环。至于是因为有了OO才有软件工程,还是有了软件工程才有OO这类鸡生蛋还是蛋生鸡的问题,讨论起来很无聊。软件工程从计算机诞生的那一刻起,就存在了。OO只是把软件工程推向了一个极致,因为软件工程是一种思想,而思想这个东西,从人类产生那一刻起就存在的。人类总是试图来创造和改变这个世界,尽管有时候创造和改变的有点愚昧,比如环境污染问题、还有最近流行的猪流感(题外话)。
后来人类发现有了OO还是不足以来贴近人类大脑的思维方式,也不足以适应人类活动的多变性。于是抽象出来了设计模式,这完全是另外一个阴谋,是人类阴谋把计算机完全变成和人类大脑一样思维的一个阴谋。
诚然,设计模型并不是因为有了OO才存在。设计模式是一种软件工程需要,也是一种思想,从人类产生的那一刻起,它也业已存在了。
那么,设计模式的阴谋就是因为OO表达抽象的能力不足,而设计模式这种东西是可以复用的。于是人类把它总结出来,作为OO编程的一种补充。
也许,在将来的某一天,我们不再需要设计模式。也许,某些人的英语编程设想真的能实现,当然,这种实现的前提是从低层改革图灵机和冯氏模型。
我们拭目以待吧!