2. 為什么所有編程語言都是數(shù)據(jù)+指令?

- 所有編程語言的共同點:指令+數(shù)據(jù)
- 數(shù)據(jù):對數(shù)據(jù)的定義和讀取,像是變量、常量或是數(shù)組這樣的數(shù)據(jù)結(jié)構(gòu)
- 指令:對數(shù)據(jù)進行處理。像是加減乘除,還有判斷語句、循環(huán)語句等等
- 當然剩下的還有像是函數(shù)、類、對象。也就是對數(shù)據(jù)和程序進行了封裝而已。
- 只要學會一門編程語言,學其他也都是這些東西
- 為什么會這樣?圖靈機是源頭
- #t 自然語言中英語、德語、法語特別相似的語言,是因為都源自印歐語系/雅利安人
- #d 圖靈機的組成:
- 無線長的紙帶(內(nèi)存+數(shù)據(jù))和進行讀寫的讀寫頭(CPU)
- 另外還有一個表格規(guī)定讀寫頭的操作(指令)和記錄讀寫頭當前狀態(tài)的儲存器(寄存器)
- 現(xiàn)代計算機把數(shù)據(jù)指令都存到內(nèi)存里了(馮諾依曼體系)
- 所以就是圖靈機,決定了現(xiàn)代計算機硬件,然后決定了編程語言
- 圖靈機是通用計算機的唯一選擇嗎?
- 不是,圖靈機誕生的時代,也有很多其他的方案。
- 圖靈機并不完美:因為哥德爾不完備性定理,導致完備的系統(tǒng)是不可能存在的,所以完美的通用計算機方案是不能實現(xiàn)的;
- 圖靈機之所以勝出是因為這個方案太直觀了,直觀到把他交給一個工程師就能給做出來。雖然完美的方案不可能存在了,但是一個不那么完美的方案也可以用。
- 其他方案還有:lambda演算法(函數(shù)式編程),原細胞自動機,遞歸,面向?qū)ο?,但和圖靈機都是等價的,可以用圖靈機進行模擬(圖靈完備)
- 未來是什么?遐想 -- 未來圖靈完備是可以超越的嗎?比如真隨機這種事情,圖靈機做不到,但是存在與現(xiàn)實中,所以有希望超越圖靈機的系統(tǒng),應(yīng)該是存在的,可能是:宇宙,大腦,量子計算機。
- 哥德爾定理:
- 起源:一個可以描述萬事萬物的完備方案是不是真的存在呢?在 20 世紀初的時候,就有一批數(shù)學家里的理想主義者,他們就希望構(gòu)建出這樣一個系統(tǒng)來。只要有了這個系統(tǒng),那么宇宙中任何可能出現(xiàn)的數(shù)學問題都可以在這個系統(tǒng)里面被自動地解決掉,從而現(xiàn)實中的問題也都可以被解決掉
- 哥德爾直接從數(shù)學上就給證明了那些數(shù)學家們,他們所希望的完備的系統(tǒng)是不可能存在的,因為這樣的系統(tǒng)必然存在自我指射的問題。
- 圖靈機是用一種更形象的的方式來描述了哥德爾定理,其中停機問題(自我指涉)就解決不了
------------------------------------------------------------
筆記已整合進個人知識體系,歡迎訪問 [編程語言思考](http://wangc.site/cbrain/share?nodeid=1c3092379d319bb5)
標簽: