图灵机与编程语言
年前看了一本科普書(shū)籍–《人工智能簡(jiǎn)史》,作者尼克,早年任職哈佛和惠普,后投資創(chuàng)業(yè)。
這本書(shū)描述了兩大人工智能的發(fā)展方向,一派主張擬生物大腦(譬如人工神經(jīng)網(wǎng)絡(luò)),另一派則主張用邏輯和符號(hào)系統(tǒng)(譬如自動(dòng)定理證明)。真正偉大的飛躍以1937年圖靈關(guān)于可計(jì)算數(shù)的開(kāi)創(chuàng)性論文開(kāi)始,奠定了計(jì)算機(jī)發(fā)展的基礎(chǔ)。
圖靈機(jī)是這樣一種裝置:有一條無(wú)限長(zhǎng)的紙帶,紙帶上有無(wú)窮多個(gè)格子;一個(gè)可以移動(dòng)的讀寫(xiě)頭,每次可像制定格子寫(xiě)入0或1(有限狀態(tài)機(jī)沒(méi)有寫(xiě)入操作);一個(gè)有限狀態(tài)機(jī),可以根據(jù)自身的狀態(tài)和當(dāng)前紙帶格子上是0還是1,指示讀寫(xiě)頭向左或向右移動(dòng)一個(gè)格子,以及向當(dāng)前的格子寫(xiě)入內(nèi)容。
幾種計(jì)算裝置(包括哥德?tīng)柕倪f歸函數(shù)、lambda演算、post系統(tǒng))都被證明是和圖靈機(jī)等價(jià)的。這個(gè)圖靈機(jī)本身是可以被編碼的,編碼后作為另一臺(tái)圖靈機(jī)的輸入,那么被編碼的圖靈機(jī)其實(shí)就是我們現(xiàn)在所謂的軟件了,而算法就是指在圖靈機(jī)上運(yùn)行指令的過(guò)程。這一臺(tái)能解釋圖靈機(jī)的圖靈機(jī)稱(chēng)為通用圖靈機(jī),現(xiàn)代計(jì)算機(jī)都是通用圖靈機(jī)。
回顧現(xiàn)在計(jì)算機(jī),CPU都有自己的寄存器保存當(dāng)前執(zhí)行的狀態(tài),通過(guò)對(duì)當(dāng)前指令的翻譯來(lái)知道下一步的讀寫(xiě)操作以及要跳轉(zhuǎn)到哪個(gè)位置,然后進(jìn)入一個(gè)新的狀態(tài)(寄存器集合)。這就是如今廣為傳播的馮諾依曼體系結(jié)構(gòu),可以證明這樣一個(gè)過(guò)程和圖靈的簡(jiǎn)單機(jī)器是等價(jià)的。
后來(lái)科學(xué)家和工程師們?yōu)榱碎_(kāi)發(fā)的方便,發(fā)明了編程語(yǔ)言,以前C語(yǔ)言課老師會(huì)跟我們講一大堆關(guān)于語(yǔ)言的語(yǔ)法,怎么用,然后去做幾個(gè)實(shí)驗(yàn)。但是很少會(huì)講程序語(yǔ)言是怎么來(lái)的,為什么要這么設(shè)計(jì)。其實(shí)編程語(yǔ)言配合編譯器完成的工作就是對(duì)圖靈機(jī)的模擬,我們是在通過(guò)編程語(yǔ)言制造圖靈機(jī)。這個(gè)圖靈機(jī)對(duì)數(shù)據(jù)按照特定方式進(jìn)行處理,即所謂的算法。如果編程語(yǔ)言定義的操作和圖靈機(jī)等價(jià),那么該語(yǔ)言就是圖靈完備的。包括C/C++/Java等常見(jiàn)語(yǔ)言都是圖靈完備語(yǔ)言。
這是計(jì)算機(jī)發(fā)展的理論基礎(chǔ),后來(lái)又去看了《論可計(jì)算數(shù):圖靈與現(xiàn)代計(jì)算的誕生》,該書(shū)把計(jì)算機(jī)發(fā)展的過(guò)程詳細(xì)闡述了一遍,受益頗豐。
總結(jié)
- 上一篇: 黑洞猝灭剂BHQ-2 acid,1214
- 下一篇: Adroid游戏开发实例讲解(五)-哄娃