主題: 學習筆記

Python 電腦科學與程式設計導論 第一講:簡介

MIT OpenCourseWare 6.100L 第一講筆記:計算思維、Python 基本物件、運算式、變數與良好程式風格。

歡迎來到計算機科學的世界!這篇文章整理自 MIT 6.100L 的第一講。這門課的核心目標不只是學習 Python 語言,更重要的是培養計算思維 (Computational Thinking),讓你在面對問題時,能思考如何利用計算力來輔助解決問題。

1. 知識的兩種形式:宣告式 vs. 指令式

在進入程式碼之前,我們必須區分兩種知識:

  • 宣告式知識 (Declarative knowledge):是對事實的陳述。例如:「x 的平方根是 y,滿足 y⋅y=x」。這告訴我們結果是什麼,但沒說怎麼得到它。
  • 指令式知識 (Imperative knowledge):是一套「食譜」或具體的步驟,告訴你如何去做。

程式設計的本質,就是為電腦撰寫一系列的指令(食譜),以產生事實。

什麼是演算法 (Algorithm)?

演算法就是一個詳細的指令序列,它包含:

  1. 一組簡單的步驟。
  2. 控制流程 (Flow of control):指定每一步執行的時機。
  3. 停止基準:確定何時結束運算。

2. 電腦的真面目與 Turing 的啟示

許多人以為電腦很聰明,但實際上電腦其實很笨。它們不會自己做決定,只能精確執行人類給出的指令。電腦的強項在於其極速的運算能力與龐大的儲存空間。

艾倫·圖靈 (Alan Turing) 與六種原始指令

早在多年前,艾倫·圖靈就證明了只要透過極其基礎的六種指令(原始指令),就能計算出任何可計算的問題。這六種指令包括:

  • 將帶子左移 (Move left)
  • 將帶子右移 (Move right)
  • 掃描/讀取帶子上的值 (Read/Scan)
  • 在帶子上寫入值 (Write/Print)
  • 抹除值 (Erase)
  • 無動作 (No operation)

這帶出了一個強大的觀念:在一種程式語言中可計算的任何事物,在任何其他程式語言中也都可以計算。

3. Python 語言的三個層次

學習程式語言可以從三個層次來看:

  1. 語法 (Syntax):決定哪些符號組合是合法的。
  2. 靜態語義 (Static Semantics):決定合法的語法是否有意義。例如 "hi" + 5 語法正確,但在 Python 中會產生錯誤。
  3. 語義 (Semantics):這代表程式真正的意圖。在 Python 中,一段正確的程式碼只有一種意義,但這可能不是程式員原本想要的意圖,這就是導致「臭蟲 (Bug)」的原因。

4. Python 的基本物件與類型

在 Python 中,程式主要是在操作物件 (Objects)。每個物件都有一個類型 (Type),決定了你可以對它執行哪些操作。

純量物件 (Scalar Objects)

  • int:整數(如 5, -100)。
  • float:實數/浮點數(如 3.27, 2.0)。
  • bool:布林值(True 和 False)。
  • NoneType:只有一個特殊值 None。

型別轉換 (Casting)

你可以強制轉換型別,例如 float(3) 會變成 3.0。而 int(3.9) 則會直接截斷 (Truncate) 小數部分變成 3,而非四捨五入。

5. 表達式與變數賦值

表達式 (Expressions)

表達式由物件和運算子組成。Python 會計算表達式的值並儲存結果,而不是儲存表達式本身。其中 / 運算的結果永遠是浮點數(float)。

變數賦值 (Variables & Assignment)

在計算機科學中,等號 = 是賦值 (Assignment),而非數學上的相等。

  • 賦值步驟:先計算右側表達式的值,再將結果綁定 (Bind) 到左側的變數。
  • 執行順序:程式是逐行執行的。如果你改變了計算基礎(如半徑),但沒有重新執行計算公式,結果(如面積)並不會自動更新。

6. 良好的程式風格

  • 選擇具描述性的名稱:使用 radius 而非單一字母 r
  • 善用註解 (Comments):以 # 開頭,用來向讀者解釋程式碼的邏輯或意圖。

外部參考連結

以下連結可幫助您深入了解課程內容與相關科學背景:

Turing 機器與計算理論說明

課程官方資源

Python 學習工具


比喻理解: 電腦就像一個動作極快、記憶力超群,但完全沒有常識的廚師。你必須精確地告訴它每一個步驟(如:先打蛋再攪拌),它才能幫你做出完美的佳餚。