Re: [問卦] 在卡上打洞寫程式是什麼感覺
※ 引述《LaAc (深淵戰士)》之銘言:
: 看關鍵少數那些人學程式就是用卡打洞
: 打完後放進電腦讓它跑
: 這樣連印個Hello world都超難吧
: 如果不小心手殘少打什麼要debug484會瘋掉
: 有沒有卦?
剛好我需要跟學生解釋為何 Linux 核心原始程式碼的風格規範 [1] 中,限制一行至多
80 個字元,其典故跟「打孔卡」(punched card) 有關。
: The preferred limit on the length of a single line is 80 columns.
1890 年代,美國人口普查就使用新發明的穿孔卡及機器,僅用 6 週就完成統計,對比
1880 年代全人工進行的普查,歷時 8 年。這個劃時代的發明出自德裔美籍的 Herman
Hollerith,後者以打孔卡技術,建構出打孔卡片製表機 (Tabulation Machine) [2],
由於美國人口普查的成功,他創立名為 Tabulating Machine Company 的新事業 [4],
向全世界的人口統計局兜售自家的產品,並成功獲得多國採納,1911 年,華爾街的金融大亨 Charles Ranlett Flint 買下 Herman Hollerith 創立的 Tabulating Machine
Company,將其併入到 CTR (Computing Tabulating Recording) 公司,著眼於大量的
打孔卡背後巨量的資料處理。
因 CTR 公司經營不善,業務一直停滯,於是 Flint 在 1914 年雇用 Thomas J. Watson來扭轉業績。
> Thomas J. Watson 在 1943 年有句名言:
> "I think there is a world market for maybe five computers."
此前 Watson 曾因壟斷罪而吃了一年牢飯,瞧不起 Watson 的 CTR 董事會
只讓他擔任職務不大的經理,不過 Watson 忍辱負重,不僅使 CTR 業績成長,最終成為該公司實際的經營者,然後就是人們熟知的 IBM 公司。Watson 到 CTR 任職的第一件事是向銀行貸款 5 萬美元 (相當於今日的 134 萬美元!),採用出租機器的嶄新銷售手法,刺激業務量。1914 年 Watson 長子 Thomas Watson Jr. (IBM 的第二任總裁) 出生,也是第一次世界大戰的起點,儘管主要戰場在歐洲,但列強的相互牽制下,美國無法脫身,而戰爭結束時,製表需求激增,幾乎每間大型保險公司和鐵路公司都用得到 CTR 公司的打孔卡片製表機器,1919 年 CTR 公司的營業額高達 1300 萬美元。1924 年,身為 CTR公司總經理的 Watson 將公司更名為 IBM,打孔卡相關的產品持續改變這世界。
1928 年,IBM 發明 80 欄、12 列格式的矩形孔卡片 [3],是用耐溼、耐皺、又耐熱的
絕緣質料紙張製成,長 7 又 3/8 吋、寬 3 又 1/4 吋,以美國壹圓紙鈔的尺吋為準,
每張卡片的每欄代表一個文字、數字或特殊符號,12 列的排列順序由上而下,其中卡片下端的 0 到 9 共 10 列,稱為數字打孔位置,凡在數字位置上打孔就代表該數字。卡片上端的 0, 11, 12 等三列稱為區域打孔位置,為打英文字母或特殊符號時配合之用。
這個 IBM 發明的格式很快就成為業界標準,且伴隨著該公司在電腦主機的成功,使得
早期的電腦普遍採用事先透過打孔機已輸入資訊的打孔卡,當做電腦程式和資料的主要
輸入媒介,這也是為何年紀偏長的人會回憶「寫程式到打孔卡」,因為打孔卡就是當時
業界標準的輸入媒介,而為何把 programming 稱為「寫」程式呢?因為早期的程式開發者需要事先謄寫程式碼和資料在紙上,交付給電腦中心的人員,批次透過人工操作打字
機式的鍵盤,將前述程式碼和資料「輸入」到打孔卡。
IBM 的打孔卡格式是業界標準的事實,使得 80 欄這樣的打孔卡寬度限制,成為蟄伏在
電腦演化過程中的「枷鎖」,就算今日我們用了更大更好更漂亮的電腦螢幕,當我們啟動終端機 (Terminal) 視窗時,仍會見到 80 個字元寬度的預設值。
我們來觀賞以下短片,感受 IBM 打孔卡機器的運作,和當時人們如何「寫」程式:
https://youtu.be/YnnGbcM-H8c
影片可見 IBM 029 型打孔機 [6]。1964 年 IBM 銷售 System/360 大型電腦 [5],一度壟斷大型電腦市場,而 IBM 029 型打孔機則伴隨 System/360 主機,作為配件銷售。
電影《關鍵少數》(Hidden Figure) 讓世人理解在 1960 年代,"computer" 一詞指真的負責計算 (compute) 的人,這群英雄負責替工程師計算驗證複雜的數學算式。此外,這部電影也讓我們看到,幫助美國太空總署 (NASA) 在美蘇冷戰時期,完成首次太空船載人繞行地球任務 (Project Mercury [8]) 的另一功臣:IBM 7090 處理器 [7],後者也是
全球第一台電晶體計算機,每秒可執行 229,000 道運算,亦是大型主機的始袓。以農神火箭實際發射登月太空船之前,NASA 已利用 IBM 7090 執行過數千次的模擬飛行,在
1969 年,NASA 更以五套 IBM System/360 執行任務控管,使得阿波羅 11 號成功得以
成功地執行登月任務。
IBM 029 型打孔機搭配 Standard Modular System (SMS) 卡 [9] 時,可做到當時非常
先進的功能,像是數字區自動填補左側的 0 —— 當設定數字區域長度為 6 欄時,打孔
機操作員只要輸入 "43",打孔機就會自動填充起始位置開頭的 4 個 '0',於是最終輸出"00043"。詳細資訊可見哥倫比亞大學的網站:
http://www.columbia.edu/cu/computinghistory/029.html
也許你會認為,IBM 029 型打孔機大概只在 1960 年代活躍,之後程式設計師就改用其他輸入媒介,像是 UNIX 共同發明者 Ken Thompson 和 Dennis M. Ritchie [10] 在 1972年於 DEC PDP-11 主機前,透過 teletyper (電傳打字機,可簡稱 TTY) 和主機互動的狀況:
https://www.bell-labs.com/usr/dmr/www/picture.html
上圖可見,Ken Thompson 似乎很成熟 (我不好意思說他少年老成),但他發展 UNIX 時僅26 歲,而且他與身旁 Dennis Ritchie 協作的過程,沒用到螢幕或顯示器?!
1963 年麻省理工學院的科學記者採訪當時計算中心,並與 Fernando J. Corbató教授
對話,後者是世界上第一個分時多工作業系統 Compatible Time-Sharing System (CTSS)的主導設計者,Corbató教授在 CTSS 獲得巨大成功後,帶領 MIT 團隊,和通用電氣及
Bell Labs 發展 MULTICS 作業系統,許多慣例和概念一路從 CTSS, MULTICS,到後來的UNIX 作業系統。可參見以下短片:
https://youtu.be/Q07PhW5sCEk
在這部短片中,Corbató教授談及過往批次處理系統的限制,並快速回顧電腦運作原理及如何實作分時多工、依據優先權進行排程等等,是此,電腦猶如電話交換機,同時為多個使用者所操作,每位使用者都能依據需求使用終端機,存取到運算和儲存資源,不會和
其他使用系統的人有所衝突。另外,也不難從影片中看到形似打字機、可和電腦對話互動的裝置,那就是 TTY —— 早期的電腦沒有配備螢幕,而是透過 TTY,藉由訊號連線,
建立人機互動的終端機 (console),現在受到 UNIX 影響的作業系統,像是 Linux 和
macOS,都保有 tty 子系統,其名稱和功能就來自 teletype —— 存在 50 年以上的
「活化石」。
值得注意的是,TTY 和打孔卡幾乎一樣古老,且 1970 年代,程式設計師仍用打孔卡作為程式和資料輸入的媒介,配合批次任務的執行,畢竟物美價廉的儲存設備還不存在,打孔卡還是持續風行。TTY 適合「線上」(指操作員和電腦主機連線互動) 操作,而打孔卡則適合程式設計師「線下」撰寫程式碼和準備資料。
打孔卡對程式設計的影響不可小覷,甚至讓 COBOL 和 FORTRAN 這樣早期的程式語言,
需要特別考慮到標誌 (labeling) 在特定位置的作用。1960 年代,打孔卡不僅沒專用
的編號 (試想要是操作員將這些卡片散落一地,該如何正確地重排呢?),也沒浮水印,於是用於 COBOL 程式的打孔卡會將最後的 8 欄保留給標誌使用,以決定卡片間的順序,卡片中間還特別設計其他標誌,判斷是否用二張或更多卡片來表達單一敘述 (即今日程式設計常見的跨行程式敘述)。FORTRAN 程式語言也有類似的考量,該語言發明的年代還
沒有今天我們意義上的鍵盤與螢幕,程式碼必須使用打孔機,於是特定的欄位和行也被
保留為識別用途。
[1] Linux kernel coding style:
https://www.kernel.org/doc/html/latest/process/coding-style.html
[2] Tabulating machine:
https://en.wikipedia.org/wiki/Tabulating_machine
[3] IBM 80-column format and character codes:
https://en.wikipedia.org/wiki/Punched_card#IBM_80-column_format_and_character_codes
[4] Herman Hollerith 的生平和事業,可見泛科學網站:
https://pansci.asia/archives/189683
[5] IBM System/360:
https://www.ibm.com/ibm/history/ibm100/us/en/icons/system360/
[6] IBM 029 Card Punch:
https://en.wikipedia.org/wiki/Keypunch#IBM_029_Card_Punch
[7] IBM 7090: https://en.wikipedia.org/wiki/IBM_7090
儘管 IBM 7090 是全球第一台電晶體計算機,但其二進位系統跟我們今日所見的電腦 有極大的差異,可參見拙作〈解讀計算機編碼〉:
https://hackmd.io/@sysprog/binary-representation
[8] Project Mercury: https://en.wikipedia.org/wiki/Project_Mercury
[9] IBM Standard Modular System:
https://en.wikipedia.org/wiki/IBM_Standard_Modular_System
[10] Dennis M. Ritchie 已在 2011 年離開人世,生前只在一間公司工作,直到退休, 即 Bell Labs。Ritchie 晚年十分低調。以至於在他離開這個世界時,不為眾人
所知,但他創造的 UNIX 作業系統和 C 語言,直接地改變我們所處的世界。
https://www.bell-labs.com/usr/dmr/www/
--
大神先推
阿鬼您還是講中文ㄅ…
有神快拜
等等補推
漲姿勢了
@Costco5566, 對不起,我的中文程度不夠好
優
講的淺顯易懂
文組
推
@syldsk, 我每年都要寫論文,「文」組無誤
哇~讚啦
推
神人
老師早
推推
老師起得真早
大神推
先膜拜大神
長知識了
酷
有神快拜 神都不用睡覺
未看先推
長知識了 謝謝
推
好懷念!我當年上計概老師也是教這個!
老師早~
神奇
嗚嗚嗚
已收藏 老師早
先推免得被發現我看不懂
都是中文,但是看某.....
推
推
好險沒經歷過這些東西
知識大爆發啦!好文
大神
j大耶,快拜
推
科普文 推
116老師好認真啊
推
大神
長知識
推
哇 又一篇好文
有神必拜
u文
大神給推
老師早
太強啦
先推再看
神啊
推
推
老師早
推薦此文章,學到了很多電腦發展的歷史
老師最近發文興致高昂
推
釣出上古神獸
推
漲知識了
推推
推
大師
推
推!
推
今天為什麼一堆優文
現在不是80了
讚
優文 前百推
謝謝老師,原來萬惡的80字元限制是這樣來的XD
我一早起床懷疑自己是不是不識字
推
優文太多 好不習慣
趕快推
大作無誤!
趕快推
老師早
認真推
為何這篇只有3X推
好神奇
好文章
原來啊
推
優文推
厲害了...
老師早
教授 好猛!
優質好文耶
嗯!跟我想的差不多
推
推
凡人如我完全沒辦法想像打孔運作
太專業,給推
看八卦長知識
老師這篇太早發了,這時間看文的比較少吧
好復古
八卦需要更多這種文章
謝謝大神!資訊爆炸啦!
推
這不推不行
God
推
推
U文拜讀
推
讚的
好厲害
好文
八卦這兩天文藝復興嗎?這麼多好文
講得很清楚
優文
推 講得淺顯易懂
老師您是教軟體還是教歷史的呢
推
先推再看
推
太神了 jserv都不用睡覺ㄉ
老師是剛起床還是根本沒睡
推jserv大大
116推推
拜讀
PTT真是神人一堆....
謝謝老師分享
太神啦
推
在學術電子佈告欄看到學術文章
推!!!!
太…神啦
強者 科普月刊文
睡剛醒就看到大神文,請受我一拜
推!!
推
推 八卦需要更多這種文章
優文
推
上課了同學,老師好~~~
優質
推
好酷@@!!
推
一口氣發兩篇專業文 當然推爆
好懷念喔
太神了
推
已經是系教授等級
大推!
印象中枷鎖在 Linux kernel 已經被解放了
推
神推
推
趕快推一下,不然人家以為我是文組。
推
厲害
朝聖
我覺得80的限制該重新討論一下了 code review為了這80 有
時候真的好煩啊
新知
計算機概論的一部分嗎
推推
我有生能見到活字典 真是感動
老師都不用睡的嗎 …
好文 推
一定是機器人回覆的,怎麼可能都不用睡覺QQ
朝聖jserv
推
補個推
這篇比上一篇更難懂了 看好久
推
完整的演進史、歷歷在目。
不知現在的計概還會教這些古董級的歷史嗎?
上過j大的課,覺得很猛
推
先推免得被發現我看不懂
老師好猛...
推!太神了!
推 認真文
大神
推
學過cobol 有夠擊敗的語言 原來如此
太神了
知識推
看 PTT 長知識
原來背後有這麼多故事
推
推大神!
2B鉛筆塗的電腦答案卡應該是類似概念
又是你
先推,這樣就表示我都懂 ==
推推
好...好窩
我也是這麼想的
推
FB 80 各大銀行現在還是用IBM大型主機
大神
推
神
善哉
被酸民酸還能自嘲不生氣,佩服
這麼認真,但我看不懂
推
推
長知識
大師太帥了!!
推
長知識
推
猛
大神必推~
真.考古文
自己要找好多資料才看的懂,很有趣的分享
打這麼長誰看的.....喔. 抱歉是jserv 老師 我乖乖看完
推
卡上打得再多洞 還不是找不到女人打洞
讚
每年都要寫論文,意思是走學術界的,搞不好是個教授等級了
推
我沒有預料會在八卦看到這種等級的文章
大神
老師的年代才有打洞...1980吧 時代進步神速
老師早
不推不行了
跪了
大神推
請問老師都沒在睡覺嗎?
打孔的聲音好療癒
推
先推 別人就不會以為我看不懂了
見神
特推
推
老師早安
WOW
難怪我的IDE整天說我太長,就是打孔機害的
Jserv就成大教授啊 當然要寫論文 菜味濃厚
很厲害但老人臭都出來了
推科普
推....但是還是不懂 學程式學到現在還是爛爛的QAQ
跪拜大神Orz
那時代的東西能這樣運作起來真的蠻神的
@achun3399, 什麼叫「老師的年代」?我可是與時俱進的鄉民
太長
推!
推冷知識
推推
八卦終於出現優文
推
釣到野生jserv了!!!
神人推
老師早
專業推
推啦
jserv先跪
覺得大腦上升了10度
在下78年上交大住宿舍還在床底下發現約一百張的卡片
老師的睡覺時間依然是人類不解的迷XD
長知識
推
教授好
太神啦
大神好
推
也經歷過打洞機的推 XDDD
你媽知道你半夜不睡覺在發優文嗎?
神
@RinHizakura, 累了就睡,睡醒就上網刷存在感(?)
有神快拜
老師早
欸.教授狂發論文辣.(怕
抱歉 我無話可說
朝聖
推
先推再看~
專業 推
推
以前跑程式真的好辛苦
老師不用睡覺的...
嗯嗯跟我想的一樣
一直很好奇如何半小時一篇優文
推
推
推
專業推
心血來潮打了多久 太神了
神
老師好
推
長姿勢
一早就遇見上帝...
考古系?
太神啦
推
你資工系? 幹還真的是 而且還是教授 怕
專業推
推
上古神獸啊!
推
教授好
朝聖
老師早
大神
太神辣
跪
老師好
Mon I’m here end of line
大神好
以前這樣code到底怎麼發現自己有沒有打錯字...
以後的人也會問用鍵盤寫程式要幹嘛
太神啦 一天兩篇
膜拜 有神快拜
好喔
大學教授有說過當年要編譯都是要拿著洞卡排隊
推
趕快推不然他們覺得我不懂
看完了還是一知半解 等一下還要去查資料
這是最近看到老師的第二篇文章了
感謝計算機史科普,超有趣的。看影片想到2B畫卡+1
80字元在很多老的code裡面挺常見的...尤其有的程式從7,8
0年代發展到今天的,有時候讀取input放寬了,但是傳遞到
子程式還是只有80字元,然後就慘了...
天啊 才幾十年的時間 變化好大
老師你每年論文484隨便寫都上啊QQ
優文必須推
先推再懂
太神了
文組看不懂但還是要推
朝聖 (拜
先推 不然人家以為我看不懂
真的有人看完嗎
太強
推
推
PTT一行也是80個半形字
激推英國布萊切利園旁邊的電腦博物館
老師你好啊
考古系
噓一下神XD
推
那打錯怎麼辦 整張卡報廢?
跟打卡比起來,console真的和藹可親。
不明覺厲
樓上,是的,所以你可以想像當時debug會有多崩潰
推推推
有神快拜
專業推
有神必拜
今天真多產XDDD
跪
老師最近好像很閒XD
推
推推
NASA博物館有第一次上太空的程式 用金屬打孔卡
先推
推易懂
推
專業好文
長姿勢
還有附參考出處真的4在寫論文了哈哈哈哈哈
所以一張卡片=一行程式嗎@@
好文必推,學習了
推!長知識!
電腦史而已 講看不懂的是怎樣= =
推
推
推優文
老師好
這不就計概
推
老師好
推
今天大神都出來了
Dennis Ritchie過世沒被媒體大篇幅報導真的是新聞界罪孽
推~
推
先怕再看
文組看不懂辣
奇怪的姿勢又增加了
教授好
老師好
超豐富有趣的歷史演進
長知識
老師你怎能那麼厲害 太誇張ㄌ
神
推
推完整
太神了
好酷
推
老師好
這些程式語言的名稱好幾十年沒聽到了...Pascal也是
電腦閱卷那個2B鉛筆描答案格也是仿打孔卡的意思
推
推認真
長知識
推
幹 去排隊啦 又打錯洞了
太神啦
太長!先推
推
可以不要這麼多字嗎 我理組看不懂
先推,怎麼辦我看不懂
媽我在這看上帝
又跪了...
推推推
好神啊,到底要多有熱忱
大神
推
推杰色夫大神 ... m(__ __)m
推
朝聖推
推
推
推
推大神
神…
推
神…拜託保佑我機房的機器乖乖無事
推
ctrl + alt + F1 還是可以去 tty1 看一下,但我是用 l
inux
推
老師出現了
計概.. 116大神教授 辛苦您整理了
爆
[問卦] 台南市政府公然保護綠鬣蜥?爆
[問卦] 法官酒駕爛醉被逮 慘遭重判罰俸4個月爆
[問卦] 麥當勞有什麼絕版商品讓你念念不忘的爆
[問卦] 當初台灣選擇核能而不是綠能會怎樣爆
[問卦] 沒人發覺掛號費500是很嚴重事情嗎?58
[問卦] 綠鬣蜥沒有天敵嗎?56
[問卦] 榮總婦科 也有波波?劉家豪醫師49
[問卦] 自由時報為什麼都沒有空汙新聞48
[問卦] 日韓大戰要幫哪隊加油48
[問卦] 驚! 42歲深田恭子霸氣回歸2025年月曆?50
[問卦] 能源青鳥的智商是不是有問題?46
[問卦] 水泥預拌車翻了40
[問卦] 全台空污 真的是火力發電的關係嗎?43
[問卦] 通勤時間1個半小時算久嗎?37
[問卦] 為什麼名醫小孩沒遺傳到頭腦要當波波爆
[爆卦] 波波名單更新至1552名74
Re: [新聞] 快訊/桃園義消民宅捕蜂 副小隊長突遭「49
[問卦] 本土醫學生實習遇到波波醫不會很尬嗎?29
[問卦] 韓國女生安芝儇很漂亮的卦17
[問卦] 台北月開銷 要怎麼低於五萬 ==20
[問卦] 臺北霧散了48
[問卦] 當初是薄熙來登基,國際&兩岸現在如何?30
[問卦] 薄瓜瓜如果要借兵打習 該借他嗎25
[問卦] 台灣空氣被哪個組織搞爛?20
[問卦] 為甚麼今天沒人關心明天的颱風狀況?23
[問卦] 韓媒震驚:台灣人把啦啦隊當偶像29
[問卦] 11月整個月都要爽吃壽司郎海膽?23
[問卦] 泰森跟保羅誰會贏?85
[問卦] 震驚!在台灣倡議核電竟違反國家法律!?18
[問卦] 40%不怕得肺癌嗎?認真問