電腦科學和Python程式設計導論(一) 計算機相關理論

Datawhale發表於2018-07-16

基本概念

1. 計算機基礎知識

陳述性知識:關於事實的描述。如果滿足y × y = x,那麼x的平方根就是數值y。

程式性知識:說明“如何做”,描述的是資訊演繹的過程。

演算法:是一個有窮指令序列,它在給定的輸入集合中執行時,會按照一系列定義明確的狀態進行,並最終產生一個輸出結果。

直譯器:可以執行任意合法指令集的程式(這樣計算機就能夠計算任何可以使用基本指令集描述的問題。)

計算機的功能:執行計算與儲存計算結果,操作的程式和資料都儲存在記憶體中。通常都有一個程式計數器指向記憶體中的特定位置,通過執行這個位置上的指令,計算過程得以開始。

控制流:直譯器執行一個測試,然後根據測試結果可能跳到指令序列的其他位置繼續執行。

通用圖靈機:這種機器具有無限的儲存容量,即一條無限長的紙帶。可以在紙帶上面寫入0和1,以及一些非常簡單的初始指令,從而對紙帶進行移動、讀出和寫入等操作。

邱奇-圖靈論題:如果一個函式是可計算的,那麼一定可以通過對圖靈機進行程式設計實現這種計算。邱奇-圖靈論題中的“如果”非常重要,並非所有問題都可以通過計算求解。

停機問題:不存在這樣一個程式:對於給定的任意程式P,當且僅當P永遠執行時輸出true。

圖靈完備:邱奇-圖靈論題可以直接推匯出圖靈完備性這個概念。如果一門程式語言可以模擬通用圖靈機,才可以說它是圖靈完備的。

程式設計基本思想的核心:簡單來說,就是組裝操作序列的過程

2. 程式語言的組成

基本結構:Python語言中的基本結構包括字面量(例如,數值3.2和字串’abc’)和中綴操作符(例如,+和/)。

語法:語言中的語法定義了字元和符號組成句子的正確形式。如,在Python中,3.2 + 3.2這樣的基本結構序列在語法上是良好的,但3.2 3.2這個序列則不是。(語法錯誤是最常見的錯誤,但因為更容易檢查出來它的危害性卻最小)

靜態語義:定義了哪些語法有效的句子是有意義的。在Python中,序列3.2/’abc’在語法上沒有問題(<字面量><操作符><字面量>),但會產生一個靜態語義錯誤,因為數值除以字串是沒有意義的。(Python在執行程式時確實會做相當數量的靜態語義檢查,但不會捕獲所有靜態語義錯誤。)

語義:為每個語法正確又沒有靜態語義錯誤的句子關聯一個含義。在自然語言中,句子的語義可以是模稜兩可的。例如,句子I cannot praise this student too highly可以是一種恭維,也可以是一種批評。(當程式可以執行,但結果未必如程式設計師所願時,這樣不可知的錯誤往往最致命。)

相關文章