寫在前面:我已經把這篇文章轉成了視頻,習慣看視頻的朋友歡迎關注視頻號"碼農翻身Pro":
這是世界上第一臺商業上成功的個人計算機:ALTAIR 8800。
它沒有顯示器,沒有鍵盤,怎么寫程序?
很簡單,撥動開關來寫程序!
如果仔細觀察一下上面的圖,就能發現面板上寫著:Data,Adress,Stop,Run,Deposit,CLR,D0 ~ D7, A0~A15等字樣。
如果想計算“1+1”,在這個機器上可以這么干。
1.設計匯編代碼
;把該地址的數字裝入累加器
LDA 000020
;將數字1和累加器的數相加
ADI 001
;將累加器的數保存到特定地址
STA 000022
2. 把匯編轉化成機器指令(用8進制,方便輸入)
072 020 000 306 001 062 022 000
3.撥動開關,輸入指令
例如072,對應的開關是這樣的:
就這么一點點地撥動開關進行輸入,可不能出錯,一旦出錯就前功盡棄。
4.查看結果
輸入完成,扳動“運行”開關,然后看看控制面板上的小燈,就知道運行接過是否正確了。
看過《編碼》這本書的同學可能更有感覺,這種辦法和書中說的是類似的。
過程看起來非常繁瑣,但是卻體現了計算機最最本質的:存儲程序。
程序也是數據,通過撥動開關的方式被輸入到計算機內存中,然后逐條開始執行。
0 1
紙帶
撥動開關的編程方式直接操作機器碼,容不得一絲一毫的錯誤,撥動開關的每一次操作必須精確無誤。
任何一次把0撥成了1,或者把1撥成了0,就前功盡棄。
所以極少有程序員這么干,有個更好的替代辦法:紙帶。
程序怎么才能進入紙帶呢?有專門的設備。
例如著名的ASR-33電傳打字機(Teletype),當時售價高達1000美元(相當于現在的10000美元)。
它有一個鍵盤,左邊長長的就是紙帶。
現在,程序員就可以先在紙上匯編程序寫好:
3E 64
C6 C8
76
先在腦子中“調試”一下,沒問題的話再通過ASR-33的鍵盤輸入。
ASR-33就可以轉化成二進制,然后輸出到紙帶上。
同理,ASR-33還可以反向把紙帶中的內容讀出來,輸入計算機執行。
過程很繁瑣,但是已經比撥動開關好太多了。
1975年,比爾·蓋茲和保羅·艾倫為了搶到ALTAIR 8800的生意,通過這種方式,沒日沒夜地干了八周時間,為ALTAIR 8800寫出了第一個Basic解釋器,從此開始了微軟的稱霸之路。
下圖就是存儲Basic解釋器的紙帶
肯·湯普遜和丹尼斯·里奇也是用ASR-33 Teletype來開發Unix的,所以Unix的Terminal 就叫做tty。
0 2
穿孔卡片
紙帶便宜,緊湊,但是非常脆弱,容易損壞。
如果紙帶散落到地上,代碼立刻就變成了一大堆意大利面條,真正的意大利面條,不管它是卷起來的還是折起來的,非常容易被撕破。
更煩人的是紙帶難以編輯,如果程序錯了,需要定位到錯誤位置——這不是一件輕松的事情,畢竟紙帶上一行行全是孔——然后剪斷現有紙帶,拼接新的部分。
換句話說,紙帶像是一個脆弱的“順序存取”的媒介。
很快,大家就更喜歡IBM發明的打孔卡了。
“寫”在打孔卡上的程序,即使是出了錯,也可以輕松地替換掉出錯的那一張或者幾張。
將有錯誤的卡片和一張空白卡片放在打卡機中,DUP 到錯誤處,打出正確的部分,DUP 剩余的,放回去就行了。
所以打孔卡具備一些容易修改的“隨機存取”的性質。
下面這幅圖一共有62500張打孔卡(大小為 5 MB),保存著美國SAGE 軍事計算機網絡的控制程序。
如果打孔卡掉到地上亂了怎么辦?
打孔卡上有序號,只需要把它們撿起來,放在同一個方向(將切掉的一角對齊),放進一個專門的機器(Punched card sorter)排序就行了。
0 3
硬盤
在打孔卡以后,大家又用了磁鼓存儲器,磁帶,最后才發展到硬盤,現在主要是固態存儲了。
編程語言也從機器語言,匯編語言,發展到Fortran、C、 C++、Python、Java、JavaScript等高級語言。
一路走來,程序員現在終于可以坐在電腦前,打開自己喜歡的IDE/編輯器,舒服地編程了。
現在的程序員是幸福的,可以站在一個很高的抽象層次上進行編程創作。
現在的程序員也是不幸的,很多人喪失了了解計算機最底層原理的興趣。
以后有了AI的輔助,程序員可能連代碼都不用寫了,當好一個代碼審查員就行。
想想前輩們撥動開關輸入程序,在紙帶和打孔卡上編程,真是恍如隔世。
最后留個問題:如果現在退回到紙帶和打孔卡時代,你還愿意從事編程這個行業嗎?
近期爆文:
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.