圖靈姬編程
㈠ 編程是什麼,軟體是什麼
編程是什麼:
先了解兩個概念「圖靈機」和「馮·諾依曼機 」
「圖靈機被公認為現代計算機的原型,這台機器可以讀入一系列的零和一,這些數字代表了解決某一問題所需要的步驟,按這個步驟走下去,就可以解決某一特定的問題。這種觀念在當時是具有革命性意義的,因為即使在50年代的時候,大部分的計算機還只能解決某一特定問題,不是通用的,而圖靈機從理論上卻是通用機。在圖靈看來,這台機器只用保留一些最簡單的指令,一個復雜的工作只用把它分解為這幾個最簡單的操作就可以實現了,在當時他能夠具有這樣的思想確實是很了不起的。他相信有一個演算法可以解決大部分問題,而困難的部分則是如何確定最簡單的指令集,怎麼樣的指令集才是最少的,而且又能頂用,還有一個難點是如何將復雜問題分解為這些指令的問題。 」
上面提到的一系列0和1 就是程序的最早原型,而將實際問題分解為這寫01指令的過程就是編程。
「諾依曼提出了在計算機中採用二進制演算法和設置內存貯器的理論,並明確規定了電子計算機必須由運算器、控制器、存貯器、輸入設備和輸出設備等五大部分構成的基本結構形式。他認為,計算機採用二進制演算法和內存貯器後,指令和數據便可以一起存放在存貯器中,並可作同樣處理,這樣,不僅可以使計算機的結構大大簡化,而且為實現運算控制自動化和提高運算速度提供了良好的條件。」
上面提到的存放在存貯器中的指令和數據的集合就是軟體,他是相對於硬體比如顯示器,主機,鍵盤等看得見的東西而言的。
早期的編程實際上就是在不同的機器上,使用不同的編程語言,將實際問題轉化為一系列計算機指令。
後來軟體要解決的問題規模原來越來越大,就出現了軟體工程和越來越高級的語言,編程也就叫做軟體開發了,但本質基本不變。
㈡ 什麼是圖靈完備的編程語言
一切可計算的問題都能計算,這樣的虛擬機或者編程語言就叫圖靈完備的。
一個能計算出每個圖靈可計算函數(Turing-computable function)的計算系統被稱為圖靈完備的。一個語言是圖靈完備的,意味著該語言的計算能力與一個通用圖靈機 (Universal Turing Machine)相當,這也是現代計算機語言所能擁有的最高能力。
圖靈完備是什麼意思呢?
在可計算理論中,當一組數據操作的規則(一組指令集,編程語言,或者元胞自動機)滿足任意數據按照一定的順序可以計算出結果,被稱為圖靈完備(turing complete)。一個有圖靈完備指令集的設備被定義為通用計算機。如果是圖靈完備的,它(計算機設備)有能力執行條件跳轉(「if」 和 「goto」語句)以及改變內存數據。 如果某個東西展現出了圖靈完備,它就有能力表現出可以模擬原始計算機,而即使最簡單的計算機也能模擬出最復雜的計算機。所有的通用編程語言和現代計算機的指令集都是圖靈完備的(C++ template就是圖靈完備的),都能解決內存有限的問題。圖靈完備的機器都被定義有無限內存,但是機器指令集卻通常定義為只工作在特定的,有限數量的RAM上。