程式語言發展歷程:阿波羅飛船爲何使用磁環陣列

珠算口訣

公元前1100年,人類發明了算盤,這也許是已知的最早的計算機和編程語言

編程語言發展歷程:阿波羅飛船為何使用磁環陣列

算盤佔地約0.05平方米,雖然無法上網,但也不耗電。

如果有一隻麒麟臂,珠算口訣的編程效率還是比較可觀的,能解決基本的算賬問題。

紙帶打孔

1945年,美國人莫奇利和埃克特的團隊研製出世界首臺通用可編程的數字電子計算機,即大名鼎鼎的ENIAC,它是現代電子計算機的先驅。

編程語言發展歷程:阿波羅飛船為何使用磁環陣列

ENIAC

ENIAC佔地面積約167平方米,高2.4米;功耗約150千瓦(75臺空調),重約27噸。

計算速度為每秒5000次加法或385次乘法。

編程方法為紙帶打孔,類似高考選擇題答題卡。

編程語言發展歷程:阿波羅飛船為何使用磁環陣列

一位女程序員正在編程

ENIAC的第一次測試是計算氫彈相關數據,這次測試的輸入、輸出數據是一百萬張卡片。

編程語言發展歷程:阿波羅飛船為何使用磁環陣列

1928年IBM發明的80列矩形孔卡片

看來IBM確實是計算機的鼻祖啊!

磁環陣列

在二十世紀六十年代的阿波羅登月計劃中,NASA用到了

磁環繩索陣列存儲器(Core rope memory),我稱它為“曬蘿蔔”。

編程語言發展歷程:阿波羅飛船為何使用磁環陣列

磁環陣列

它首次用於火星探測飛船,隨後應用於阿波羅載人飛船的導航計算機中。

導線穿過磁環,磁環會改變其電壓,穿過就是“1”,沒穿過就是“0”。

程序一旦編好就無法更改。當然,導航代碼(姿態解算、位置估計等)在中途也確實沒有修改的必要。

磁環陣列比紙帶要可靠得多,甚至比磁帶更可靠,因此載人航天選擇了它。

導航計算機Block II版本使用了36864個16bit的“磁環陣列”,可以想象編制這樣的程序是一件多麼浩大的工程。

這堆蘿蔔作為飛船的導航程序,引導飛船往返於地球月球之間。

機器語言

在顯示器上編寫機器語言比紙帶打孔或編織磁環都更方便快捷,但它是隨著磁盤技術進步而來的。

如果沒有磁盤存儲器,二進制就只能用打孔或者磁環這種類機械的方法實現。

因此,紙帶打孔實質上也是“機器語言”,它是機器語言的一種實現方式。

現在,我們電腦硬盤中所存儲的圖片、電影,都是以“機器語言”的形式存儲的,只不過不再是打孔或磁環,而是“電”信號或“磁”信號。

機器語言就是直接寫二進制或十六進制數:

編程語言發展歷程:阿波羅飛船為何使用磁環陣列

MIPS架構下“跳轉到地址1024”的機器碼

咱還是不要寫機器碼了,有點怕。

彙編語言

彙編語言比機器語言更貼近人類的認知習慣,用相應的“助記符”表示相應的操作。

在不同的設備中,彙編語言對應著不同的機器語言指令,除非巧合,一般不通用。

比如,X86架構下,將立即數01100001加載入AL寄存器的機器代碼是:

10110000 01100001

轉換為十六進制為:

B0 61

彙編代碼為:

MOV AL, 61h

你看,彙編語言大大減輕了程序員讀寫程序的壓力。

高級語言

隨後出現的高級語言,在彙編語言的基礎上進一步封裝,更加符合人類的閱讀、思考習慣。

比如,在C語言中,上面的彙編代碼可以用如下的C代碼實現:

AL = 0x61;

是不是輕鬆加愉快!

那麼,你在使用哪種語言,又更喜歡哪種語言呢?說說你對編程語言演進的感受唄。


{!-- PGC_COLUMN_CARD:{"thumb_url":"http://p6.pstatp.com/large/933100051649d14c6380","title":"傅里葉、拉普拉斯變換和信號系統","author_description":"王珂-用科學點亮興趣,這裡是珂學原理。","price":18.8,"sold":261,"column_id":"1605703366379528"} --}

{!-- PGC_COLUMN_CARD:{"thumb_url":"http://p4.pstatp.com/large/a14d00021d8351d6b310","title":"卷積精講","author_description":"王珂-用科學點亮興趣,這裡是珂學原理。","price":4.99,"sold":47,"column_id":"1609862039691341"} --}


分享到:


相關文章: