上古時期程序員在沒有Google的情況下怎樣編程的?
?在計算機剛被發明的初期,那時還沒有互聯網,更不用提IDE、豐富的在線文檔、Google以及Stack Overflow,那時的程序員是怎樣編程的呢?
前幾天看恰好看了國外老哥一篇很有意思的文章講解了這個問題,這里翻譯一下,注意,本文略有改動,以下為正文:
關于上古時期程序員編程這個話題我想我得從頭開始講起,當我開始編程時使用的計算機是這樣的:
是的,你沒有看錯,當時的計算機沒有鍵盤也沒有鼠標,你能看到的只有一些開關和燈,那么你怎么知道該打開或者關閉哪些開關呢?以及它們的含義是什么?你需要參考這本書:
想要這本書的同學直接后臺回復“神器”即可下載pdf版。?
你可能會問沒有鍵盤也沒有鼠標,那么程序寫在哪里呢?很顯然你需要一些樸實無華的介質:
當想用代碼解決某個問題時,你必須手寫匯編代碼,然后純手工在內存中找到存儲數據和代碼的位置,即人工尋址,而且你的內存只有1024字節,這在現代程序員看來簡直不可思議。
這還不算完,寫好代碼后還需要轉為手動轉為十六進制,檢查無誤后輸入到這臺設備運行。
這一時期根本沒有像現代的磁盤一樣的持久存儲設備,當然,除了紙之外,每次運行程序時你都需要手工輸入這個設備,注意,是每一次,不過這個時期很快就過去了,紙帶的時代到來了。
這東西噪聲很大,也不可靠,但比每次純手工輸入好多了,那時打印機以及鍵盤還沒有什么用,然后我自己制作了一個IO卡,接到了這個小東西上面:
可以用磁帶加載以及存儲程序,足足每秒有110比特,簡直神速,不過這個過程依然很痛苦。
后來BASIC讓編寫真正的程序成為可能,磁帶開始真正的存儲程序,在大學里你開始能見到這些東西:
還有很多的這個:
以及很多很多這些書:
需要持久保存的程序開始放在裝滿打孔卡片的盒子里,這一時期你依然不能在機器上寫代碼或者調試代碼,調試代碼需要人肉debug——在你的大腦里運行代碼,而不是在計算機中,改一下代碼到看到運行結果的時間以小時計算。需要的資料多的驚人,在某計算中心有一整間屋子用來存放關于計算機系統方方面面的資料,從地板堆到了天花板。
我個人則有60多本書,涵蓋了一些編程語言的實現細節,還有關于操作系統以及課程所需要的教科書等。
這一時期根本沒有現在的在線社區,最接近Stack Overflow的就是跑到辦公室的公共空地上對所有人喊一聲“誰知道某某某是什么意思”,然后內心期待著沒有人會因為這么簡單的問題嘲笑你。
之后這個東西出現了:
而且能連接到:
更棒的是,這堆由開關組成的東西上運行著:
是的,運行著Unix!
現在你可以把程序保存在計算機上,當你寫代碼時可以在屏幕上看到,而且還能在計算機上實時的編譯和測試,是實!時!的!,這簡直就是程序員的天堂,難怪那時我寫了那么多的代碼。
之后,“互聯網”,好吧還不是現在的這個互聯網,而是USENET出現了,你可以在新聞組以及ARPAnet郵件列表里喊一聲“誰知道某某某是什么意思”,當然你依然會在內心里期待沒有人會因為一個顯而易見的問題來嘲笑你,此時會有一些來自MIT(麻省理工)、或者CMU(卡內基梅隆大學)以及Berkeley(伯克利)的家伙回答你的問題。
這之后計算機革命開始了,我的故事也講完了。?