首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> 關於C

斯坦福 CS107 編程範式課程筆記(一):從 C 到 Python 的思維演進

     編輯:關於C

課程概覽

斯坦福大學開放課程 CS107: Programming Paradigms 由 Jerry Cain 教授主講,系統介紹主流程式語言背後的計算模型與設計哲學。本筆記整理第一講核心內容。

五大編程範式與代表語言

範式代表語言核心特徵
命令式 / 程序式C, Assembly函數呼叫鏈、指標操作、手動記憶體管理
物件導向C++封裝、繼承、多型、`this` 指標/引用語意
並行程式設計C/C++ (pthreads, OpenMP)執行緒、鎖、事務、交替執行模擬並行
函數式Scheme (LISP 方言)無副作用、遞迴、高階函數、惰性求值
腳本/動態語言Python解譯執行、動態型別、豐富標準庫、快速原型開發

核心觀點筆記

1. C:程序式思維的極致

  • 「一切皆函數呼叫」:`main → A → B → C` 形成呼叫堆疊。
  • 指標是核心抽象:`&p->i = 7` 等複雜表達式直映射記憶體操作。
  • 掌握底層編譯流程(C → Assembly → Object → Executable)是成為資深工程師的關鍵。

2. C++:在 C 基礎上建構物件模型

  • 語法糖:`obj->method()` 本質仍是 `method(&obj, ...)`。
  • 「C++ 去掉 OO 就是 C」—— 許多資深工程師偏好 C 的簡潔與可控性。

3. 並行 ≠ 真正同時執行

  • 單核 CPU 透過時間片輪轉模擬並行,高頻切換產生「同時」假象。
  • 核心挑戰:共享資源同步。經典例子:ATM 同時提款,餘額 100 元,必須序列化扣款操作(事務)。
  • 應用領域:網路伺服器、高效能運算、GUI 回應性。

4. Scheme:函數式思維的啟蒙

  • 「程式即資料,資料即程式」—— S-expression 同構性。
  • 無副作用:函數僅依賴輸入產出輸出,天然適合並行與推理。
  • 老師原話:「比其他語言都有意思」,強烈建議嘗試。

5. Python:工程實用主義的集大成者

  • Google、Facebook 大量採用於後端服務、資料處理、機器學習。
  • 「電池內含」:標準庫覆蓋網路、檔案、資料庫、文字處理等。
  • 課程大作業:從零打造 HTTP 伺服器,解析 XML/HTML、模板引擎、動態頁面生成。
  • 支援多範式:OO、函數式(`map`/`filter`/`lambda`)、程序式自由切換。

課程安排與心法

  • 前半段:深入 C/C++ 編譯鏈、指標算術、記憶體佈局、呼叫慣例——「讓你知道崩潰時為什麼崩潰」。
  • 後半段:Scheme 函數式核心、Python 實戰專案、其他範式巡禮。
  • 老師豪語:「你們未來 15 年會遇到的範式,我都見過。」

給讀者的建議

  1. 親手追蹤一個 C 程式從原始碼到二進位的完整編譯過程(`gcc -S`、`objdump`)。
  2. 用 Scheme 寫一個遞迴解譯器,體會「代碼即資料」。
  3. 用 Python 實作一個簡易 Web 框架,理解 WSGI、路由、中間件機制。
  4. 不盲目追捧設計模式,**先理解底層機制**,模式自然浮現。

結語

CS107 不只是教語法,更是重塑「如何思考計算」。從指標算術到 Lambda 演算,從手動 `malloc` 到垃圾回收,跨越範式的旅程,正是從碼農到工程師的蛻變之路。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved