北京学区房
你说雏形?好多人立马会想到ENIAC,那个庞然大物,费城莫尔学院造的,1946年亮相。它确实厉害,用了成千上万个真空管,速度比之前那些机电式计算器快了几个数量级。用来算弹道轨迹,效率惊人。一个巨兽,真的。占地好几百平米,散热都能煮鸡蛋,耗电量大得吓人。当时的报纸惊呼它是“巨脑”。
但你仔细琢磨琢磨,ENIAC算是现代通用计算机的雏形吗?它确实是电子的,数字的,而且是第一台大型通用电子计算机——等等,这个“通用”啊,得打引号。因为ENIAC的“编程”方式,是靠接线、拨开关!你要让它算个别的什么,得停机,重新插拔几千根线,调整几百个开关。那哪儿是程序?那简直是搭电路!它本质上还是个高速执行特定任务的机器,只是任务切换起来痛苦得要死。它当然是个里程碑,没有它在电子计算上的突破,后面那些可能出不来这么快。但要说它是今天这种灵活得像水一样的通用计算机的祖宗,我觉得差了点那最关键的基因。
那基因是什么?在我看来,是存储程序的概念。Stored-program concept,这个才是区分“高速计算器”和“通用计算机”的根本界限。把程序——就是告诉机器“该干什么”的指令序列——像数据一样,也存到机器的内存里去。这样一来,你想换个任务?不用趴地上重新接线了!加载一套新的程序进去就行。瞬间变脸!这不就是我们今天习以为常的操作吗?双击一个图标,不同的软件就跑起来了。
这个存储程序的想法,其实是好几拨人在差不多时候想到的。阿兰·图灵(Alan Turing)在他那些划时代的理论文章里,特别是关于他的图灵机的设想,早就触及了这种想法,一个机器可以通过改变内部状态(也就是我们现在理解的程序)来模拟任何其他机器的功能。理论上,图灵机就是一台完美的通用计算机。
而在实践层面,当ENIAC还在吭哧吭哧调试的时候,背后的一些人,包括ENIAC的设计者莫奇利(Mauchly)和埃克特(Eckert),还有加入了顾问团队的数学家约翰·冯·诺依曼(John von Neumann),已经在琢磨下一代机器了。冯·诺依曼,这位天才中的天才,他在1945年写了一份报告,《关于EDVAC的报告初稿》(First Draft of a Report on the EDVAC)。这份报告,简直是现代计算机的圣经,它系统地阐述了存储程序的概念,提出了控制器、运算器、存储器、输入、输出这五大基本组成部分,以及指令系统、数据表示(二进制)等等。这就是后来我们说的冯·诺依曼架构。
所以,我觉得现代通用计算机的真正雏形,不是ENIAC本身,而是EDVAC(Electronic Discrete Variable Automatic Computer)——ENIAC的继任者,或者说,是基于冯·诺依曼报告设计的那些机器。EDVAC的建造过程磕磕绊绊,进度比较慢。反倒是在英国,剑桥大学的莫里斯·威尔克斯(Maurice Wilkes)读到了冯·诺依曼的那份报告(尽管是“初稿”,但内容已经相当完整和震撼),立刻意识到这就是未来!他们以极快的速度,在1949年造出了EDSAC(Electronic Delay Storage Automatic Calculator)。
EDSAC!在我心里,它比ENIAC更有资格被称为现代通用计算机的雏形。为什么?因为它不仅是电子的、数字的,关键在于,它是第一台真正意义上投入运行的存储程序式电子计算机!你可以相对方便地加载不同的程序让它执行不同的任务。这才是“通用”的起点。你得想象那个画面:不再是一群人围着巨大的机器拔线插线,而是有人准备好一串串指令(程序),小心翼翼地输入到机器的存储器里,然后机器就开始“思考”,根据这些指令一步步执行。这跟今天我们点开一个APP的本质是一样的啊!
当然,在地球的另一边,德国也有位孤独的天才,康拉德·佐杜斯(Konrad Zuse)。他在二战期间,完全独立地摸索出了二进制、浮点数表示,甚至是他自己的程序控制方法。他的Z3机,在1941年就造出来了,尽管是机电式的(用继电器),但它已经是可编程的,甚至在某些特性上比ENIAC更接近后来的计算机(比如二进制和一定的程序灵活性)。如果不是战争和地理隔绝,佐杜斯的贡献本该更早更广为人知。他的Z3是不是雏形?从“第一台可编程的、全自动的、数字计算设备”这个角度看,它当然是。但它不像EDVAC/EDSAC那样,直接奠定了基于冯·诺依曼架构的现代计算机主流路线的基础。它更像是一条平行但同样重要的早期探索路径。
所以你看,要说现代通用计算机的雏形,这不是一个单选题。如果强调“电子”和“大型”,ENIAC是开创者,是个伟大的电子巨人。但如果强调“通用”的核心——“存储程序”——那冯·诺依曼的思想、EDVAC的设计以及EDSAC的实现,才真正捕捉到了那个决定性的基因。而像佐杜斯的Z3,则证明了天才的想法可以在不同地方独立诞生。
在我看来,EDVAC的理念和EDSAC的实践,它们共同孕育了通用计算机的胚胎。那个时代,机器的存储器非常小,可能只有几千个字,程序和数据都得精打细算地放进去。输入输出慢得像蜗牛,用纸带或者打字机。真空管时不时就烧掉一个,机器说瘫痪就瘫痪。维护人员提心吊胆地盯着那些闪烁的灯光和发烫的管子。跟现在比?简直是史前时代。
但别忘了,所有的参天大树都来自一颗种子。这颗种子,不是ENIAC那样的物理尺寸或计算速度上的突破,而是存储程序这种架构上的突破。它解放了机器,让它不再是为某个特定任务量身定制的昂贵傻瓜,而是变成了一个可以通过改变指令而改变行为的灵活工具。这就像是给机器植入了智慧的火花,让它具备了适应各种任务的潜力。从这个意义上说,EDVAC和EDSAC,以及它们背后的冯·诺依曼架构,才是我们今天手中这块能干一切的“智能砖头”的真正直系祖先,是现代通用计算机当之无愧的雏形。它们虽然笨重、原始、故障频发,但身上带着的那份“通用”的基因,决定了计算的未来。每次想到它们,我都觉得鼻子有点酸,那是对那些在简陋条件下,用真空管、导线和惊人智慧,硬生生把一个科幻般的想法变成现实的先驱们的由衷敬意。他们搭起来的,可不仅仅是一堆硬件,而是一个新世界的基石。
相关问答