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

斯坦福大學開放課程《編程範式》學習筆記(一):語言概覽與 C/C++ 編譯模型

     編輯:關於C語言

課程簡介

斯坦福 CS107《編程範式》由 Jerry Cain 教授講授,涵蓋 C、C++、並行編程、Scheme、Python 等多種語言與範式,深入講解編譯、內存模型、指標運算、協程/執行緒、函數式編程、動態語言特性等核心主題。本筆記記錄 Lesson 1 重點。

主要編程範式與代表語言

範式代表語言核心特徵
命令式/過程式C, Assembly函數調用函數,強調執行步驟序列
物件導向C++封裝、繼承、多態,透過 ./-> 訪問成員
並行編程C/C++ (pthreads, OpenMP)邏輯並行,實際分時交替,核心同步機制
函數式Scheme (LISP 方言)無副作用、函數為一等公民、遞迴為主
動態/腳本Python解釋執行、動態類型、豐富庫、適合快速開發

C 與 C++ 的本質區別

  • C:面向過程。核心單元是函數,main 調用 A,A 調用 B……形成調用鏈。指標是核心抽象,手動管理內存。
  • C++:面向物件。核心單元是物件(類實例),透過 obj.method() 或 ptr->method() 發送訊息。C++ 去除 OO 特性後本質是 C,底層編譯產物(二進制)高度相似。

編譯流程深度剖析(課程重點)

  1. 原始碼 → 預處理:展開宏、包含頭文件、條件編譯。
  2. → 編譯器:語法分析、語義分析、生成中間表示(IR)、優化、輸出組合語言(.s)。
  3. → 組譯器:組合語言 → 機器碼(.o 目標檔),含符號表、重定位表。
  4. → 連結器:合併多個 .o、解析符號引用、鏈接庫、生成可執行檔(ELF/PE)。

課程將詳細講解 C/C++ 如何編譯為組合語言、指標運算的底層實現、obj 檔結構、連結過程。理解這些能讓你在程式崩潰時從機器碼層面診斷根因,而非盲目猜測。

並行編程本質

  • 單核 CPU 透過時間片輪轉實現「邏輯並行」,極高切換頻率讓用戶感知為同時執行。
  • 核心挑戰:共享資源同步(鎖、信號量、條件變數)、臨界區保護、死鎖避免。
  • 典型場景:網路伺服器並發連線處理、GUI 事件迴圈與後台任務分離、資料庫事務隔離(ATM 轉帳例)。

Scheme:函數式編程入門

  • 源自 LISP,純函數式:無可變狀態、函數無副作用、遞迴替代迴圈。
  • 優勢:並行天然安全、推理簡單、高階函數靈活組合。
  • 課程評價:「比其他語言都要有意思」,適合拓寬程式思維。

Python:現代動態語言代表

  • 年輕(~16 年歷史),Google/Facebook 大量採用。
  • 特性:解釋執行、REPL 互動、動態類型、垃圾回收、豐富標準庫/三方包(requests, Django, NumPy)。
  • 適用:網路爬蟲、Web 後端、資料科學、自動化腳本、教學。
  • 課程大作業:從零寫一個 HTTP 伺服器,支援解析 XML/HTML、動態生成頁面、後端資料庫交互。

課程節奏與預期收穫

  • 第一講 ~17 分鐘,概覽全景。
  • 後續將發放大量講義,布置 C/C++ 指標底層原理研究報告。
  • 目標:成為「高級 C/C++ 工程師」,具備跨範式解決問題的能力。
  • 教師自信:「你們未來 15 年遇到的編程範式,我都見過。」

結語

Lesson 1 為全課程奠定了「多語言、多範式、深底層」的基調。C/C++ 編譯模型與指標運算是核心難點亦是核心價值;Scheme 拓寬函數式視野;Python 展示現代生產力工具。建議配合講義與作業,動手實作編譯器前端片段、簡易執行緒庫、Scheme 解釋器、迷你 Web 框架,方能真正內化知識。

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