让历史告诉我们未来
在看到Google首页上纪念Ada诞生197周年的图片时,我想我再也不能推脱了,学了一个多月的计算机历史,也应该总结一下。
Ada者谁?大诗人拜伦的女儿;世界上第一位程序员;现代计算机鼻祖巴贝奇的助手。这些头衔足以使Ada成为计算机历史上名垂千古的人物,这不,为了纪念这位历史上为数不多的女性计算机大师之一,后人甚至以她的名字来命名编程语言。直到现在,Ada语言仍然是美国国防部内定使用的开发语言,我国军方也公布了自己的Ada语言标准。
巴贝奇苦苦研制的分析机直到他去世时也没能成功地运转起来,但却为后人留下了打孔卡片和条件语句这样的遗产。
我关注的重点一是从机械式计算机到电气式计算机的转变过程,另是二进制是如何被引入计算机领域的。巴贝奇之后的几十年里,人们始终没有逃出“机械式+十进制”的桎梏。照理说,电气式计算机的理论基础和工程基础在当时都已经存在,莱布尼茨在18世纪就发明了二进制,布尔在19世纪上半叶发明了布尔代数,而继电器也在19世纪前期就被发明出来。这三者结合起来,完全可以用来制造二进制电气式计算机。
然后在20世纪30年代末,人们突然之间不约而同的使用起二进制来。1938年,乔治.斯蒂比兹在自己的厨房制造出了二进制的K型机;德国的康拉德.楚泽也在几乎相同的时间制造出了Z1二进制计算机,香农更是在1939年发表了名为《继电器与开关电路的符号分析》的硕士论文,从而为数字电路打下了理论基础。然而,当时电子管已经被发明出来,为什么没有直接用到首批二进制计算机上,而是被本应该更早使用的继电器抢去了风头,这也是耐人寻味的问题。
再之后,宾夕法尼亚大学的ENIAC,晶体管,集成电路以至于后来的超大规模集成电路,这些过于粗糙的编年史是我们在教科书里都能看到的。当然,还包括图灵,冯.诺伊曼这些我们不能再熟悉的名字。
我开始思考是什么使计算机成为可能。
当然首先是人,一堆高低电平本身没有丝毫意义,有了人才使他们活起来,表示账户余额的多寡,表示英文单词的拼写,表示你的个人喜好。我也不只一次和朋友开玩笑说:计算机程序不存在于电脑中,而存在于人脑中。
物理学和数学,特别是数学。计算机原本就是用来完成数学计算的,什么多媒体,互联网,电子商务都是20世纪下半页才提出来的课题。莱布尼茨,帕斯卡这样的大数学家暂且不说,图灵16岁开始研究爱因斯坦相对论,冯.诺伊曼8岁就自学微积分,C语言的发明者里奇是数学博士。
兴趣是第一大导师一点没错,比尔.盖茨12岁时就能独立编写程序,而Linux的创始人林纳斯在10岁就已经开始玩计算机了。
还有大学。经常听人说而我也曾经这么认为,大学里面学的知识没用,大学里面学的太过理论,大学里面学的过于陈旧,现在,当我重新读起一本《微机原理》时,这样的论调在我心中已经灰飞烟灭了。我们都能用C语言写个“Hello World!”,用Java创建一个对象,但是在这背后不知道凝聚了多少大学里面的研究成果。大家都不笨,只要花时间,我们都能学会面向对象技术,都能学会Android开发,软件开发之所以这么简单,恰恰因为背后有一大帮人为我们做了太多的事情而是软件开发傻瓜化。