智能应用 影音
DForum0719
member

从打卡机到计算机

林一平手绘之巴毕基、查卡与苏斯。

早期的计算器,如同算盘,都是在执行固定的数值运算 (Fixed Numerical Task)。而可编程序计算机(Programmable Computer)的观念则是英国数学家巴毕基(Charles Babbage)所发明。巴毕基设计了分析引擎(Analytic Engine),利用数量大到可覆盖整个足球场的齿轮及驱动器,来储存1,000个50位数的十进制数字。整个机器由打孔卡片(Punched Card)控制,可自动执行加减乘除运算。不过这部机器并未真正被实现。

乐福雷斯的女伯爵(Countess of Lovelace)艾达(Ada)帮巴毕基描述分析引擎的设计,并为它编写第一个程序(巴毕基可并没有艾达这种写程序的远见呢)。1979年,美国国防部想将计算机语言模块化,重金悬赏设计新语言,最后得标的提案,将新语言命名为Ada。但是当时的计算机仍然无法跑Ada程序,只能感叹Ada这位女伯爵终究只可远观,不能亵玩焉。更可惜的是,Ada语言的设计太过复杂笨重,无法变为主流,终究无疾而终。

巴毕基以打孔卡片控制分析引擎的做法相当巧妙,但并不是原创的想法。法国人查卡(Joseph Marie Charles)早在1804年就使用不同样式的穿孔厚纸卡來控制纺缍和飞梭的交互运作,以此编写程序来控制织布机,织出不同的花样。打孔卡片的概念,被巴毕基借用来控制分析引擎。近代科学家图林(Alan Mathison Turing)发明了图林机 (Turing Machine),能以抽象的数学表现出演算法。第一个能运作的图林机 (Functional Program-controlled Turing-complete computer) 是德国土木工程师苏斯 (Konrad Zuse)于1941年完成,取名为Z3。

我大学就读成大电机系,学校最先进的大型计算机CDC Cyber 170仍然使用打孔卡片来输入程序。年轻的朋友大概没有「打卡片」的经验。我当年躬逢其盛,开过这种洋荤,每天可打上千张卡片。跑程序时,两个肩膀各扛一大箱卡片,顾盼自雄的将一大叠卡片喂入一部读卡机。卡片数量之大,让旁边的女同学,看得崇拜不已。

其实是我的程序写得太烂,三四行指令可完成的计算,却写了几十行。当时计算机中心约有20部打卡机,使用率相当高,也常常故障。每当女同学束手无策的坐在故障的打卡机前,我就自告奋勇的帮忙排除问题。当年就是靠修理打卡机,才有机会和林夫人搭讪,约她出去吃饭的。

成大电机系还有更早期的IBM计算机。开机时必须用一卷打孔纸带唤起操作系统,才能正常运转。我大二修组合语言(Assembly Language)这一门课,就是跑这一部老爷计算机。这部计算机的打印机,打印龟速,犹如阿里山的小火车在上坡。炎炎夏日,我最喜欢待在冷气电脑房。听着IBM老爷打印机「科里、卡拉」的打印声,不久就会被催眠梦周公,睡一整个下午。大学时代长时间和老爷计算机相处,直到今日,仍然怀念「科里、卡拉」的打印声。

现为国立阳明交通大学资工系终身讲座教授暨华邦电子讲座,曾任科技部次长,为ACM Fellow、IEEE Fellow、AAAS Fellow及IET Fellow。研究兴趣为物联网、移动计算及系统模拟,发展出一套物联网系统IoTtalk,广泛应用于智能农业、智能教育、智能校园等领域/场域。兴趣多元,喜好艺术、绘画、写作,遨游于科技与人文间自得其乐,着有<闪文集>、<大桥骤雨>。