智慧應用 影音
Microchip
電子時報行動版服務

從打卡機到計算機

林一平手繪之巴畢基、查卡與蘇斯。

早期的計算器,如同算盤,都是在執行固定的數值運算 (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,廣泛應用於智慧農業、智慧教育、智慧校園等領域/場域。興趣多元,喜好藝術、繪畫、寫作,遨遊於科技與人文間自得其樂,著有<閃文集>、<大橋驟雨>。