最早的編譯器是什麼樣子的?計算機語言的怎樣一步步發展的?

每次學習編程的時候總是會想,這xx東西是怎麼弄出來的啊ヽ(#`Д′) 小弟的問題就是,

就計算機這個東西來說,某種語言是如何產生的,是如何「製作」出來的,我知道最初的計算機是用讀孔來接受信息的,那麼又是如何一步步發現到如今這種讓人眼花繚亂的,各種語言並存的盛況的呢?

題 某文理學校計算機專業,認為只有了解計算機的歷史與本質才算是了解這門學科,求各路高手解答(;′??Д??`)


請學習計算機原理

基本上,各種語言的層級是按這個順序起來的(有一部分被簡化了):

電路/半導體

=&>加法操作器/位操作器(通過半導體和通電的針腳改變結果)

=&>單指令操作器(若干個操作器疊加,可執行加減乘除等)

=&>CPU(有PC,寄存器,以及若干個操作器——機器語言被放到對應的操作器執行)

=&>機器碼(二進位編碼,每一條代碼直接對應一條硬體指令)

=&>彙編語言(二進位編碼直接轉寫成可讀格式)

=&>C(用比較結構化的方式表達彙編,並且支持一些高級數據結構比如struct,還有int/char等)

=&>操作系統(將各種硬體調用封裝為API級別的調用,同時提供對進程和線程的支持;語言為C或C++)

=&>原生代碼(使用操作系統API的程序;一般的C++在這個層級)

=&>虛擬機/解釋器(Java和.Net等語言的底層支持;負責內存分配和類型控制等)

=&>強類型高級語言(Java/.Net等在虛擬機上運行的語言;可以分配內存使用硬體等,但一切都是通過底層虛擬機調用的,所以獨立於操作系統本身)

=&>弱類型/動態類型/解釋型語言(JavaScript,Python等)

=&>宏/腳本/Workflow


可以讀csapp這本書


最初紙帶打孔,然後發現不易修改

好像還有用開關的,一排撥動開關排成排,一個代表一個二進位位。

Altair 8800

這是直接操作二進位的時代(好像是)

也就是機器碼

然後發現這個太反人類

所以換成了彙編語言

用上了鍵盤

但用彙編還是很累

所以有了basic

然後就是眾所周知的c了

在之後的語言都是為某些功能而造的了

(全憑印象,有錯請指出,圖來自網路)


推薦閱讀:

硬碟基礎知識科普
如何評價Windows 10計算機管理、設備管理器等系統軟體高DPI下依舊模糊的現象?
筆記本顯卡和台式顯卡能混用嗎?
建一個C++學習群吧

TAG:軟體 | 編程 | 計算機 | 計算機歷史 |