珠算口訣
公元前1100年,人類發(fā)明了算盤,這也許是已知的最早的計算機和編程語言。
算盤占地約0.05平方米,雖然無法上網,但也不耗電。
如果有一只麒麟臂,珠算口訣的編程效率還是比較可觀的,能解決基本的算賬問題。
紙帶打孔
1945年,美國人莫奇利和??颂氐膱F隊研制出世界首臺通用可編程的數字電子計算機,即大名鼎鼎的ENIAC,它是現代電子計算機的先驅。
ENIAC
ENIAC占地面積約167平方米,高2.4米;功耗約150千瓦(75臺空調),重約27噸。
計算速度為每秒5000次加法或385次乘法。
編程方法為紙帶打孔,類似高考選擇題答題卡。
一位女程序員正在編程
ENIAC的第一次測試是計算氫彈相關數據,這次測試的輸入、輸出數據是一百萬張卡片。
看來IBM確實是計算機的鼻祖?。?/p>
磁環(huán)陣列
在二十世紀六十年代的阿波羅登月計劃中,NASA用到了磁環(huán)繩索陣列存儲器(Core rope memory),我稱它為“曬蘿卜”。
磁環(huán)陣列
它首次用于火星探測飛船,隨后應用于阿波羅載人飛船的導航計算機中。
導線穿過磁環(huán),磁環(huán)會改變其電壓,穿過就是“1”,沒穿過就是“0”。
程序一旦編好就無法更改。當然,導航代碼(姿態(tài)解算、位置估計等)在中途也確實沒有修改的必要。
磁環(huán)陣列比紙帶要可靠得多,甚至比磁帶更可靠,因此載人航天選擇了它。
導航計算機Block II版本使用了36864個16bit的“磁環(huán)陣列”,可以想象編制這樣的程序是一件多么浩大的工程。
這堆蘿卜作為飛船的導航程序,引導飛船往返于地球月球之間。
機器語言
在顯示器上編寫機器語言比紙帶打孔或編織磁環(huán)都更方便快捷,但它是隨著磁盤技術進步而來的。
如果沒有磁盤存儲器,二進制就只能用打孔或者磁環(huán)這種類機械的方法實現。
因此,紙帶打孔實質上也是“機器語言”,它是機器語言的一種實現方式。
現在,我們電腦硬盤中所存儲的圖片、電影,都是以“機器語言”的形式存儲的,只不過不再是打孔或磁環(huán),而是“電”信號或“磁”信號。
機器語言就是直接寫二進制或十六進制數:
MIPS架構下“跳轉到地址1024”的機器碼
咱還是不要寫機器碼了,有點怕。
匯編語言
匯編語言比機器語言更貼近人類的認知習慣,用相應的“助記符”表示相應的操作。
在不同的設備中,匯編語言對應著不同的機器語言指令,除非巧合,一般不通用。
比如,X86架構下,將立即數01100001加載入AL寄存器的機器代碼是:
10110000 01100001
轉換為十六進制為:
B0 61
匯編代碼為:
MOV AL, 61h
你看,匯編語言大大減輕了程序員讀寫程序的壓力。
高級語言
隨后出現的高級語言,在匯編語言的基礎上進一步封裝,更加符合人類的閱讀、思考習慣。
比如,在C語言中,上面的匯編代碼可以用如下的C代碼實現:
AL = 0x61;
是不是輕松加愉快!
那么,你在使用哪種語言,又更喜歡哪種語言呢?說說你對編程語言演進的感受唄。