很久以前,在電子計算機誕生之前,計算機這個角色是由(女)人來扮演的。大多數計算都是由人類女性手工完成的,這些女人被稱之為「computers」。
在之後是真空管。這些真空管有一個有趣的特性:用三個針腳可以控制真空管兩端節點的電流。這使得真空管在處理模擬訊號方面是可行的,真空管可以控制機器和傳輸模擬訊號。
數學家已經意識到,如果能夠使用布林運算,理論上就可以建立執行這些運算的機器。
然後,人們使用這種理論構建了一些機械式計算機,但是由於機械計算機的速度太慢而且成本高昂,所以沒有真正的應用。
在這之後,人們意識到,真空管可以當做門,來執行布林運算。電子計算機變得可行,而這樣就開始了電腦的時代。
現在,電子門的工作方式是由開關驅動。假設你在一個電路中連線一堆門,你當然也可以新增一些門,於是乎你得到一個加法器。每個加法器有一堆開關代表著將要新增的第一個數字,另一對開關代表著要新增第二個數字。開啟某些開關,並關閉其他開關以輸入兩個數字,輸出將顯示兩個數字的總和[1]。
原始 CPU 就是許多這樣的電路的集合。
每個電路需要一些二進位制的輸入,透過二進位制指令程式碼來選擇要啟用的電路。在早期,人們透過切換開關來操作。
因此,早期的計算機透過翻轉開關進行程式設計。
請注意,此時計算機已開始程式設計,但沒有出現程式語言。
順便說一下,在操作那些開關的人都是被稱為「computer」的女人。所以,這些女人都是最最最最早的程式設計師。
接下來是固態電晶體,其提供與真空管相同的功能,但它們更小,更便宜並且持續更長時間。所以電腦變得越來越便宜,越來越廣泛。
由於操作員(程式設計師)不得不坐在終端前,開啟閉合開關,非常不方便,所以後來又發明出了穿孔打卡的方式,能夠更簡單方便地切換開關。
所以,打孔的卡上面有很多排線,每條線都有可以打的孔。這些線和開關相互匹配。
現在開始,不在天天操作那些乏味的開關了,改為程式設計師們去打孔了。
每一條線都代表著不同的指令。有個機器,可以連線到計算機讀取這些指令。
就這樣,我們可以在打孔卡上面寫程式啦。這減少了相當多的工作,寫一個卡片能使用相當久,也避免了重複造輪子。
因此,當程式設計師開始在卡片上寫這些程式時,人們開始構建程式庫(libraries)。隨著時間的推移,大部分的程式漸漸的有了一些規則手冊來指導編寫。雖然比之前手動開關方便了太多,但還是很繁瑣。
這時候,天才格雷斯·霍珀(Grace Hopper)姐姐,想出了一個很棒的點子。
她的想法是革命性的飛躍。
她最大的貢獻是發明了世界上第一個編譯器 (Compiler),名字叫做 A-0。當時是沒有任何組合語言及程式語言存在的,所有的程式設計人員都要把程式翻譯成機器碼,01101010110 這樣的形式,在紙上打孔,再送到機器裡去讀。
Grace 產生了一種想法,她想設計一種程式,讓人可以用類似英文的語法,把想做的事寫下來,然後用這個程式把英文翻譯成機器的語法,交給機器去執行。這個想法就是今日的 Compiler (編譯器)。
A-0 的原理是:編譯程式把穿孔卡載入到計算機中。然後編寫的程式將被送入計算機。計算機會吐出另一組包含機器程式碼的卡片。第二組卡片將被裝入計算機,計算機就可以執行這段新的程式了。
再說個趣事,知道為什麼叫做「編譯」麼?正常來說,應該叫做翻譯吧?正常來說,compiling 這個詞意味著有序的放置收藏,例如編譯音樂集。但是編譯和二進位制程式碼有什麼關係呢?
因為啊,Grace 姐姐把它描述為收集子程式的機器程式碼[2],邏輯上類似於你編譯音樂收藏。
程式語言因為編譯器而迎來了曙光。雖然只是科技史上的一小步,但是真的是革命性的,改變了人類對於程式設計的思考方式。它創造了抽象的思維方式。這意味著他們可以在更高的層次上思考。這改變了人們對如何編寫程式的想法。
A-0 編譯器是大量程式語言的開始,大多數現代程式語言都可以追溯到 A-0。
這是程式語言的始祖。
參考:
很久以前,在電子計算機誕生之前,計算機這個角色是由(女)人來扮演的。大多數計算都是由人類女性手工完成的,這些女人被稱之為「computers」。
在之後是真空管。這些真空管有一個有趣的特性:用三個針腳可以控制真空管兩端節點的電流。這使得真空管在處理模擬訊號方面是可行的,真空管可以控制機器和傳輸模擬訊號。
數學家已經意識到,如果能夠使用布林運算,理論上就可以建立執行這些運算的機器。
然後,人們使用這種理論構建了一些機械式計算機,但是由於機械計算機的速度太慢而且成本高昂,所以沒有真正的應用。
在這之後,人們意識到,真空管可以當做門,來執行布林運算。電子計算機變得可行,而這樣就開始了電腦的時代。
現在,電子門的工作方式是由開關驅動。假設你在一個電路中連線一堆門,你當然也可以新增一些門,於是乎你得到一個加法器。每個加法器有一堆開關代表著將要新增的第一個數字,另一對開關代表著要新增第二個數字。開啟某些開關,並關閉其他開關以輸入兩個數字,輸出將顯示兩個數字的總和[1]。
原始 CPU 就是許多這樣的電路的集合。
每個電路需要一些二進位制的輸入,透過二進位制指令程式碼來選擇要啟用的電路。在早期,人們透過切換開關來操作。
因此,早期的計算機透過翻轉開關進行程式設計。
請注意,此時計算機已開始程式設計,但沒有出現程式語言。
順便說一下,在操作那些開關的人都是被稱為「computer」的女人。所以,這些女人都是最最最最早的程式設計師。
接下來是固態電晶體,其提供與真空管相同的功能,但它們更小,更便宜並且持續更長時間。所以電腦變得越來越便宜,越來越廣泛。
由於操作員(程式設計師)不得不坐在終端前,開啟閉合開關,非常不方便,所以後來又發明出了穿孔打卡的方式,能夠更簡單方便地切換開關。
所以,打孔的卡上面有很多排線,每條線都有可以打的孔。這些線和開關相互匹配。
現在開始,不在天天操作那些乏味的開關了,改為程式設計師們去打孔了。
每一條線都代表著不同的指令。有個機器,可以連線到計算機讀取這些指令。
就這樣,我們可以在打孔卡上面寫程式啦。這減少了相當多的工作,寫一個卡片能使用相當久,也避免了重複造輪子。
因此,當程式設計師開始在卡片上寫這些程式時,人們開始構建程式庫(libraries)。隨著時間的推移,大部分的程式漸漸的有了一些規則手冊來指導編寫。雖然比之前手動開關方便了太多,但還是很繁瑣。
這時候,天才格雷斯·霍珀(Grace Hopper)姐姐,想出了一個很棒的點子。
她的想法是革命性的飛躍。
她最大的貢獻是發明了世界上第一個編譯器 (Compiler),名字叫做 A-0。當時是沒有任何組合語言及程式語言存在的,所有的程式設計人員都要把程式翻譯成機器碼,01101010110 這樣的形式,在紙上打孔,再送到機器裡去讀。
Grace 產生了一種想法,她想設計一種程式,讓人可以用類似英文的語法,把想做的事寫下來,然後用這個程式把英文翻譯成機器的語法,交給機器去執行。這個想法就是今日的 Compiler (編譯器)。
A-0 的原理是:編譯程式把穿孔卡載入到計算機中。然後編寫的程式將被送入計算機。計算機會吐出另一組包含機器程式碼的卡片。第二組卡片將被裝入計算機,計算機就可以執行這段新的程式了。
再說個趣事,知道為什麼叫做「編譯」麼?正常來說,應該叫做翻譯吧?正常來說,compiling 這個詞意味著有序的放置收藏,例如編譯音樂集。但是編譯和二進位制程式碼有什麼關係呢?
因為啊,Grace 姐姐把它描述為收集子程式的機器程式碼[2],邏輯上類似於你編譯音樂收藏。
程式語言因為編譯器而迎來了曙光。雖然只是科技史上的一小步,但是真的是革命性的,改變了人類對於程式設計的思考方式。它創造了抽象的思維方式。這意味著他們可以在更高的層次上思考。這改變了人們對如何編寫程式的想法。
A-0 編譯器是大量程式語言的開始,大多數現代程式語言都可以追溯到 A-0。
這是程式語言的始祖。
參考:
知乎專欄「極光日報」,每天為 Makers 導讀三篇優質英文文章。