{"allowContribute":false,"item":{"activeCommit":"1cd4c50f2ef66e8436a7244ed33b8b92197abe3b","apis":{"routes":[],"types":{}},"backendSchedules":null,"bundleHash":"c02811100d6aea01","createdAt":1787724020783,"displayName":"研究部控制台","gitCommit":"1cd4c50f2ef66e8436a7244ed33b8b92197abe3b","id":"30494b3b7ed927b5b8f99d74","isPublic":true,"itemType":"PLUGIN","name":"研究部控制台","pluginDir":"30494b3b7ed927b5b8f99d74","repositoryID":"repo_a6536f407b7810896a1c609a","status":"active","updatedAt":1788143589019,"updatedBy":{"userId":"6a8cf1cf024de832ca4e41","userName":"Rechine"},"version":18},"ownerMemberId":"6a8cf1cf024de832ca4e41","ownerName":"Rechine","publicPlugins":{"PLUGIN":{"pluginItemId":"30494b3b7ed927b5b8f99d74","pluginDir":"30494b3b7ed927b5b8f99d74","bundleHash":"c02811100d6aea01","live":true}},"subtree":[{"activeCommit":"1cd4c50f2ef66e8436a7244ed33b8b92197abe3b","apis":{"routes":[],"types":{}},"backendSchedules":null,"bundleHash":"c02811100d6aea01","createdAt":1787724020783,"displayName":"研究部控制台","gitCommit":"1cd4c50f2ef66e8436a7244ed33b8b92197abe3b","id":"30494b3b7ed927b5b8f99d74","isPublic":true,"itemType":"PLUGIN","name":"研究部控制台","pluginDir":"30494b3b7ed927b5b8f99d74","repositoryID":"repo_a6536f407b7810896a1c609a","status":"active","updatedAt":1788143589019,"updatedBy":{"userId":"6a8cf1cf024de832ca4e41","userName":"Rechine"},"version":18},{"createdAt":1787724024421,"deletedAt":null,"id":"default_research_kb_folder_6a8cf1cf024de832ca4e41","isNew":false,"isPublic":false,"itemType":"RESEARCH_KB_FOLDER","name":"知識庫","originPluginDir":"30494b3b7ed927b5b8f99d74","originPluginID":"30494b3b7ed927b5b8f99d74","parents":{"researchConsole":1787724024421},"preParentID":null,"reviewedAt":0,"updatedAt":1787724024421,"updatedBy":{"userId":"6a8cf1cf024de832ca4e41","userName":"Rechine"},"version":1},{"category":"SICP｜Computer Science","coreConcept":"《電腦程式的結構與解釋》（SICP）以 Scheme 為材料，依程序、資料、狀態、語言與機器模型逐層說明如何以抽象理解計算。","createdAt":1788153597452,"detailedNote":"\u003ch2\u003e1. TL;DR\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e主線：\u003c/strong\u003e本書依序由程序、資料、狀態、語言實作，走向暫存器機器與編譯；每一步都擴充前一個模型能描述的計算。\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e第 1–2 章：\u003c/strong\u003e分別以程序與資料建立抽象邊界；第 3 章引入賦值、時間、共享與延遲，處理會變動的世界。\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e第 4–5 章：\u003c/strong\u003e先用 evaluator 將語言規則寫成程式，再用明確控制、儲存與編譯連回機器層。\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e依據：\u003c/strong\u003e本筆記僅根據 SICP 專案參考文件 \u003ca href=\"cubelv://file/6a94f65580d1d10080f77487\"\u003esicp.md\u003c/a\u003e 的正文與目錄整理。\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2. 核心問題\u003c/h2\u003e\n\u003cp\u003eSICP 的五章如何由「如何組合程序」一路推進到「語言如何求值、程式如何在機器上執行」？閱讀時應把每章視為一種新的描述工具，而非彼此獨立的技術清單。\u003c/p\u003e\n\u003ch2\u003e3. 一句話定義\u003c/h2\u003e\n\u003cp\u003e《電腦程式的結構與解釋》以 Scheme 為材料，逐層展示程序、資料、狀態、語言與機器模型如何用抽象管理複雜計算。\u003c/p\u003e\n\u003ch2\u003e4. 白話與正式解釋\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003e白話：\u003c/strong\u003e先練習把計算步驟寫成可重用的方法，再學會把複雜資料組起來；當程式有記憶、會同時發生事件時，原本的簡單模型不夠用，於是自己做出解釋器，最後觀察它在機器上需要哪些控制與儲存。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e正式：\u003c/strong\u003e參考文件的章節順序為 \u003cem\u003eBuilding Abstractions with Procedures\u003c/em\u003e、\u003cem\u003eBuilding Abstractions with Data\u003c/em\u003e、\u003cem\u003eModularity, Objects, and State\u003c/em\u003e、\u003cem\u003eMetalinguistic Abstraction\u003c/em\u003e、\u003cem\u003eComputing with Register Machines\u003c/em\u003e；此順序構成全書的概念骨架。\u003c/p\u003e\n\u003ch2\u003e5. 全書概念地圖\u003c/h2\u003e\n\u003col\u003e\n\u003cli\u003e\u003cstrong\u003e程序：\u003c/strong\u003e表達與組合計算。\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e資料：\u003c/strong\u003e用抽象屏障、階層資料與通用運算表達複雜對象。\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e狀態：\u003c/strong\u003e處理賦值、身份、時間、並行與延遲。\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e語言：\u003c/strong\u003e把求值規則、求值策略與搜尋策略本身當成可設計的程式。\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e機器：\u003c/strong\u003e把控制、堆疊、記憶體、直譯器與編譯攤開來看。\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch2\u003e6. 第 1 章：Building Abstractions with Procedures\u003c/h2\u003e\n\u003cp\u003e章內由程式設計元素開始，依序討論命名與環境、組合的求值、複合程序、代換模型、條件式、牛頓法與黑箱程序抽象。接著比較線性遞迴／迭代、樹狀遞迴、成長階、冪次與質數測試；最後以程序作為引數、\u003ccode\u003elambda\u003c/code\u003e、一般方法與回傳程序形成高階程序抽象。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e帶走：\u003c/strong\u003e程序的文字與它產生的計算過程不同；當程序可收取或產生程序，重複的計算模式就能被命名與重用。\u003c/p\u003e\n\u003ch2\u003e7. 第 2 章：Building Abstractions with Data\u003c/h2\u003e\n\u003cp\u003e本章從有理數與序對說明資料抽象和抽象屏障，擴展到區間算術、序列、樹、序列操作與圖像語言；其後處理引號與符號資料、符號微分、集合與 Huffman 樹，最後引入多重表示、標記資料、資料導向程式設計、訊息傳遞與通用運算系統。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e帶走：\u003c/strong\u003e把建構器與選擇器隔開可容許內部表示變動；資料結構與運算的組合方式，決定系統是否能擴展到更多表示與型別。\u003c/p\u003e\n\u003ch2\u003e8. 第 3 章：Modularity, Objects, and State\u003c/h2\u003e\n\u003cp\u003e本章以賦值與區域狀態開場，說明引入賦值的好處與代價；再以環境模型解釋求值與區域狀態，並用可變串列、佇列、表格、數位電路模擬器與約束傳播建立模型。後段處理並行中的時間、共享狀態、序列化與死結，並以 delayed lists、無限串流、訊號與延遲求值研究 streams。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e帶走：\u003c/strong\u003e狀態帶來身份與時間，也帶來共享與順序問題；環境、可變資料、並行控制及串流各自是不同的模組化取捨。\u003c/p\u003e\n\u003ch2\u003e9. 第 4 章：Metalinguistic Abstraction\u003c/h2\u003e\n\u003cp\u003e核心為 metacircular evaluator：以 Scheme 表示 Scheme 表達式的求值，拆開 \u003ccode\u003eeval\u003c/code\u003e、\u003ccode\u003eapply\u003c/code\u003e、環境、程序與語法分析。接著修改 evaluator 探索惰性求值；以 \u003ccode\u003eamb\u003c/code\u003e 與 continuations 處理非確定搜尋；最後以查詢系統討論演繹式資訊檢索、規則與邏輯程式設計的實作。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e帶走：\u003c/strong\u003e語法表示、求值策略與搜尋策略並非固定背景，而是能以程序明確定義、修改和比較的設計選擇。\u003c/p\u003e\n\u003ch2\u003e10. 第 5 章：Computing with Register Machines\u003c/h2\u003e\n\u003cp\u003e本章先定義描述暫存器機器的語言、機器設計抽象、子程序與以堆疊實作遞迴；再建構 register-machine simulator 與 assembler，討論監測效能、向量記憶體與垃圾回收。最後建立 explicit-control evaluator，並依序處理編譯器結構、表達式與組合的編譯、指令序列、詞彙位址，以及編譯碼與 evaluator 的介接。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e帶走：\u003c/strong\u003e高階程式的執行可具體化為暫存器、指令、控制流程、堆疊與儲存配置；直譯與編譯是連接語言語意與執行機器的兩條路徑。\u003c/p\u003e\n\u003ch2\u003e11. Evidence\u003c/h2\u003e\n\u003cp\u003e章名、節次與各章內容均直接核對專案參考文件 \u003ca href=\"cubelv://file/6a94f65580d1d10080f77487\"\u003esicp.md\u003c/a\u003e：第 1 章含 1.1–1.3，第 2 章含 2.1–2.5，第 3 章含 3.1–3.5，第 4 章含 4.1–4.4，第 5 章含 5.1–5.5。未使用網路來源交叉驗證，因該文件已足以回答本題。\u003c/p\u003e\n\u003ch2\u003e12. Different Perspectives 與限制\u003c/h2\u003e\n\u003cp\u003e從本書的編排可將它讀成「抽象的遞進課程」：前章建立表達工具，後章揭示工具的語意和實作。另一種讀法是把第 3、4、5 章視為三種核心問題的專題：有狀態計算、語言求值與執行機器。兩種讀法互補；前者適合通讀，後者適合帶著已知程式經驗回讀。\u003c/p\u003e\n\u003ch2\u003e13. 常見誤解、知識地圖與下一步\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e誤解：\u003c/strong\u003e第 1 章只是在教遞迴。其節次還涵蓋求值、程序過程、成長階與高階程序。\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e誤解：\u003c/strong\u003e第 3 章只是物件導向。它實際將賦值、環境、可變資料、並行與串流放在同一個「時間與狀態」問題下。\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e知識地圖：\u003c/strong\u003e程序抽象 → 資料抽象 → 狀態／環境 → evaluator → 明確控制 evaluator／編譯器。\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e閱讀下一步：\u003c/strong\u003e每章選一個可執行作品：高階程序、抽象資料型別、有狀態物件、極小 evaluator、暫存器機器；完成後說明它的抽象邊界與代價。\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e14. Sources\u003c/h2\u003e\n\u003col\u003e\n\u003cli\u003e\u003ca href=\"cubelv://file/6a94f65580d1d10080f77487\"\u003esicp.md\u003c/a\u003e（SICP 專案參考文件；原始書籍正文與完整目錄；本筆記唯一來源）\u003c/li\u003e\n\u003c/ol\u003e","id":"c69ae83859d6e169fd959a1e","inboxItemId":"6a950def80d1d10080f77488","itemType":"RESEARCH_NOTE","kbType":"Book","name":"SICP大綱","originPluginDir":"30494b3b7ed927b5b8f99d74","originPluginID":"30494b3b7ed927b5b8f99d74","parents":{"default_research_kb_folder_6a8cf1cf024de832ca4e41":1788153597452},"relatedConcepts":"Scheme, Lisp, 程序抽象, 資料抽象, 高階程序, 遞迴, 環境模型, 可變狀態, 並行, 串流, 直譯器, 編譯器, 暫存器機器","relatedKnowledge":"f7274cca8f5f8c8fc5f3ab19,8b3819be924e66f627a64913","researchDepth":"Standard","sources":"[{\"name\":\"sicp.md（SICP 專案參考文件）\",\"url\":\"cubelv://file/6a94f65580d1d10080f77487\",\"author\":\"Harold Abelson、Gerald Jay Sussman、Julie Sussman\",\"date\":\"文件未標示\",\"type\":\"專案參考文件／原典正文\"}]","tags":"SICP,Scheme,計算模型,程式設計,抽象化,狀態,直譯器,編譯器","title":"SICP大綱","tldr":"五章從程序抽象、資料抽象一路推進到狀態、語言求值與機器實作。\n第 1–2 章建立程序與資料的抽象邊界；第 3 章處理時間、共享與延遲。\n第 4 章將求值規則寫成 evaluator；第 5 章以暫存器機器、儲存與編譯連回執行層。\n內容與來源僅依 SICP 專案參考文件 sicp.md 整理。","updatedAt":1788156089219,"updatedBy":{"agentId":"b67deecc74cf3029ce66c6f8","agentName":"知識整理員 Knowledge Curator","userId":"6a8cf1cf024de832ca4e41","userName":"Rechine"},"version":4},{"category":"SICP","coreConcept":"第 1.1 節以表達式、組合、命名、程序定義與作用域，建立將複雜計算組織為可重用抽象的基本工具。","createdAt":1788155994390,"detailedNote":"\u003ch2\u003e1. TL;DR\u003c/h2\u003e\u003cul\u003e\u003cli\u003e第 1.1 節不是 Scheme 語法清單，而是用「原始元素、組合、抽象」三種機制，逐步教人把運算想法變成可組裝的程序。\u003c/li\u003e\u003cli\u003e1.1.1–1.1.4 建立表達式、名稱、求值規則與複合程序；1.1.5 以代換模型練習推演程序呼叫。\u003c/li\u003e\u003cli\u003e1.1.6 加入條件分支；1.1.7 用牛頓法把「求平方根」拆成改善、判定與迭代；1.1.8 以黑箱、區域名稱與區塊結構收束抽象。\u003c/li\u003e\u003cli\u003eApplicative order 先算實際引數；normal order 先展開、需要時才算。前者是本書 Scheme 使用的策略，代換模型只是理解工具。\u003c/li\u003e\u003c/ul\u003e\u003ch2\u003e2. 核心問題\u003c/h2\u003e\u003cp\u003e1.1.1 到 1.1.8 各自解決什麼問題？它們如何從數字運算一路走到可維護的程序抽象，並為第 1.2 節「程序產生的計算過程」做準備？\u003c/p\u003e\u003ch2\u003e3. 一句話定義\u003c/h2\u003e\u003cp\u003e第 1.1 節以「原始表達式 → 組合 → 命名與程序定義 → 條件 → 模組邊界」建立程序抽象：把複雜運算拆成可命名、可重用、可隱藏細節的單位。\u003c/p\u003e\u003ch2\u003e4. 白話解釋\u003c/h2\u003e\u003cp\u003e可把本節想成學做菜：先有食材與基本動作（數字與基本運算），再能把動作排成配方（組合式），替常用配方取名（\u003ccode\u003edefine\u003c/code\u003e），依情況選做法（\u003ccode\u003eif\u003c/code\u003e/\u003ccode\u003econd\u003c/code\u003e），最後把廚房內部步驟藏在一道菜的名稱後面（black-box abstraction）。重點從來不只是「如何算」，而是「如何組織可被理解的計算」。\u003c/p\u003e\u003ch2\u003e5. 正式解釋：八節概念地圖\u003c/h2\u003e\u003ctable\u003e\u003cthead\u003e\u003ctr\u003e\u003cth\u003e節次\u003c/th\u003e\u003cth\u003e本節要回答的問題\u003c/th\u003e\u003cth\u003e核心概念\u003c/th\u003e\u003cth\u003e關鍵例子\u003c/th\u003e\u003cth\u003e接到下一節\u003c/th\u003e\u003c/tr\u003e\u003c/thead\u003e\u003ctbody\u003e\u003ctr\u003e\u003ctd\u003e1.1.1\u003c/td\u003e\u003ctd\u003e如何把計算寫成可求值的式子？\u003c/td\u003e\u003ctd\u003eExpression、primitive expression、combination、prefix notation、REPL\u003c/td\u003e\u003ctd\u003e\u003ccode\u003e(+ 2 3)\u003c/code\u003e、巢狀組合式\u003c/td\u003e\u003ctd\u003e式子一複雜，便需要名稱。\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e1.1.2\u003c/td\u003e\u003ctd\u003e如何避免重複寫複雜結果？\u003c/td\u003e\u003ctd\u003e\u003ccode\u003edefine\u003c/code\u003e、variable、environment\u003c/td\u003e\u003ctd\u003e以 \u003ccode\u003eradius\u003c/code\u003e、\u003ccode\u003ecircumference\u003c/code\u003e 命名\u003c/td\u003e\u003ctd\u003e名稱也必須有一致的求值規則。\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e1.1.3\u003c/td\u003e\u003ctd\u003e組合式到底如何被解讀？\u003c/td\u003e\u003ctd\u003eoperator、operands、遞迴求值、special form\u003c/td\u003e\u003ctd\u003e求值樹與 \u003ccode\u003e(+ x 1)\u003c/code\u003e 的環境依賴\u003c/td\u003e\u003ctd\u003e既然能套用基本程序，也要能定義自己的程序。\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e1.1.4\u003c/td\u003e\u003ctd\u003e如何將一串運算升級成可重用單位？\u003c/td\u003e\u003ctd\u003ecompound procedure、formal parameter、procedure body\u003c/td\u003e\u003ctd\u003e\u003ccode\u003esquare\u003c/code\u003e、\u003ccode\u003esum-of-squares\u003c/code\u003e、\u003ccode\u003ef\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e需要模型推演使用者定義程序如何套用。\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e1.1.5\u003c/td\u003e\u003ctd\u003e程序呼叫在概念上如何運作？\u003c/td\u003e\u003ctd\u003esubstitution model、applicative/normal order\u003c/td\u003e\u003ctd\u003e\u003ccode\u003e(f 5)\u003c/code\u003e 展開至 136\u003c/td\u003e\u003ctd\u003e目前程序只能一路算，還無法依判斷改路徑。\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e1.1.6\u003c/td\u003e\u003ctd\u003e如何讓程序選擇不同路徑？\u003c/td\u003e\u003ctd\u003epredicate、\u003ccode\u003econd\u003c/code\u003e、\u003ccode\u003eif\u003c/code\u003e、短路邏輯\u003c/td\u003e\u003ctd\u003e絕對值 \u003ccode\u003eabs\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e可把停止條件寫入逐步改善的程序。\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e1.1.7\u003c/td\u003e\u003ctd\u003e如何把數學描述變成有效的計算步驟？\u003c/td\u003e\u003ctd\u003esuccessive approximation、改善、停止條件、程序分層\u003c/td\u003e\u003ctd\u003e\u003ccode\u003esqrt-iter\u003c/code\u003e 與 Newton’s Method\u003c/td\u003e\u003ctd\u003e多個輔助程序帶來命名與封裝問題。\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e1.1.8\u003c/td\u003e\u003ctd\u003e如何讓分解後的程序仍可管理？\u003c/td\u003e\u003ctd\u003eblack box、local names、bound/free variable、block structure、lexical scoping\u003c/td\u003e\u003ctd\u003e把 \u003ccode\u003esqrt\u003c/code\u003e 輔助程序內部化\u003c/td\u003e\u003ctd\u003e準備在 1.2 區分「程序」與其生成的「過程」。\u003c/td\u003e\u003c/tr\u003e\u003c/tbody\u003e\u003c/table\u003e\u003ch2\u003e6. 運作機制：從表達式到抽象\u003c/h2\u003e\u003col\u003e\u003cli\u003e\u003cstrong\u003e1.1.1 Expressions：\u003c/strong\u003e數字是 primitive expression；括號中的 prefix combination 把 operator 放最左、operands 放後面。巢狀結構可任意加深，REPL 以 read-eval-print 循環回應。\u003c/li\u003e\u003cli\u003e\u003cstrong\u003e1.1.2 Naming and the Environment：\u003c/strong\u003e\u003ccode\u003edefine\u003c/code\u003e 將名稱和計算物件關聯。environment 是保存這些名稱—物件配對的脈絡，因此同一符號在不同環境可能有不同意義。\u003c/li\u003e\u003cli\u003e\u003cstrong\u003e1.1.3 Evaluating Combinations：\u003c/strong\u003e一般規則是先求每個子式，再將最左子式的程序套用到其餘子式的值；這條規則本身遞迴。數字、基本運算子和名稱是終止的 primitive cases。\u003ccode\u003edefine\u003c/code\u003e 不遵循這個一般規則，屬 special form。\u003c/li\u003e\u003cli\u003e\u003cstrong\u003e1.1.4 Compound Procedures：\u003c/strong\u003e程序定義把參數與 body 包成新計算物件，再綁到名字；因此 \u003ccode\u003esquare\u003c/code\u003e 既可直接使用，也可成為 \u003ccode\u003esum-of-squares\u003c/code\u003e 的積木。\u003c/li\u003e\u003cli\u003e\u003cstrong\u003e1.1.5 Substitution Model：\u003c/strong\u003e概念上，將實際引數替換 formal parameters 後評估 body。它能把 \u003ccode\u003e(f 5)\u003c/code\u003e 分解為 \u003ccode\u003e(sum-of-squares 6 10)\u003c/code\u003e，最後得到 136。\u003c/li\u003e\u003cli\u003e\u003cstrong\u003e1.1.6 Conditional Expressions and Predicates：\u003c/strong\u003e\u003ccode\u003econd\u003c/code\u003e 逐一測試 clauses，\u003ccode\u003eif\u003c/code\u003e 在兩個分支中只評估被選中的一個。\u003ccode\u003eand\u003c/code\u003e/\u003ccode\u003eor\u003c/code\u003e 也是有短路行為的 special forms。\u003c/li\u003e\u003cli\u003e\u003cstrong\u003e1.1.7 Newton’s Method：\u003c/strong\u003e將猜測 \u003ccode\u003ey\u003c/code\u003e 改善為 \u003ccode\u003eaverage(y, x/y)\u003c/code\u003e；若誤差足夠小即回傳，否則再遞迴。這把「解的性質」轉成可實作的「求解步驟」。\u003c/li\u003e\u003cli\u003e\u003cstrong\u003e1.1.8 Black-Box Abstractions：\u003c/strong\u003e呼叫端只依賴輸入輸出契約，不需知道內部實作。參數名稱是 local/bound，輔助程序可以放入 enclosing procedure，藉 block structure 與 lexical scoping 避免名稱衝突與不必要的參數傳遞。\u003c/li\u003e\u003c/ol\u003e\u003ch2\u003e7. 關鍵辨析：代換模型與兩種求值順序\u003c/h2\u003e\u003cp\u003e\u003cstrong\u003eApplicative order\u003c/strong\u003e：先求 operator 與 operands 的值，再套用程序；本書的 Lisp/Scheme 採此策略。\u003cstrong\u003eNormal order\u003c/strong\u003e：先將 operands 的「式子」代入，直到需要基本運算時才求值。以 \u003ccode\u003e(f 5)\u003c/code\u003e 為例，normal order 會重複計算 \u003ccode\u003e(+ 5 1)\u003c/code\u003e 與 \u003ccode\u003e(* 5 2)\u003c/code\u003e，所以通常較沒效率。\u003c/p\u003e\u003cp\u003e兩者對可由 substitution model 描述、且會產生合法值的程序可得到相同結果；但求值過程不同。代換模型\u003cstrong\u003e不是\u003c/strong\u003e直譯器的實作說明：實務上會使用 local environment。當程式涉及 mutable data 時，代換模型不再足夠，後續章節以 environment model 取代它。\u003c/p\u003e\u003ch2\u003e8. 代表案例：平方根程序的設計洞見\u003c/h2\u003e\u003cp\u003e牛頓法的重點不是背公式，而是把一個難題分成三個可替換的責任：\u003ccode\u003eimprove\u003c/code\u003e 產生更好猜測、\u003ccode\u003egood-enough?\u003c/code\u003e 決定何時停止、\u003ccode\u003esqrt-iter\u003c/code\u003e 管理重複改善，\u003ccode\u003esqrt\u003c/code\u003e 則提供使用者入口。這是「問題分解應反映在程序分解」的首個完整例子。\u003c/p\u003e\u003cp\u003e\u003ccode\u003egood-enough?\u003c/code\u003e 用 \u003ccode\u003e|guess² - x| \u0026lt; 0.001\u003c/code\u003e 僅為教學示意；原典隨後用習題提醒它對極小或極大數與有限精度不理想。故停止條件是問題規格的一部分，不是可忽略的細節。\u003c/p\u003e\u003ch2\u003e9. 證據與依據\u003c/h2\u003e\u003cp\u003e本筆記逐節依據專案指定的《SICP》參考文件：該文件在第 1.1 節明示強大語言的三種機制（primitive expressions、means of combination、means of abstraction），並以平方根案例展示程序分解、黑箱與 lexical scoping。代換模型的「理解用途而非實作」與 mutable data 的限制亦由原典明示。\u003c/p\u003e\u003ch2\u003e10. 不同觀點與適用邊界\u003c/h2\u003e\u003cp\u003e從初學者視角，1.1 可被讀成「Scheme 入門」；但更準確的讀法是它用極少語法承載程序設計的共同原理。從實作視角，substitution model 很有教育價值，卻不足以描述環境、狀態與物件身分。從 API 設計視角，black box 不是拒絕理解實作，而是讓使用者在正確的抽象層依賴穩定行為。\u003c/p\u003e\u003ch2\u003e11. 常見誤解校正\u003c/h2\u003e\u003cul\u003e\u003cli\u003e\u003cstrong\u003e「prefix notation 只是怪語法」：\u003c/strong\u003e它令可變引數與巢狀組合的結構無歧義。\u003c/li\u003e\u003cli\u003e\u003cstrong\u003e「define 是一般函數呼叫」：\u003c/strong\u003e不是；它建立名稱關聯，因而是 special form。\u003c/li\u003e\u003cli\u003e\u003cstrong\u003e「代換模型就是直譯器的內部做法」：\u003c/strong\u003e不是；它是早期的思考模型，實務以環境處理綁定。\u003c/li\u003e\u003cli\u003e\u003cstrong\u003e「if 可以用普通程序完全取代」：\u003c/strong\u003e不行；普通程序會先求全部引數，無法保留未選分支不求值的語意。\u003c/li\u003e\u003cli\u003e\u003cstrong\u003e「黑箱等於看不到或不能改」：\u003c/strong\u003e黑箱指使用者只需依賴行為契約；實作仍能替換、測試和改善。\u003c/li\u003e\u003c/ul\u003e\u003ch2\u003e12. Related Concepts\u003c/h2\u003e\u003cp\u003eREPL、抽象層次、遞迴求值、special form、scope、lexical scoping、environment model、尾遞迴、程序與過程（procedure vs. process）。\u003c/p\u003e\u003ch2\u003e13. Knowledge Map\u003c/h2\u003e\u003cpre\u003e\u003ccode\u003eprimitive data / procedures\n        ↓\nexpressions + combinations\n        ↓\nnames in an environment\n        ↓\ncompound procedures\n        ↓\nsubstitution model (conceptual trace)\n        ↓\npredicates + conditional branches\n        ↓\nNewton sqrt: improve / stop / iterate\n        ↓\nblack-box abstraction + local scope\n        ↓\n1.2: procedures generate processes\u003c/code\u003e\u003c/pre\u003e\u003ch2\u003e14. What Next／Sources\u003c/h2\u003e\u003cp\u003e下一步讀 1.2 時，刻意分開問兩件事：程序寫了什麼規則？該規則實際展開成什麼時間與空間形狀的過程？可先用 factorial 對照 linear recursion 與 iteration。\u003c/p\u003e\u003cp\u003e\u003cstrong\u003e來源：\u003c/strong\u003e專案文件：\u003ca href=\"cubelv://file/6a94f65580d1d10080f77487\"\u003esicp.md\u003c/a\u003e，第 1.1.1–1.1.8 節（專案參考文件；《Structure and Interpretation of Computer Programs》內容）。\u003c/p\u003e","id":"8b3819be924e66f627a64913","inboxItemId":"6a95174680d1d10080f7748b","itemType":"RESEARCH_NOTE","kbType":"Book","name":"SICP 1-1","originPluginDir":"30494b3b7ed927b5b8f99d74","originPluginID":"30494b3b7ed927b5b8f99d74","parents":{"default_research_kb_folder_6a8cf1cf024de832ca4e41":1788155994390},"relatedConcepts":"SICP,程序抽象,Scheme,Substitution Model,Applicative Order,Normal Order,Newton’s Method,Lexical Scoping,Black-Box Abstraction","relatedKnowledge":"c69ae83859d6e169fd959a1e","researchDepth":"Standard","sources":"[{\"name\":\"專案文件：sicp.md（《Structure and Interpretation of Computer Programs》）\",\"url\":\"cubelv://file/6a94f65580d1d10080f77487\",\"author\":\"Harold Abelson、Gerald Jay Sussman、Julie Sussman\",\"date\":\"1996（文件轉錄日期未標示）\",\"type\":\"專案參考文件／原典內容\"}]","tags":"SICP,第1章,Scheme,程序抽象,求值,牛頓法,作用域","title":"SICP 1-1","tldr":"第 1.1 節以原始元素、組合與抽象建立程序設計語言\n1.1.1–1.1.4 從表達式、名稱、求值走到複合程序\n1.1.5 的代換模型用於推演，不是直譯器實作\n條件分支與牛頓法展示有效程序與問題分解\n黑箱、區域名稱與區塊結構讓抽象可擴展","updatedAt":1788155994390,"updatedBy":{"agentId":"c5429ae35460edc27ac6208b","agentName":"研究分析員 Research Analyst","userId":"6a8cf1cf024de832ca4e41","userName":"Rechine"},"version":1},{"category":"Computer Science","coreConcept":"軟體設計模式是物件導向設計中，針對反覆出現的設計難題所歸納出的 23 種經典型、可復用結構與協作藍圖，依 GoF 分為創建型、結構型、行為型三類。","createdAt":1787794496096,"detailedNote":"\u003ch2\u003eTL;DR 摘要\u003c/h2\u003e\u003cul\u003e\u003cli\u003e\u003cb\u003e藍圖而非程式庫：\u003c/b\u003e設計模式（Design Pattern）是「情境—問題—解法」三要素構成的一套可復用設計詞彙與結構藍圖，幫團隊快速對齊意圖、避免重複踩坑。\u003c/li\u003e\u003cli\u003e\u003cb\u003e三大家族：\u003c/b\u003eGoF 23 模式 = 創建型 5（管生）＋ 結構型 7（管組）＋ 行為型 11（管協作）。分類關鍵不在背誦清單，而在辨識「你在解哪一族的痛」。\u003c/li\u003e\u003cli\u003e\u003cb\u003e每模式一句話 Intent：\u003c/b\u003e創建型「隱藏與管控 new」、結構型「讓不相容或散亂的結構變得可組合可擴充」、行為型「讓演算法、職責與溝通可抽換可追蹤」。\u003c/li\u003e\u003cli\u003e\u003cb\u003e選型與警示：\u003c/b\u003e用「new 在哪／接口合不合／流程會不會變」三問定位家族；常見組合如 Factory＋Strategy、Decorator＋Composite；重點是克制——痛點沒出現時不要為用而用。\u003c/li\u003e\u003cli\u003e\u003cb\u003e當代演進：\u003c/b\u003eDI 容器弱化 Singleton／Factory、函式式與 lambda 弱化 Strategy／Command、語言內建 Iterator／Observer（事件）讓部分模式隱形化，但設計思想仍在。\u003c/li\u003e\u003c/ul\u003e\u003ch2\u003e一、核心問題\u003c/h2\u003e\u003cp\u003e使用者的原始提問直指 GoF 三分類底下的\u003cb\u003e完整清單＋各自解決什麼問題\u003c/b\u003e。這不是要一份 23 個名詞的背誦表，而是要一張能用來做「選型判斷」的對照表：每個模式用一句話講清意圖（Intent）、對應的設計痛點、典型場景與代價，並能回答——何時該看創建型、何時該看結構型、何時該看行為型，以及如何避免為了模式而模式。\u003c/p\u003e\u003cp\u003e\u003cb\u003e研究問題對應：\u003c/b\u003e什麼是模式與為何分類（Q1）、創建型 5 種在解什麼（Q2）、結構型 7 種在解什麼（Q3）、行為型 11 種在解什麼（Q4）、如何對照選型與組合（Q5）、與 SOLID／現代語言的關係與誤解（Q6）。\u003c/p\u003e\u003ch2\u003e二、一句話定義\u003c/h2\u003e\u003cp\u003e\u003cb\u003e軟體設計模式（Software Design Pattern）\u003c/b\u003e是針對物件導向設計中「反覆出現的特定情境與問題」，所歸納出的通用、可復用的類別與物件結構及協作方式描述；GoF 23 個模式是其中最經典的一套目錄，依「處理對象」分為創建型（Creational）、結構型（Structural）、行為型（Behavioral）。\u003c/p\u003e\u003ch2\u003e三、白話解釋與正式解釋\u003c/h2\u003e\u003ch3\u003e白話版\u003c/h3\u003e\u003cp\u003e想像你在組裝家具時反覆遇到同一類麻煩：螺絲孔對不上、零件太多難擴充、說明書寫死一種流程。久而久之，老師傅會總結出幾套「遇到這類麻煩就這樣搭」的搭法——不是給你一包現成螺絲，而是給你一張「何時用哪種接頭、怎麼搭最穩」的藍圖。設計模式就是軟體老師傅的這套藍圖：創建型教你「零件怎麼生才不會到處噴 new」，結構型教你「接頭不對怎麼轉接、怎麼像樂高一樣疊」，行為型教你「誰指揮誰、演算法怎麼換、消息怎麼傳」。\u003c/p\u003e\u003ch3\u003e正式版\u003c/h3\u003e\u003cp\u003e依 GoF 與 Refactoring.Guru 的整理，模式（Pattern）包含四要素：\u003cb\u003e名稱\u003c/b\u003e（溝通詞彙）、\u003cb\u003e問題\u003c/b\u003e（何種情境與限制下出現）、\u003cb\u003e解法\u003c/b\u003e（參與者、結構與協作流程的通用描述）、\u003cb\u003e效果\u003c/b\u003e（好處、代價與取捨）。模式介於「原則」（如 SOLID）與「具體實作」之間——原則告訴你「要低耦合」，模式告訴你「用這一套結構與互動來達成低耦合」。GoF 原典《Design Patterns: Elements of Reusable Object-Oriented Software》（Gamma et al., 1994）收錄 23 個物件導向模式，並以兩個維度分類：\u003cb\u003e目的（Purpose）\u003c/b\u003e＝ 創建／結構／行為，與 \u003cb\u003e範圍（Scope）\u003c/b\u003e＝ 類別（靠繼承）／物件（靠組合）；坊間常省略 Scope，只講三大目的分類。\u003c/p\u003e\u003cp\u003e\u003cb\u003e非 GoF 的 Simple Factory：\u003c/b\u003e常見的 Simple Factory（靜態工廠／簡易工廠）並非 GoF 23 之一，而是社群對「把 new 集中到一個方法／類別」的通稱寫法；GoF 的 Factory Method 與 Abstract Factory 才是正式模式。把 Simple Factory 視為入門簡化版、而非正式條目，可避免混淆。\u003c/p\u003e\u003ch2\u003e四、運作機制：三大家族如何分工\u003c/h2\u003e\u003ch3\u003e1. 為何切成三類？「痛點家族」一句話判準\u003c/h3\u003e\u003cul\u003e\u003cli\u003e\u003cb\u003e創建型（Creational, 5）：\u003c/b\u003e痛點＝「物件怎麼被生出來」。當你發現到處散落 \u003ccode\u003enew\u003c/code\u003e、建構邏輯複雜、實例數量或家族需要被管控時，就看這一族。機制＝把「如何建立」封裝起來，讓客戶端不依賴具體類別。\u003c/li\u003e\u003cli\u003e\u003cb\u003e結構型（Structural, 7）：\u003c/b\u003e痛點＝「東西長得不一樣或分散，怎麼拼起來還能動」。當接口不合、需要樹狀組合、想動態加功能或簡化複雜子系統時，就看這一族。機制＝透過轉接、組合、包裝、代理等結構手法維持彈性。\u003c/li\u003e\u003cli\u003e\u003cb\u003e行為型（Behavioral, 11）：\u003c/b\u003e痛點＝「物件之間怎麼講話、誰做哪件事、流程會不會一直變」。當演算法需抽換、狀態影響行為、需要解耦發送與接收、遍歷與通知氾濫時，就看這一族。機制＝把演算法、職責、狀態與溝通協定物件化或協調化。\u003c/li\u003e\u003c/ul\u003e\u003ch3\u003e2. 選型啟發式：三個提問快速定位\u003c/h3\u003e\u003cul\u003e\u003cli\u003e\u003cb\u003e「new 在哪裡失控？」→ 創建型：\u003c/b\u003e建構參數爆炸用 Builder；需共用實例用 Singleton；需依條件產生不同產品用 Factory Method；需成套產品族用 Abstract Factory；需低成本複製用 Prototype。\u003c/li\u003e\u003cli\u003e\u003cb\u003e「接口合不合、結構要不要長？」→ 結構型：\u003c/b\u003e不合用 Adapter；抽象與實作要獨立演化用 Bridge；要一致對待單一與群體用 Composite；要動態加能力用 Decorator；要藏複雜度用 Facade；要省記憶體用 Flyweight；要加門衛／快取／遠端替身用 Proxy。\u003c/li\u003e\u003cli\u003e\u003cb\u003e「流程／策略／通知會不會一直變？」→ 行為型：\u003c/b\u003e演算法抽換用 Strategy；狀態驅動行為用 State；定義骨架用 Template Method；一對多通知用 Observer；請求變物件用 Command；輪流處理用 Chain of Responsibility；集中協調用 Mediator；可回溯用 Memento；加新操作不改結構用 Visitor。\u003c/li\u003e\u003c/ul\u003e\u003ch3\u003e3. 創建型對照表（5）\u003c/h3\u003e\u003ctable border=\"1\" cellpadding=\"6\" cellspacing=\"0\" style=\"border-collapse:collapse; width:100%; font-size:13px;\"\u003e\u003cthead\u003e\u003ctr style=\"background:#f3f3f3;\"\u003e\u003cth\u003e模式\u003c/th\u003e\u003cth\u003eIntent 一句話\u003c/th\u003e\u003cth\u003e解決什麼問題\u003c/th\u003e\u003cth\u003e典型場景\u003c/th\u003e\u003cth\u003e代價／注意\u003c/th\u003e\u003c/tr\u003e\u003c/thead\u003e\u003ctbody\u003e\u003ctr\u003e\u003ctd\u003e\u003cb\u003eSingleton 單例\u003c/b\u003e\u003c/td\u003e\u003ctd\u003e確保一類別僅一個實例並提供全域存取點\u003c/td\u003e\u003ctd\u003e需管控實例數量與共用狀態\u003c/td\u003e\u003ctd\u003e設定檔、連線池、日誌\u003c/td\u003e\u003ctd\u003e易成隱式全域狀態，測試困難；多執行緒需處理\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cb\u003eFactory Method 工廠方法\u003c/b\u003e\u003c/td\u003e\u003ctd\u003e定義建立物件的介面，由子類別決定實例化哪個類別\u003c/td\u003e\u003ctd\u003e把 new 與使用方解耦，支援多型擴充\u003c/td\u003e\u003ctd\u003e依設定或類型產生對應處理器\u003c/td\u003e\u003ctd\u003e每新增產品常需新增 Creator 子類別\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cb\u003eAbstract Factory 抽象工廠\u003c/b\u003e\u003c/td\u003e\u003ctd\u003e提供建立一族相關產品的介面，不暴露具體類別\u003c/td\u003e\u003ctd\u003e需成套更換產品族且保持一致性\u003c/td\u003e\u003ctd\u003e跨平台 UI 元件族、主題族\u003c/td\u003e\u003ctd\u003e新增產品族彈性高，新增單一產品成本高\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cb\u003eBuilder 建造者\u003c/b\u003e\u003c/td\u003e\u003ctd\u003e將複雜物件的建構與表示分離，逐步組裝\u003c/td\u003e\u003ctd\u003e建構參數多、步驟多、順序敏感\u003c/td\u003e\u003ctd\u003eSQL／HTTP 請求、複雜領域物件\u003c/td\u003e\u003ctd\u003e需額外 Builder 類別，簡單物件會過重\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cb\u003ePrototype 原型\u003c/b\u003e\u003c/td\u003e\u003ctd\u003e以原型實例為模板，透過複製建立新物件\u003c/td\u003e\u003ctd\u003e建立成本高或需大量相似物件\u003c/td\u003e\u003ctd\u003e文件模板、遊戲實體大量生成\u003c/td\u003e\u003ctd\u003e深／淺拷貝語意要處理，複雜圖結構複製易錯\u003c/td\u003e\u003c/tr\u003e\u003c/tbody\u003e\u003c/table\u003e\u003cp style=\"color:#666; font-size:12px;\"\u003e註：Simple Factory（簡易工廠）非 GoF 23，僅為「集中 new」的慣用寫法，常作 Factory Method 的入門前菜。\u003c/p\u003e\u003ch3\u003e4. 結構型對照表（7）\u003c/h3\u003e\u003ctable border=\"1\" cellpadding=\"6\" cellspacing=\"0\" style=\"border-collapse:collapse; width:100%; font-size:13px;\"\u003e\u003cthead\u003e\u003ctr style=\"background:#f3f3f3;\"\u003e\u003cth\u003e模式\u003c/th\u003e\u003cth\u003eIntent 一句話\u003c/th\u003e\u003cth\u003e解決什麼問題\u003c/th\u003e\u003cth\u003e典型場景\u003c/th\u003e\u003cth\u003e代價／注意\u003c/th\u003e\u003c/tr\u003e\u003c/thead\u003e\u003ctbody\u003e\u003ctr\u003e\u003ctd\u003e\u003cb\u003eAdapter 轉接器\u003c/b\u003e\u003c/td\u003e\u003ctd\u003e把一介面轉成客戶端期待的另一介面\u003c/td\u003e\u003ctd\u003e介面不相容無法合作\u003c/td\u003e\u003ctd\u003e舊 API 轉接新介面、第三方 SDK 橋接\u003c/td\u003e\u003ctd\u003e過度轉接會讓介面語意模糊\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cb\u003eBridge 橋接\u003c/b\u003e\u003c/td\u003e\u003ctd\u003e把抽象與實作分離，各自獨立演化\u003c/td\u003e\u003ctd\u003e多維度變化（抽象×實作）導致類別爆炸\u003c/td\u003e\u003ctd\u003e形狀×渲染引擎、訊息×發送管道\u003c/td\u003e\u003ctd\u003e初期抽象成本高\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cb\u003eComposite 組合\u003c/b\u003e\u003c/td\u003e\u003ctd\u003e將物件組成樹狀，使單一與組合被一致對待\u003c/td\u003e\u003ctd\u003e需統一處理部分—整體階層\u003c/td\u003e\u003ctd\u003e檔案系統、UI 元件樹、組織圖\u003c/td\u003e\u003ctd\u003e型別安全與遍歷語意需設計\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cb\u003eDecorator 裝飾器\u003c/b\u003e\u003c/td\u003e\u003ctd\u003e動態地為物件附加額外職責，不改原類別\u003c/td\u003e\u003ctd\u003e以組合取代繼承來疊加功能\u003c/td\u003e\u003ctd\u003e串流加緩衝／加密／壓縮層\u003c/td\u003e\u003ctd\u003e層數過多時除錯與順序管理變複雜\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cb\u003eFacade 外觀\u003c/b\u003e\u003c/td\u003e\u003ctd\u003e為複雜子系統提供簡化統一介面\u003c/td\u003e\u003ctd\u003e子系統繁雜、呼叫鏈冗長\u003c/td\u003e\u003ctd\u003e視訊轉檔、訂單履約對外門面\u003c/td\u003e\u003ctd\u003eFacade 不該藏成上帝物件\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cb\u003eFlyweight 享元\u003c/b\u003e\u003c/td\u003e\u003ctd\u003e以共享細粒度物件減少記憶體開銷\u003c/td\u003e\u003ctd\u003e大量相似物件導致記憶體壓力\u003c/td\u003e\u003ctd\u003e文字編輯器字形、遊戲粒子\u003c/td\u003e\u003ctd\u003e需區分內蘊／外蘊狀態，管理複雜\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cb\u003eProxy 代理\u003c/b\u003e\u003c/td\u003e\u003ctd\u003e為另一物件提供替身以控管存取\u003c/td\u003e\u003ctd\u003e需延遲載入、權限控管、快取、遠端代理\u003c/td\u003e\u003ctd\u003e圖片延遲載入、權限代理、快取代理\u003c/td\u003e\u003ctd\u003e多一層間接，延遲與一致性要權衡\u003c/td\u003e\u003c/tr\u003e\u003c/tbody\u003e\u003c/table\u003e\u003ch3\u003e5. 行為型對照表（11）\u003c/h3\u003e\u003ctable border=\"1\" cellpadding=\"6\" cellspacing=\"0\" style=\"border-collapse:collapse; width:100%; font-size:13px;\"\u003e\u003cthead\u003e\u003ctr style=\"background:#f3f3f3;\"\u003e\u003cth\u003e模式\u003c/th\u003e\u003cth\u003eIntent 一句話\u003c/th\u003e\u003cth\u003e解決什麼問題\u003c/th\u003e\u003cth\u003e典型場景\u003c/th\u003e\u003cth\u003e代價／注意\u003c/th\u003e\u003c/tr\u003e\u003c/thead\u003e\u003ctbody\u003e\u003ctr\u003e\u003ctd\u003e\u003cb\u003eStrategy 策略\u003c/b\u003e\u003c/td\u003e\u003ctd\u003e定義一族演算法並使其可互換\u003c/td\u003e\u003ctd\u003e條件分支膨脹、演算法需抽換\u003c/td\u003e\u003ctd\u003e折扣策略、排序策略、驗證策略\u003c/td\u003e\u003ctd\u003e策略數量膨脹時需配合 Factory 管理\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cb\u003eObserver 觀察者\u003c/b\u003e\u003c/td\u003e\u003ctd\u003e定義一對多依賴，狀態變更自動通知\u003c/td\u003e\u003ctd\u003e解耦發布與訂閱、事件驅動\u003c/td\u003e\u003ctd\u003eUI 事件、訂閱推播、狀態同步\u003c/td\u003e\u003ctd\u003e通知風暴、時序與記憶體洩漏（未退訂）\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cb\u003eCommand 命令\u003c/b\u003e\u003c/td\u003e\u003ctd\u003e將請求封裝為物件，支援排程／重做／復原\u003c/td\u003e\u003ctd\u003e需參數化請求與可追蹤執行\u003c/td\u003e\u003ctd\u003e按鈕命令、任務佇列、undo\u003c/td\u003e\u003ctd\u003e命令類別數量多，需權衡\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cb\u003eIterator 迭代器\u003c/b\u003e\u003c/td\u003e\u003ctd\u003e循序存取聚合物件而無需暴露內部表示\u003c/td\u003e\u003ctd\u003e統一遍歷、屏蔽資料結構差異\u003c/td\u003e\u003ctd\u003e集合遍歷、分頁迭代\u003c/td\u003e\u003ctd\u003e現代語言多已內建（for…of／stream）\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cb\u003eState 狀態\u003c/b\u003e\u003c/td\u003e\u003ctd\u003e讓物件在內部狀態改變時改變行為\u003c/td\u003e\u003ctd\u003e大量狀態條件分支難以維護\u003c/td\u003e\u003ctd\u003e訂單狀態機、連線狀態\u003c/td\u003e\u003ctd\u003e狀態類別與轉移表要清晰，否則更亂\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cb\u003eTemplate Method 樣板方法\u003c/b\u003e\u003c/td\u003e\u003ctd\u003e在父類別定義演算法骨架，子類別覆寫步驟\u003c/td\u003e\u003ctd\u003e流程固定、細節可變\u003c/td\u003e\u003ctd\u003e資料處理管線、測試框架骨架\u003c/td\u003e\u003ctd\u003e以繼承為基礎，彈性不如 Strategy＋組合\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cb\u003eChain of Responsibility 責任鏈\u003c/b\u003e\u003c/td\u003e\u003ctd\u003e將處理者串成鏈，請求沿鏈傳遞直到被處理\u003c/td\u003e\u003ctd\u003e發送者不需知道誰會處理\u003c/td\u003e\u003ctd\u003e中介軟體鏈、審批流、事件冒泡\u003c/td\u003e\u003ctd\u003e鏈過長或無人處理時需有預設與監控\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cb\u003eMediator 中介者\u003c/b\u003e\u003c/td\u003e\u003ctd\u003e定義物件間互動的中介，減少多對多耦合\u003c/td\u003e\u003ctd\u003e網狀依賴難以維護\u003c/td\u003e\u003ctd\u003e對話框協調、聊天室、控制塔\u003c/td\u003e\u003ctd\u003e中介者本身易膨脹成上帝物件\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cb\u003eMemento 備忘錄\u003c/b\u003e\u003c/td\u003e\u003ctd\u003e在不破壞封裝下捕捉並回復物件狀態\u003c/td\u003e\u003ctd\u003e需可回溯／重做\u003c/td\u003e\u003ctd\u003e編輯器快照、交易回滾點\u003c/td\u003e\u003ctd\u003e狀態拷貝成本高，需控制粒度\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cb\u003eVisitor 訪問者\u003c/b\u003e\u003c/td\u003e\u003ctd\u003e在不修改元素類別下為其加入新操作\u003c/td\u003e\u003ctd\u003e結構穩定、操作多變\u003c/td\u003e\u003ctd\u003eAST 節點遍歷、報表匯出\u003c/td\u003e\u003ctd\u003e新增元素類型成本高，雙分派語意複雜\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cb\u003eInterpreter 解譯器\u003c/b\u003e\u003c/td\u003e\u003ctd\u003e為特定語言定義文法與直譯方式\u003c/td\u003e\u003ctd\u003e需直譯領域特定語句\u003c/td\u003e\u003ctd\u003e簡易規則引擎、表示式求值\u003c/td\u003e\u003ctd\u003e文法複雜時效能與可維護性迅速惡化\u003c/td\u003e\u003c/tr\u003e\u003c/tbody\u003e\u003c/table\u003e\u003ch2\u003e五、Example 案例\u003c/h2\u003e\u003ch3\u003e案例一：Factory Method — 把 new 關進工廠\u003c/h3\u003e\u003cpre style=\"background:#f9f9f9; padding:12px; border-radius:6px; font-size:13px; line-height:1.6; overflow-x:auto;\"\u003e// 問題：依類型產生對應的處理器，到處寫 if/switch + new，新增類型就改遍全場\nabstract class NotificationSender { abstract void send(String msg); }\nclass EmailSender extends NotificationSender { void send(String m){ /* ... */ } }\nclass SmsSender   extends NotificationSender { void send(String m){ /* ... */ } }\n\nabstract class SenderFactory {\n  abstract NotificationSender createSender(); // Factory Method\n  void notify(String msg){ createSender().send(msg); }\n}\nclass EmailFactory extends SenderFactory { NotificationSender createSender(){ return new EmailSender(); } }\n// 客戶端只依賴抽象：SenderFactory f = config.emailEnabled ? new EmailFactory() : new SmsFactory();\n\u003c/pre\u003e\u003cp style=\"color:#666; font-size:12px;\"\u003e對照：Simple Factory 會是 \u003ccode\u003eSenders.create(type)\u003c/code\u003e 的靜態集中法；Factory Method 把「決定生哪個」的責任交給子類別，支援多型擴充。\u003c/p\u003e\u003ch3\u003e案例二：Decorator — 用疊加取代繼承\u003c/h3\u003e\u003cpre style=\"background:#f9f9f9; padding:12px; border-radius:6px; font-size:13px; line-height:1.6; overflow-x:auto;\"\u003einterface DataSource { void write(String data); String read(); }\nclass FileDataSource implements DataSource { /* 讀寫檔案 */ }\nclass DataSourceDecorator implements DataSource {\n  protected DataSource wrappee;\n  DataSourceDecorator(DataSource s){ this.wrappee = s; }\n  public void write(String d){ wrappee.write(d); }\n  public String read(){ return wrappee.read(); }\n}\nclass EncryptionDecorator extends DataSourceDecorator {\n  EncryptionDecorator(DataSource s){ super(s); }\n  public void write(String d){ super.write(encrypt(d)); }\n  public String read(){ return decrypt(super.read()); }\n}\n// 使用：DataSource ds = new EncryptionDecorator(new CompressionDecorator(new FileDataSource()));\n\u003c/pre\u003e\u003ch3\u003e案例三：Observer — 一對多通知，鬆耦合\u003c/h3\u003e\u003cpre style=\"background:#f9f9f9; padding:12px; border-radius:6px; font-size:13px; line-height:1.6; overflow-x:auto;\"\u003einterface Subscriber { void update(String event); }\nclass EventManager {\n  List\u0026lt;Subscriber\u0026gt; subs = new ArrayList\u0026lt;\u0026gt;();\n  void subscribe(Subscriber s){ subs.add(s); }\n  void unsubscribe(Subscriber s){ subs.remove(s); }\n  void notify(String e){ for(Subscriber s: subs) s.update(e); }\n}\nclass OrderService {\n  EventManager events; // 依賴抽象的事件管道，而非具體收件者\n  void pay(String orderId){ /* ... */ events.notify(\"order.paid:\"+orderId); }\n}\n\u003c/pre\u003e\u003ch3\u003e案例四：Strategy — 把會變的演算法抽出來\u003c/h3\u003e\u003cpre style=\"background:#f9f9f9; padding:12px; border-radius:6px; font-size:13px; line-height:1.6; overflow-x:auto;\"\u003einterface DiscountStrategy { int apply(int price); }\nclass VipDiscount implements DiscountStrategy { public int apply(int p){ return p*8/10; } }\nclass CouponDiscount implements DiscountStrategy { public int apply(int p){ return p-100; } }\nclass Checkout {\n  int total(int price, DiscountStrategy s){ return s.apply(price); }\n}\n// 現代寫法可直接以 lambda 取代策略物件：price -\u003e price*8/10\n\u003c/pre\u003e\u003ch2\u003e六、Evidence 證據與來源檢視\u003c/h2\u003e\u003cul\u003e\u003cli\u003e\u003cb\u003eGoF 原典與分類骨架：\u003c/b\u003eGamma et al.《Design Patterns: Elements of Reusable Object-Oriented Software》(1994) 定義 23 模式與 Purpose×Scope 分類；本筆記的三分類與各 Intent 依 SourceMaking 與 Refactoring.Guru 對 GoF 的結構化整理進行交叉，兩處對 Creational/Structural/Behavioral 的定義與清單完全一致。\u003c/li\u003e\u003cli\u003e\u003cb\u003e三分類定義一致性：\u003c/b\u003eRefactoring.Guru Catalog 明確寫道 Creational「提供物件建立機制、增加彈性與復用」／Structural「將物件與類別組裝成更大結構並保持彈性」／Behavioral「處理演算法與職責分配」；GeeksforGeeks 與 DigitalOcean 的 GoF 綜述亦採同一三分法，屬於高可信度二手整理。\u003c/li\u003e\u003cli\u003e\u003cb\u003e每模式 Intent 交叉：\u003c/b\u003e5＋7＋11 的條目與 Intent 取 Refactoring.Guru 與 SourceMaking 條目逐一對照（如 Factory Method「定義建立介面、由子類別決定實例化」、Adapter「轉換介面使不相容類別可合作」等），單一模式對照 2 筆來源未見分歧。\u003c/li\u003e\u003cli\u003e\u003cb\u003eSimple Factory 非 GoF：\u003c/b\u003eRefactoring.Guru 與 SourceMaking 均未將 Simple Factory 列入 GoF 目錄；GeeksforGeeks 等部落格常以 Factory 泛稱帶過，易造成誤解，故本筆記特作辨析。\u003c/li\u003e\u003cli\u003e\u003cb\u003e現代語言演進：\u003c/b\u003eCoursera 與 DigitalOcean 等綜述指出 Iterator、Observer 等在現代語言／框架中已被內建或以事件／stream 形式隱形化，此點與社群共識一致，屬通說但需依語言而異。\u003c/li\u003e\u003c/ul\u003e\u003cp style=\"color:#888; font-size:12px;\"\u003e限制：本筆記以 GoF 二手整理為主，未逐句回校 GoF 原典英文定義；若需學術引用，建議核對 Gamma et al. 原書第 1、3–5 章。Interpreter 等少用模式的當代適用性，建議以團隊語境為準。\u003c/p\u003e\u003ch2\u003e七、Different Perspectives 不同視角\u003c/h2\u003e\u003cul\u003e\u003cli\u003e\u003cb\u003eGoF 原典視角（結構藍圖）：\u003c/b\u003e模式是「已驗證的物件導向結構詞彙」，重點在參與者、協作與取捨；Scope 維度提醒「類別模式靠繼承、物件模式靠組合」。\u003c/li\u003e\u003cli\u003e\u003cb\u003eHead First 視角（情境敘事）：\u003c/b\u003e以大量生活化情境與重構小步引導理解，強調「先聞到壞味道（大量 new、分支膨脹、重複結構），再聞到對應模式」的學習路徑。\u003c/li\u003e\u003cli\u003e\u003cb\u003eRefactoring.Guru／SourceMaking 視角（目錄式工具書）：\u003c/b\u003e以 Catalog＋Intent＋結構圖＋利弊清單為主，適合作為日常查表與對照選型的第一手參考。\u003c/li\u003e\u003cli\u003e\u003cb\u003e務實工程視角（Martin Fowler 等）：\u003c/b\u003e模式不是目標而是手段；先以重構與 SOLID 讓設計痛點浮現，再引入模式，且偏好組合與依賴注入勝於複雜繼承。\u003c/li\u003e\u003cli\u003e\u003cb\u003e語言演進視角（函式式／現代框架）：\u003c/b\u003eStrategy／Command 可被一級函式與 lambda 取代，Iterator／Observer 被語言與框架內建；模式沒有消失，而是「下沉為語言能力」。\u003c/li\u003e\u003c/ul\u003e\u003ch2\u003e八、Counterarguments 反對意見與張力\u003c/h2\u003e\u003cul\u003e\u003cli\u003e\u003cb\u003e「模式是語言缺陷的補丁」：\u003c/b\u003e在更具表達力的語言中，部分模式會顯得多餘（如以函式取代 Strategy）。回應：缺陷說只對「實作手法」成立，模式背後的設計思想（解耦、開閉、單一職責）仍具價值。\u003c/li\u003e\u003cli\u003e\u003cb\u003e「模式導致過度設計」：\u003c/b\u003e過早引入會製造不必要的抽象與間接。回應：以「痛點驅動」為原則，重構到需要時再套用；YAGNI 與「三次法則」是常見煞車。\u003c/li\u003e\u003cli\u003e\u003cb\u003e「GoF 是否過時」：\u003c/b\u003e23 個模式成書於 1990s，未涵蓋併發、分散式、領域驅動等當代主題。回應：GoF 仍是物件協作的基礎詞彙，缺口由企業模式、併發模式、架構模式補足，而非取代。\u003c/li\u003e\u003cli\u003e\u003cb\u003eSingleton 的存廢之爭：\u003c/b\u003e反對者認為 Singleton 本質是全域可變狀態。回應：在多數情境以 DI 容器管理生命週期（單例作用域）取代手寫 Singleton，僅在真正需「唯一實例」的資源上保留。\u003c/li\u003e\u003c/ul\u003e\u003ch2\u003e九、Common Misunderstandings 常見誤解\u003c/h2\u003e\u003cul\u003e\u003cli\u003e\u003cb\u003e誤解一：設計模式＝可直接複製的程式碼。\u003c/b\u003e 實際是結構藍圖，需依情境調整實作；照抄範例往往水土不服。\u003c/li\u003e\u003cli\u003e\u003cb\u003e誤解二：Simple Factory 是 GoF 模式。\u003c/b\u003e 不是；它是「集中 new」的通稱，GoF 的是 Factory Method 與 Abstract Factory。\u003c/li\u003e\u003cli\u003e\u003cb\u003e誤解三：模式越多越好。\u003c/b\u003e 模式有代價（間接層、類別膨脹、認知負擔），濫用會讓簡單問題複雜化。\u003c/li\u003e\u003cli\u003e\u003cb\u003e誤解四：Singleton＝全域變數。\u003c/b\u003e Singleton 控管「唯一實例與存取點」，但若承載可變全域狀態，其危害與全域變數無異，應審慎使用。\u003c/li\u003e\u003cli\u003e\u003cb\u003e誤解五：Decorator 與 Proxy 差不多。\u003c/b\u003e 兩者皆為包裝，但意圖不同：Decorator 為「加能力」可疊多層；Proxy 為「控管存取」通常單層且不改變客戶端語意。\u003c/li\u003e\u003cli\u003e\u003cb\u003e誤解六：學完 GoF 就懂架構。\u003c/b\u003e GoF 處理物件層協作；MVC/MVVM、六邊形架構、事件驅動等屬架構模式，位階更高、需另學。\u003c/li\u003e\u003c/ul\u003e\u003ch2\u003e十、Related Concepts 相關概念\u003c/h2\u003e\u003cul\u003e\u003cli\u003e\u003cb\u003eSOLID 原則：\u003c/b\u003e單一職責、開閉、里氏替換、介面隔離、依賴反轉；多數模式是 SOLID 在結構上的具體落點（如 Strategy 體現開閉、依賴反轉）。\u003c/li\u003e\u003cli\u003e\u003cb\u003e組合優於繼承（Composition over Inheritance）：\u003c/b\u003eGoF 核心偏好之一；Decorator、Strategy、Bridge 等皆以組合達成比繼承更靈活的擴充。\u003c/li\u003e\u003cli\u003e\u003cb\u003e反模式（Anti-pattern）：\u003c/b\u003e與模式對照的「看似合理實則有害」寫法，如 God Object、上帝類別、複製貼上式分支，常用來觸發重構與模式引入。\u003c/li\u003e\u003cli\u003e\u003cb\u003e重構（Refactoring）：\u003c/b\u003e在不改行為下改善結構；Refactoring.Guru 將重構與模式並列，強調「先重構讓問題現形，再選模式」的工作流。\u003c/li\u003e\u003cli\u003e\u003cb\u003e依賴注入（DI）與 IoC 容器：\u003c/b\u003e現代對創建型的系統化解法，將物件生命週期與組裝交給容器，弱化手寫 Factory／Singleton。\u003c/li\u003e\u003cli\u003e\u003cb\u003e架構模式 vs 設計模式：\u003c/b\u003eMVC／MVVM／事件驅動／分層架構處理系統級分工，GoF 處理物件級協作，位階與粒度不同。\u003c/li\u003e\u003c/ul\u003e\u003ch2\u003e十一、Knowledge Map 知識地圖\u003c/h2\u003e\u003cpre style=\"background:#f9f9f9; padding:12px; border-radius:6px; font-size:13px; line-height:1.6; overflow-x:auto;\"\u003e物件導向基礎（類別／介面／繼承 vs 組合）\n  └─ SOLID／高內聚低耦合／依賴反轉\n      └─ GoF 23 模式（Gamma et al., 1994）\n          ├─ 創建型 5：解耦 new\n          │   ├─ Singleton（唯一實例）\n          │   ├─ Factory Method（子類別決定生哪個）\n          │   ├─ Abstract Factory（成族更換）\n          │   ├─ Builder（逐步組裝）\n          │   └─ Prototype（複製而非新建）\n          ├─ 結構型 7：調和組裝\n          │   ├─ Adapter（轉接）─ Bridge（抽象×實作分離）\n          │   ├─ Composite（整體—部分一致）─ Decorator（疊加）\n          │   ├─ Facade（簡化門面）\n          │   └─ Flyweight（共享）─ Proxy（替身控管）\n          └─ 行為型 11：釐清協作\n              ├─ 策略族：Strategy／State／Template Method\n              ├─ 通知與迭代：Observer／Iterator\n              ├─ 請求物件化：Command／Chain of Responsibility／Mediator\n              └─ 狀態與結構操作：Memento／Visitor／Interpreter\n          └─ 當代演進：DI 容器、lambda／函式式、語言內建的 Iterator／事件\n              └─ 架構層：MVC／MVVM／六邊形／事件驅動（位階高於 GoF）\n\u003c/pre\u003e\u003ch2\u003e十二、What Next 延伸問題\u003c/h2\u003e\u003col\u003e\u003cli\u003e\u003cb\u003e從 GoF 到架構：\u003c/b\u003e當系統跨進分散式與事件驅動，哪些 GoF 思想仍適用、哪些需以架構模式（如 Saga、CQRS）接棒？\u003c/li\u003e\u003cli\u003e\u003cb\u003e併發與模式：\u003c/b\u003e在多執行緒／非同步環境下，Singleton、Observer、Proxy 的線程安全與背壓如何處理？有哪些專門的併發模式？\u003c/li\u003e\u003cli\u003e\u003cb\u003e函式式重寫：\u003c/b\u003e若以 Kotlin／TypeScript／Python 的一級函式與不可變資料重寫 GoF，哪些模式會消失、哪些會變形？\u003c/li\u003e\u003cli\u003e\u003cb\u003e領域驅動對接：\u003c/b\u003eGoF 模式如何與 DDD 的聚合、實體、值物件、資源庫協同？Builder 與 Factory 在聚合根的邊界何在？\u003c/li\u003e\u003cli\u003e\u003cb\u003e度量與煞車：\u003c/b\u003e如何用可觀測指標（變更成本、缺陷率、認知複雜度）判斷「該引入模式／該移除模式」的時機？\u003c/li\u003e\u003c/ol\u003e\u003ch2\u003e十三、Sources 來源\u003c/h2\u003e\u003col\u003e\u003cli\u003eGamma, Helm, Johnson, Vlissides — \u003cb\u003eDesign Patterns: Elements of Reusable Object-Oriented Software\u003c/b\u003e (1994, Addison-Wesley) — GoF 23 模式與 Purpose×Scope 分類的原典；本筆記的分類與 Intent 以二手整理對原典的穩定轉述為依據。\u003c/li\u003e\u003cli\u003eRefactoring.Guru — \u003cb\u003eThe Catalog of Design Patterns\u003c/b\u003e, https://refactoring.guru/design-patterns/catalog — 三分類定義與 23 條目的主骨架，含 Creational/Structural/Behavioral 的目的描述與 Intent。\u003c/li\u003e\u003cli\u003eRefactoring.Guru — \u003cb\u003eClassification of patterns\u003c/b\u003e, https://refactoring.guru/design-patterns/classification — 三類目的劃分的官方說明，與 Catalog 交叉一致。\u003c/li\u003e\u003cli\u003eRefactoring.Guru — \u003cb\u003eWhat's a design pattern?\u003c/b\u003e, https://refactoring.guru/design-patterns/what-is-pattern — 模式三／四要素（名稱／問題／解法／效果）與目的的權威二手定義。\u003c/li\u003e\u003cli\u003eSourceMaking — \u003cb\u003eDesign Patterns\u003c/b\u003e, https://sourcemaking.com/design_patterns — GoF 目錄與每模式 Intent 的另一權威目錄，與 Refactoring.Guru 對照驗證。\u003c/li\u003e\u003cli\u003eGeeksforGeeks — \u003cb\u003eGang of Four (GOF) Design Patterns\u003c/b\u003e, https://www.geeksforgeeks.org/system-design/gang-of-four-gof-design-patterns/ — 5＋7＋11 清單與 Intent 的可讀綜述，發布於 2023-09-26。\u003c/li\u003e\u003cli\u003eDigitalOcean — \u003cb\u003eGang of 4 Design Patterns Explained: Creational, Structural, Behavioral\u003c/b\u003e, https://www.digitalocean.com/community/tutorials/gangs-of-four-gof-design-patterns — GoF 背景與三分類的通俗整理，與前述來源交叉。\u003c/li\u003e\u003cli\u003eCoursera — \u003cb\u003eGang of Four Design Patterns: A Guide\u003c/b\u003e, https://www.coursera.org/articles/gang-of-four-design-patterns — 23 模式的分佈（5/7/11）與語言演進（部分模式已內建）的通說整理。\u003c/li\u003e\u003c/ol\u003e\u003cp style=\"color:#888; font-size:12px; margin-top:16px;\"\u003e註：Interpreter、Flyweight 等低頻模式的當代詮釋存在分歧；本筆記採 GoF 原意為準，實務選用請以團隊語境與可觀測痛點為準。Simple Factory 依社群通稱標註為非 GoF，以避免與 Factory Method／Abstract Factory 混淆。\u003c/p\u003e\u003ch2\u003e十四、研究後記（給下一棒與讀者的話）\u003c/h2\u003e\u003cp\u003e這份筆記刻意不讓你背 23 個名字，而是給你三把尺：\u003cb\u003enew 失控看創建、接口不合看結構、流程多變看行為\u003c/b\u003e。若只想帶走一句話，請記住——\u003cb\u003e模式的價值在「讓改變變得便宜」，而最大的反模式是為用而用。\u003c/b\u003e 下一次在白板上聽到「這裡用個 Observer／Decorator 好不好？」時，先問：痛點是什麼？不用會怎樣？代價誰來付？答得出來，模式就是幫手；答不出來，先重構再說。下一棒整理員可依此對照表補上團隊常用語言（Java／TypeScript／Python）的最小可跑片段，並將三張表收斂為一張速查卡。\u003c/p\u003e","id":"f7274cca8f5f8c8fc5f3ab19","inboxItemId":"6a8f927ed1399576af4730cb","itemType":"RESEARCH_NOTE","kbType":"Framework","name":"","originPluginDir":"30494b3b7ed927b5b8f99d74","originPluginID":"30494b3b7ed927b5b8f99d74","parents":{"default_research_kb_folder_6a8cf1cf024de832ca4e41":1787794496096},"relatedConcepts":"物件導向設計, SOLID 原則, 組合優於繼承, 重構, 依賴注入, 反模式, UML, 架構模式","relatedKnowledge":"c69ae83859d6e169fd959a1e","researchDepth":"Standard","sources":"[{\"name\":\"Design Patterns: Elements of Reusable Object-Oriented Software (Gamma et al., 1994)\",\"url\":\"https://en.wikipedia.org/wiki/Design_Patterns\",\"author\":\"Gamma, Helm, Johnson, Vlissides\",\"date\":\"1994\",\"type\":\"book\"},{\"name\":\"The Catalog of Design Patterns — Refactoring.Guru\",\"url\":\"https://refactoring.guru/design-patterns/catalog\",\"author\":\"Refactoring.Guru\",\"date\":\"\",\"type\":\"reference\"},{\"name\":\"Classification of patterns — Refactoring.Guru\",\"url\":\"https://refactoring.guru/design-patterns/classification\",\"author\":\"Refactoring.Guru\",\"date\":\"\",\"type\":\"reference\"},{\"name\":\"What's a design pattern? — Refactoring.Guru\",\"url\":\"https://refactoring.guru/design-patterns/what-is-pattern\",\"author\":\"Refactoring.Guru\",\"date\":\"\",\"type\":\"reference\"},{\"name\":\"Design Patterns — SourceMaking\",\"url\":\"https://sourcemaking.com/design_patterns\",\"author\":\"SourceMaking\",\"date\":\"\",\"type\":\"reference\"},{\"name\":\"Gang of Four (GOF) Design Patterns — GeeksforGeeks\",\"url\":\"https://www.geeksforgeeks.org/system-design/gang-of-four-gof-design-patterns/\",\"author\":\"GeeksforGeeks\",\"date\":\"2023-09-26\",\"type\":\"reference\"},{\"name\":\"Gang of 4 Design Patterns Explained — DigitalOcean\",\"url\":\"https://www.digitalocean.com/community/tutorials/gangs-of-four-gof-design-patterns\",\"author\":\"DigitalOcean\",\"date\":\"2025-06-12\",\"type\":\"reference\"},{\"name\":\"Gang of Four Design Patterns: A Guide — Coursera\",\"url\":\"https://www.coursera.org/articles/gang-of-four-design-patterns\",\"author\":\"Coursera\",\"date\":\"2026-04-18\",\"type\":\"reference\"}]","tags":"設計模式, GoF, 創建型模式, 結構型模式, 行為型模式, 軟體工程, 物件導向, SOLID","title":"軟體設計模式","tldr":"設計模式是針對常見設計難題、經反覆驗證的可復用結構藍圖，非可直接複製的程式碼\nGoF 23 模式依「處理對象」分三大家族：創建型管物件怎麼生（5 種）、結構型管類別與物件怎麼組合（7 種）、行為型管物件間如何協作與分工（11 種）\n每種模式皆有明確 Intent 與對應痛點：創建型解耦 new、結構型調和接口與擴充、行為型抽換演算法與釐清職責\n選型啟發式：new 在哪就看創建型、接口合不合看結構型、流程會不會變看行為型；現代語言以 DI 容器、lambda、內建 Iterator 等局部替代部分模式\n過度設計是最大陷阱：先讓設計痛點出現再引入模式，組合使用時以 SOLID 與組合優於繼承為判準","updatedAt":1788153673446,"updatedBy":{"agentId":"b67deecc74cf3029ce66c6f8","agentName":"知識整理員 Knowledge Curator","userId":"6a8cf1cf024de832ca4e41","userName":"Rechine"},"version":3},{"category":"哲學","coreConcept":"虛無主義是主張世界無內在意義、客觀價值與真理根基皆已崩解，或認為一切既有價值皆需被否定與重估的哲學立場家族。","createdAt":1787731210351,"deletedAt":null,"detailedNote":"\u003ch2\u003eTL;DR 摘要\u003c/h2\u003e\u003cul\u003e\u003cli\u003e\u003cb\u003e不是一人發明：\u003c/b\u003e虛無主義（nihilism，拉丁 nihil「無」）的哲學意涵由德國哲學家 F. H. Jacobi 在 1799 年《致費希特公開信》中首次鍛造，用以批判費希特的先驗觀念論；1862 年屠格涅夫《父與子》讓該詞透過文學人物巴札羅夫進入大眾語彙；尼采則將其提升為診斷整個西方文明危機的核心哲學概念。\u003c/li\u003e\u003cli\u003e\u003cb\u003e一句話內核：\u003c/b\u003e「最高價值自行貶值」（Die höchsten Werte entwerten sich）—— 世界沒有內在目的、客觀道德與絕對真理可依，所有意義皆失去根基。\u003c/li\u003e\u003cli\u003e\u003cb\u003e尼采的歷史診斷：\u003c/b\u003e虛無主義不是偶然思潮，而是基督教—柏拉圖傳統以「求真意志」自我瓦解的必然結果；歐洲接下來兩百年將以此為歷史主軸。\u003c/li\u003e\u003cli\u003e\u003cb\u003e深遠衝擊：\u003c/b\u003e直接催生存在主義（沙特、卡繆）、海德格的存在論、後現代的反基礎主義，並在俄國化為政治行動與文學母題。\u003c/li\u003e\u003cli\u003e\u003cb\u003e三條出路：\u003c/b\u003e尼采主張「價值重估、權力意志、永恆回歸、超人」、卡繆主張「承認荒謬、反抗、自由與熱情地活」、海德格則追問「存有本身的遺忘」以重新奠基。\u003c/li\u003e\u003c/ul\u003e\u003ch2\u003e一、核心問題\u003c/h2\u003e\u003cp\u003e使用者的原始提問涵蓋四環：「誰提出的—內容是什麼—有何影響—如何被回應」。這是一個典型的思想史敘事需求，若只給定義會失之單薄，若只講尼采又會誤導為「尼采發明虛無主義」。因此本筆記採取「概念接力」視角：先釐清詞源與三階段形成（Jacobi → 屠格涅夫 → 尼采），再展開類型學、內核論證、尼采診斷、歷史衝擊與克服方案，最後以辨誤與知識地圖收束，使讀者能一次掌握虛無主義從語詞到時代精神的完整脈絡。\u003c/p\u003e\u003cp\u003e\u003cb\u003e研究問題對應：\u003c/b\u003e詞源與提出脈絡（Q1）、定義與類型學（Q2）、思想內核與論證（Q3）、尼采的診斷（Q4）、對哲學史的衝擊（Q5）、克服與回應方案（Q6）。\u003c/p\u003e\u003ch2\u003e二、一句話定義\u003c/h2\u003e\u003cp\u003e\u003cb\u003e虛無主義（Nihilism）\u003c/b\u003e是主張世界無內在意義、客觀價值與真理根基皆已崩解，或認為一切既有價值皆應被否定、拆解乃至主動摧毀的哲學立場家族。\u003c/p\u003e\u003ch2\u003e三、白話解釋與正式解釋\u003c/h2\u003e\u003ch3\u003e白話版\u003c/h3\u003e\u003cp\u003e想像一棟大樓的地基被掏空，但住戶還在上面正常生活。虛無主義就是有人指出：「地基已經空了，你們以為堅固的地板其實懸在半空。」這個地基可能是「上帝」「理性」「進步」「道德」。虛無主義者說：這些東西從來沒有真正撐住過大樓，或是現在已經撐不住了。有人因此絕望躺平（被動虛無），有人因此想把整棟樓炸掉重蓋（主動／政治虛無），也有人說：既然沒有地基，我們就自己打一根新的。\u003c/p\u003e\u003ch3\u003e正式版\u003c/h3\u003e\u003cp\u003e在哲學史中，nihilism 並非單一命題，而是依「否定對象」與「否定態度」區分的立場束。其共同形式為：\u003cb\u003e對某類被視為具有客觀性／普遍性／基礎性的 X，主張 X 不存在、無價值、不可知或不具約束力。\u003c/b\u003e 依 X 的不同可分為：存在（意義）、道德（價值）、認識論（真理）、政治（秩序）等子類；依主體對此否定的情感與實踐姿態，可分為「被動—絕望—尋求替代安慰」與「主動—肯定破壞—創造新價值」兩極。IEP 將其概括為「所有價值皆無根（baseless），且無物可被確知或傳達」（Pratt, IEP）。\u003c/p\u003e\u003ch3\u003e類型對照表\u003c/h3\u003e\u003ctable border=\"1\" cellpadding=\"6\" cellspacing=\"0\" style=\"border-collapse:collapse; width:100%; font-size:14px;\"\u003e\u003cthead\u003e\u003ctr style=\"background:#f3f3f3;\"\u003e\u003cth\u003e類型\u003c/th\u003e\u003cth\u003e否定對象 X\u003c/th\u003e\u003cth\u003e典型命題\u003c/th\u003e\u003cth\u003e代表人物／文本\u003c/th\u003e\u003c/tr\u003e\u003c/thead\u003e\u003ctbody\u003e\u003ctr\u003e\u003ctd\u003e\u003cb\u003e存在虛無主義\u003c/b\u003e（Existential）\u003c/td\u003e\u003ctd\u003e生命的內在意義／目的\u003c/td\u003e\u003ctd\u003e人生無先天意義，宇宙不回應人的追問\u003c/td\u003e\u003ctd\u003e尼采、卡繆、沙特\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cb\u003e道德虛無主義\u003c/b\u003e（Moral / Ethical）\u003c/td\u003e\u003ctd\u003e客觀道德價值\u003c/td\u003e\u003ctd\u003e善惡非客觀事實，僅是情感或權力投射\u003c/td\u003e\u003ctd\u003eMackie 的錯誤理論、尼采《道德系譜學》\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cb\u003e認識論虛無主義\u003c/b\u003e（Epistemological）\u003c/td\u003e\u003ctd\u003e真理與知識的可能性\u003c/td\u003e\u003ctd\u003e無真理可知，或真理皆為視角建構\u003c/td\u003e\u003ctd\u003e懷疑論、後現代反基礎主義\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cb\u003e政治虛無主義\u003c/b\u003e（Political）\u003c/td\u003e\u003ctd\u003e既有政治／社會／宗教秩序的正當性\u003c/td\u003e\u003ctd\u003e必須摧毀現存秩序，破壞本身即創造\u003c/td\u003e\u003ctd\u003e巴枯寧、俄國 1860s 民粹派、Nechayev\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cb\u003e被動 vs 主動\u003c/b\u003e（尼采劃分）\u003c/td\u003e\u003ctd\u003e對「價值崩解」的態度\u003c/td\u003e\u003ctd\u003e被動：意義喪失後萎靡、尋新偶像替代；主動：主動拆解舊價值、為創造新價值清場\u003c/td\u003e\u003ctd\u003e尼采《權力意志》筆記\u003c/td\u003e\u003c/tr\u003e\u003c/tbody\u003e\u003c/table\u003e\u003ch2\u003e四、運作機制：虛無主義如何展開\u003c/h2\u003e\u003ch3\u003e1. 論證結構（四步崩解）\u003c/h3\u003e\u003col\u003e\u003cli\u003e\u003cb\u003e基礎宣稱崩解：\u003c/b\u003e原本支撐意義的基礎（上帝、理念、理性、進步）被證明為人類投射或自我矛盾。jacobi 對費希特的批判已預示此結構：以理性徹底化，最終只得到自我循環的空轉，主體之外無物（Nihilismus）。\u003c/li\u003e\u003cli\u003e\u003cb\u003e「上帝已死」（Gott ist tot）：\u003c/b\u003e尼采在《快樂的科學》125 節與《查拉圖斯特拉如是說》中借瘋人之口宣告：不只是基督教上帝之死，而是整個「超感官世界」作為價值源頭的失效。這是歐洲形上學兩千年的自我瓦解。\u003c/li\u003e\u003cli\u003e\u003cb\u003e最高價值自我貶值：\u003c/b\u003e尼采遺稿《權力意志》給出經典定義——「虛無主義意味著最高價值貶值自身，目的缺席，對『為何』找不到答案。」（Das höchste Werte entwerten sich）基督教以「求真」為美德，最終此求真意志回頭拆穿了基督教自身。\u003c/li\u003e\u003cli\u003e\u003cb\u003e後果分岔：\u003c/b\u003e被動者陷入「既然無意義，什麼也不值得做」的癱瘓，或急尋替代絕對（國家、科學、消費）；主動者則將否定轉為力量：「既然舊價值已死，我們來重估一切價值」（Umwertung aller Werte）。\u003c/li\u003e\u003c/ol\u003e\u003ch3\u003e2. 尼采的「自我瓦解」機制（為何是邏輯後果）\u003c/h3\u003e\u003cp\u003e尼采的洞見在於：虛無主義不是外部敵人攻破城牆，而是城牆以自身的邏輯倒塌。\u003c/p\u003e\u003cul\u003e\u003cli\u003e\u003cb\u003e柏拉圖—基督教預設：\u003c/b\u003e此岸世界為假象，彼岸（理念／天國）為真實，道德與真理繫於彼岸。\u003c/li\u003e\u003cli\u003e\u003cb\u003e近代科學與歷史批判：\u003c/b\u003e以求真為最高德性，逐步證明彼岸不可證、聖經可被歷史批判、道德可被系譜學還原為權力與怨恨。\u003c/li\u003e\u003cli\u003e\u003cb\u003e自我否定：\u003c/b\u003e支撐「求真」本身的道德信念（真理值得無條件追求）也隨彼岸崩解而失去根基，於是連「真理」本身都被相對化。\u003c/li\u003e\u003cli\u003e\u003cb\u003e結果：\u003c/b\u003e歐洲人發現自己「謀殺了上帝」卻不知如何自處，陷入價值真空。這就是尼采所說「虛無主義站在門前」（Der Nihilismus steht vor der Tür）。\u003c/li\u003e\u003c/ul\u003e\u003ch3\u003e3. 尼采的階段論\u003c/h3\u003e\u003cp\u003e尼采在遺稿中區分多階段，常見 정리為：\u003cbr\u003e\u003cb\u003e（a）不完全虛無主義\u003c/b\u003e：舊價值崩解後，急於用新偶像填補（科學主義、民族主義、進步史觀皆屬此類）；\u003cbr\u003e\u003cb\u003e（b）完全／被動虛無主義\u003c/b\u003e：看穿所有替代品亦無根，陷入疲憊與「末人」（der letzte Mensch）式的安逸虛無；\u003cbr\u003e\u003cb\u003e（c）主動／極端虛無主義\u003c/b\u003e：主動將否定推至極致，摧毀一切殘餘價值，為新創造清場；\u003cbr\u003e\u003cb\u003e（d）克服（Überwindung）：\u003c/b\u003e經由權力意志、永恆回歸與超人完成價值重估，虛無主義被「經歷並穿越」而非繞過。\u003c/p\u003e\u003ch2\u003e五、Example 案例\u003c/h2\u003e\u003ch3\u003e案例一：屠格涅夫《父與子》（1862）的巴札羅夫\u003c/h3\u003e\u003cp\u003e醫學生巴札羅夫自稱 nihilist：「我們否定一切。」他否定美學、貴族禮儀、浪漫愛情，只承認「可解剖、可實驗」的東西。小說出版後，俄國青年爭相自稱虛無主義者，但屠格涅夫的巴札羅夫最終在愛與死亡前顯露脆弱—— 顯示「全盤否定」在生存層面的不自洽。這個文學形象讓 nihilism 從德國哲學家的書齋詞彙，一舉成為俄國社會的身份標籤與政治運動名。\u003c/p\u003e\u003ch3\u003e案例二：尼采的「末人」與「超人」對照\u003c/h3\u003e\u003cp\u003e在《查拉圖斯特拉如是說》開篇，查拉圖斯特拉下山向群眾宣講超人，卻只換來對「末人」的歡呼。末人眨著眼說：「我們發明了幸福。」—— 他們不再追問意義，只求舒適與平等。末人即被動虛無主義的人格化：價值空洞卻不自知。相對地，超人（Übermensch）不是生物學上的優越人種，而是能夠承受「永恆回歸」—— 願意讓自己的一生在完全相同的細節中無限重演——並仍說「是」（Ja-sagen）的價值創造者。這一思想實驗用來檢驗人是否真正克服了虛無。\u003c/p\u003e\u003ch3\u003e案例三：當代「佛系／躺平」是否為虛無主義？\u003c/h3\u003e\u003cp\u003e流行語中的「做什麼都沒意義」常被標為虛無主義，但嚴格說多屬\u003cb\u003e被動存在虛無的情緒化表達\u003c/b\u003e，而非哲學立場。哲學上的虛無主義需有明確的否定論證與對價值根基的分析；情緒性的倦怠若未經此論證，更接近心理狀態或社會心態。區分二者可避免概念通貨膨脹。\u003c/p\u003e\u003ch2\u003e六、Evidence 證據與來源檢視\u003c/h2\u003e\u003cul\u003e\u003cli\u003e\u003cb\u003e詞源首創：\u003c/b\u003eJacobi 在 1799 年《Jacobi an Fichte》中首次以 Nihilismus／Nihilism 指稱費希特哲學的後果，SEP Jacobi 條目確認其為「賦予該詞哲學意涵的第一人」，並指出他將此視為「自亞里斯多德以來的理性主義必然結局」。此說與 IEP、Wikipedia Jacobi 條目交叉一致。\u003c/li\u003e\u003cli\u003e\u003cb\u003e文學普及：\u003c/b\u003e屠格涅夫《父與子》1862 年於《俄國信使》連載，Wikipedia 與 IEP 均確認該作「普及（popularized）」了 nihilism 一詞；小說人物巴札羅夫的自我標榜是關鍵機制。\u003c/li\u003e\u003cli\u003e\u003cb\u003e尼采的界定：\u003c/b\u003eIEP 引尼采《權力意志》遺稿：「虛無主義意味著最高價值貶值自身，目的缺席」；Wikipedia Nietzsche 條目亦以「上帝已死」為核心。可視為二手整理對原典的穩定轉述，證據品質高但需注意《權力意志》為遺稿編纂，引用時應註明為遺稿筆記（1883–1888）。\u003c/li\u003e\u003cli\u003e\u003cb\u003e俄國政治虛無主義：\u003c/b\u003eIEP 指 1860–1917 年間 nihilism 在俄國轉為革命運動，巴枯寧名言「破壞的熱情亦是創造的熱情」為佐證；此屬思想史通說，證據品質中等，需與俄國思想史專著交叉。\u003c/li\u003e\u003cli\u003e\u003cb\u003e海德格詮釋：\u003c/b\u003eJSTOR 論文 Conway (1992) 與 Polity 出版的 Heidegger《Metaphysics and Nihilism》均指出，海德格將虛無主義重新詮釋為「存有（Being）本身被遺忘的歷史」，其本質為「關於存有本身，一無所有」。此為海德格後期思想的權威詮釋，屬二手研究。\u003c/li\u003e\u003c/ul\u003e\u003cp\u003e\u003cb\u003e證據限制：\u003c/b\u003e本筆記主要依賴百科與二手綜述對原典的轉述，未直接引用尼采、海德格德文原典逐句校勘；對俄國運動史亦未展開檔案級考證。關鍵定義句已多源交叉，但若需學術引用，建議回查 Kaufmann / Hollingdale 英譯或 Colli-Montinari 德文校勘本。\u003c/p\u003e\u003ch2\u003e七、Different Perspectives 不同視角\u003c/h2\u003e\u003cul\u003e\u003cli\u003e\u003cb\u003e尼采（診斷與穿越）：\u003c/b\u003e虛無主義是必須被「經歷」的過渡病理階段，而非終點。被動虛無應轉為主動，最終以權力意志與永恆回歸完成價值重估。\u003c/li\u003e\u003cli\u003e\u003cb\u003e海德格（存有史視角）：\u003c/b\u003e虛無主義不是價值問題，而是「存有被遺忘」的歷史命運；尼采的權力意志本身仍是形上學的完成，故未能真正克服虛無，需回到對存有的聆聽與「克服形上學」。\u003c/li\u003e\u003cli\u003e\u003cb\u003e存在主義（沙特／卡繆）：\u003c/b\u003e沙特接受「存在先於本質」，人在無根中被迫自由；卡繆則拒斥自殺與哲學自殺，主張在荒謬中「反抗、自由、熱情」。兩者皆不重建絕對基礎，而是在無基礎上肯定行動。\u003c/li\u003e\u003cli\u003e\u003cb\u003e後現代／反基礎主義（德希達、羅蒂、傅柯）：\u003c/b\u003e將虛無主義的「無基礎」常態化，主張真理皆為論述或權力效果，解構即是與虛無共處的方式。此視角被批評為「快樂的虛無主義」（Carr, 1992），有去政治化的風險。\u003c/li\u003e\u003cli\u003e\u003cb\u003e俄國文學視角（杜斯妥也夫斯基）：\u003c/b\u003e在《群魔》《卡拉馬助夫兄弟》中把虛無主義呈現為道德與靈魂的災難—— 「如果上帝不存在，一切皆被允許」—— 預示政治虛無主義通向恐怖主義的精神後果。\u003c/li\u003e\u003cli\u003e\u003cb\u003e宗教哲學回應：\u003c/b\u003e如 Tillich、Maritain 等認為虛無主義源於信仰形式的僵化，克服之道在於重建「終極關懷」而非回到前現代教條。\u003c/li\u003e\u003c/ul\u003e\u003ch2\u003e八、Counterarguments 反對意見與張力\u003c/h2\u003e\u003cul\u003e\u003cli\u003e\u003cb\u003e「虛無主義自我指涉矛盾」：\u003c/b\u003e若「一切價值皆無根」為真，則「應否定一切價值」本身亦無根，虛無主義無法提出規範性主張。這是對道德與認識論虛無主義最常見的邏輯反駁。\u003c/li\u003e\u003cli\u003e\u003cb\u003e「尼采是否仍是虛無主義者」之爭：\u003c/b\u003e一派認為尼采主動虛無主義仍以「權力」為新絕對，換湯不換藥；另一派認為尼采恰是透過肯定生成與詮釋，解構了對「絕對」的需求本身。\u003c/li\u003e\u003cli\u003e\u003cb\u003e海德格對尼采的批判：\u003c/b\u003e海德格指尼采以權力意志克服虛無，實為「主體性形上學的頂峰」，仍將存有化約為價值設定，未觸及存有本身的虛無本質。\u003c/li\u003e\u003cli\u003e\u003cb\u003e卡繆對尼采與政治虛無主義的警惕：\u003c/b\u003e卡繆在《反抗者》中指出，從「上帝已死」若推至「一切皆可」，可能正當化謀殺與極權；真正的反抗必須在否定中自我設限（「我反抗，故我們存在」）。\u003c/li\u003e\u003cli\u003e\u003cb\u003e當代倫理學的回應：\u003c/b\u003e分析哲學的道德實在論（如 Parfit、Scanlon）與建構主義試圖證明：即使無超自然基礎，道德仍可有客觀或理性可辯護的基礎，虛無主義的「無根」前提可被局部反駁。\u003c/li\u003e\u003c/ul\u003e\u003ch2\u003e九、Common Misunderstandings 常見誤解\u003c/h2\u003e\u003cul\u003e\u003cli\u003e\u003cb\u003e誤解一：虛無主義＝悲觀／厭世／躺平。\u003c/b\u003e 悲觀是情緒，虛無主義是關於價值與真理根基的哲學論證；一個快樂的人也可能是哲學上的虛無主義者。\u003c/li\u003e\u003cli\u003e\u003cb\u003e誤解二：虛無主義是尼采發明的。\u003c/b\u003e 尼采是將其哲學化與時代診斷化的關鍵人物，但詞彙的哲學首用是 Jacobi（1799），大眾化則靠屠格涅夫（1862）。\u003c/li\u003e\u003cli\u003e\u003cb\u003e誤解三：虛無主義者什麼都不信、什麼都不做。\u003c/b\u003e 這只描述了被動虛無主義；主動與政治虛無主義恰恰非常積極—— 積極地破壞與創造。\u003c/li\u003e\u003cli\u003e\u003cb\u003e誤解四：克服虛無主義就是重新信教或回到傳統價值。\u003c/b\u003e 尼采、海德格、卡繆皆明確拒斥「回到過去」；他們的方案是穿越虛無、重估或重建，而非復辟。\u003c/li\u003e\u003cli\u003e\u003cb\u003e誤解五：後現代＝虛無主義。\u003c/b\u003e 後現代確實共享反基礎立場，但多數後現代思想家（如德希達）會否認自己是虛無主義者，並主張解構本身是一種倫理實踐。\u003c/li\u003e\u003cli\u003e\u003cb\u003e誤解六：超人是優越人種或獨裁者。\u003c/b\u003e Übermensch 在尼采處是價值創造能力的理想型，與生物優生或政治強人無關，納粹的挪用是嚴重誤讀。\u003c/li\u003e\u003c/ul\u003e\u003ch2\u003e十、Related Concepts 相關概念\u003c/h2\u003e\u003cul\u003e\u003cli\u003e\u003cb\u003e懷疑論（Skepticism）：\u003c/b\u003e虛無主義的認識論近親；古代皮浪懷疑論已具「懸置判斷」形態，但懷疑論止於「不可知」，虛無主義則進一步否定價值本身。\u003c/li\u003e\u003cli\u003e\u003cb\u003e存在主義（Existentialism）：\u003c/b\u003e對虛無主義最直接的回應之一；接受無先天本質，但在自由與承諾中創造意義（沙特：存在先於本質）。\u003c/li\u003e\u003cli\u003e\u003cb\u003e荒謬主義（Absurdism）：\u003c/b\u003e卡繆的定位：世界不提供意義（虛無主義診斷為真），但人不應自殺或寄託虛假希望，而應反抗。\u003c/li\u003e\u003cli\u003e\u003cb\u003e相對主義／反實在論：\u003c/b\u003e在認識與道德領域與虛無主義部分重疊，但相對主義承認「相對於框架為真」，虛無主義則否定框架本身的約束力。\u003c/li\u003e\u003cli\u003e\u003cb\u003e犬儒主義（Cynicism，古希臘 Kynicism 與現代 cynicism）：\u003c/b\u003e前者為倫理實踐，後者為對價值的嘲諷性不信任，常被通俗地與虛無主義混淆。\u003c/li\u003e\u003cli\u003e\u003cb\u003e形上學與價值重估（Metaphysics / Umwertung）：\u003c/b\u003e理解尼采—海德格脈絡的關鍵對子：形上學的完成即虛無主義的極致，克服則需非形上學的思維。\u003c/li\u003e\u003c/ul\u003e\u003ch2\u003e十一、Knowledge Map 知識地圖\u003c/h2\u003e\u003cpre style=\"background:#f9f9f9; padding:12px; border-radius:6px; font-size:13px; line-height:1.6; overflow-x:auto;\"\u003e拉丁 nihil（無）\n  └─ Jacobi 1799《致費希特》首創哲學意涵：理性徹底化 → 自我空轉 = Nihilismus\n      ├─ 德國觀念論論戰（康德—費希特—謝林—黑格爾）\n      └─ 俄國脈絡：屠格涅夫 1862《父與子》巴札羅夫 → 大眾化 → 1860s 政治虛無主義運動（巴枯寧／Nechayev）\n          └─ 尼采 1880s 哲學化：上帝已死 → 最高價值自我貶值 → 被動／主動虛無 → 末人 vs 超人\n              ├─ 權力意志（Wille zur Macht）\n              ├─ 永恆回歸（Ewige Wiederkunft）\n              ├─ 價值重估（Umwertung aller Werte）\n              └─ 分岔回應：\n                  ├─ 存在主義：沙特（自由）、卡繆（荒謬—反抗—自由—熱情）\n                  ├─ 海德格：存有遺忘史 → 克服形上學\n                  ├─ 後現代：德希達／羅蒂／傅柯（反基礎、解構）\n                  └─ 宗教／倫理重建：Tillich、當代道德實在論\n\u003c/pre\u003e\u003ch2\u003e十二、What Next 延伸問題\u003c/h2\u003e\u003col\u003e\u003cli\u003e\u003cb\u003e當代虛無主義的新形態：\u003c/b\u003e在演算法、消費主義與氣候焦慮時代，被動虛無主義是否以「資訊過載式冷漠」呈現？如何與古典診斷對話？\u003c/li\u003e\u003cli\u003e\u003cb\u003e尼采遺稿的詮釋爭議：\u003c/b\u003e《權力意志》作為妹妹 Elisabeth 編纂的遺稿選集，其文本可靠性如何影響我們對「權力意志」與虛無主義階段論的理解？\u003c/li\u003e\u003cli\u003e\u003cb\u003e政治虛無主義的當代回響：\u003c/b\u003e從俄國民粹派到當代加速主義與網絡無政府主義，政治虛無主義的「破壞即創造」邏輯有何延續與變異？\u003c/li\u003e\u003cli\u003e\u003cb\u003e東西方對話：\u003c/b\u003e佛教「空」（śūnyatā）與道家「無」常被比附為虛無主義，此比附在何種意義上成立／誤導？（可延伸至京都學派對虛無主義的回應）\u003c/li\u003e\u003cli\u003e\u003cb\u003e實踐層面的克服：\u003c/b\u003e若不接受超人或存有追問，一般人如何在日常生活中「穿越」虛無？心理學的意義療法（Frankl）與哲學方案如何互補？\u003c/li\u003e\u003c/ol\u003e\u003ch2\u003e十三、Sources 來源\u003c/h2\u003e\u003col\u003e\u003cli\u003eAlan Pratt — \u003cb\u003e“Nihilism”\u003c/b\u003e, Internet Encyclopedia of Philosophy, https://iep.utm.edu/nihilism/ — 本筆記定義、類型學、起源與回應方案的主要骨架，深具可讀性的二手綜述。\u003c/li\u003e\u003cli\u003eStanford Encyclopedia of Philosophy — \u003cb\u003e“Friedrich Heinrich Jacobi”\u003c/b\u003e, https://plato.stanford.edu/entries/friedrich-jacobi/ — 確認 Jacobi 1799《Jacobi an Fichte》首創哲學意涵的關鍵證據。\u003c/li\u003e\u003cli\u003eWikipedia — \u003cb\u003e“Friedrich Nietzsche”\u003c/b\u003e (Death of God and nihilism 節), https://en.wikipedia.org/wiki/Friedrich_Nietzsche — 尼采「上帝已死」、被動／主動劃分、超人與永恆回歸的通說整理。\u003c/li\u003e\u003cli\u003eWikipedia — \u003cb\u003e“Fathers and Sons (novel)”\u003c/b\u003e, https://en.wikipedia.org/wiki/Fathers_and_Sons_(novel) — 屠格涅夫 1862 年出版與普及作用的事實核實。\u003c/li\u003e\u003cli\u003eWikipedia — \u003cb\u003e“The Myth of Sisyphus”\u003c/b\u003e, https://en.wikipedia.org/wiki/The_Myth_of_Sisyphus — 卡繆荒謬與反抗方案的文本依據。\u003c/li\u003e\u003cli\u003eWikipedia — \u003cb\u003e“Friedrich Heinrich Jacobi”\u003c/b\u003e, https://en.wikipedia.org/wiki/Friedrich_Heinrich_Jacobi — Jacobi 生平與「普及 nihilism 概念」的交叉驗證。\u003c/li\u003e\u003cli\u003eDaniel W. Conway — \u003cb\u003e“Heidegger, Nietzsche, and the Origins of Nihilism”\u003c/b\u003e, Journal of Nietzsche Studies, JSTOR 20717561 (1992) — 海德格對虛無主義的存有史詮釋。\u003c/li\u003e\u003cli\u003eResearchGate — \u003cb\u003e“Nietzsche's Shadow: On the origin and development of the term nihilism”\u003c/b\u003e (2020) — 詞源演變的學術綜述，補強三階段敘事。\u003c/li\u003e\u003c/ol\u003e\u003cp style=\"color:#888; font-size:12px; margin-top:16px;\"\u003e註：尼采原典引文轉引自 IEP 與 Wikipedia 對《權力意志》遺稿的二手整理；若需精確引註，建議核對 Colli-Montinari 校勘本（KSA）或 Kaufmann 英譯本。《權力意志》本身為遺稿編纂，引用時應標明為遺稿筆記。\u003c/p\u003e\u003ch2\u003e十四、研究後記（給下一棒與讀者的話）\u003c/h2\u003e\u003cp\u003e本筆記刻意以「Jacobi → 屠格涅夫 → 尼采」的接力時間軸破解「尼采發明虛無主義」的常見誤解，並以「被動／主動」與「存在／道德／認識／政治」兩把尺貫穿全文，使讀者在面對當代流行語中的「虛無」時能迅速定位其所指。若讀者只想帶走一句話，請記住尼采的診斷：\u003cb\u003e虛無主義不是要被反駁的錯誤，而是要被穿越的歷史。\u003c/b\u003e 穿越的方式，尼采給了「創造」、卡繆給了「反抗」、海德格給了「追問」—— 三條路皆不承諾輕鬆，但皆拒絕以新的偶像草率填補空洞。\u003c/p\u003e","id":"41d0b6cb0a60547853ae08ac","inboxItemId":"6a8e9a5ad4ecf11545f9f346","isPublic":false,"itemType":"RESEARCH_NOTE","kbType":"Theory","name":"","originPluginDir":"30494b3b7ed927b5b8f99d74","originPluginID":"30494b3b7ed927b5b8f99d74","parents":{"default_research_kb_folder_6a8cf1cf024de832ca4e41":1787731210351},"preParentID":null,"relatedConcepts":"存在主義, 荒謬主義, 後現代主義, 道德虛無主義, 認識論虛無主義, 超人, 永恆回歸, 上帝已死, 現象學","researchDepth":"Standard","sources":"[{\"name\":\"Nihilism — Internet Encyclopedia of Philosophy (Alan Pratt)\",\"url\":\"https://iep.utm.edu/nihilism/\",\"author\":\"Alan Pratt\",\"date\":\"\",\"type\":\"encyclopedia\"},{\"name\":\"Friedrich Heinrich Jacobi — Stanford Encyclopedia of Philosophy\",\"url\":\"https://plato.stanford.edu/entries/friedrich-jacobi/\",\"author\":\"Stanford Encyclopedia of Philosophy\",\"date\":\"\",\"type\":\"encyclopedia\"},{\"name\":\"Friedrich Nietzsche — Wikipedia (Death of God and Nihilism)\",\"url\":\"https://en.wikipedia.org/wiki/Friedrich_Nietzsche\",\"author\":\"Wikipedia\",\"date\":\"\",\"type\":\"reference\"},{\"name\":\"Fathers and Sons (novel) — Wikipedia\",\"url\":\"https://en.wikipedia.org/wiki/Fathers_and_Sons_(novel)\",\"author\":\"Wikipedia\",\"date\":\"\",\"type\":\"reference\"},{\"name\":\"The Myth of Sisyphus — Wikipedia\",\"url\":\"https://en.wikipedia.org/wiki/The_Myth_of_Sisyphus\",\"author\":\"Wikipedia\",\"date\":\"\",\"type\":\"reference\"},{\"name\":\"Friedrich Heinrich Jacobi — Wikipedia\",\"url\":\"https://en.wikipedia.org/wiki/Friedrich_Heinrich_Jacobi\",\"author\":\"Wikipedia\",\"date\":\"\",\"type\":\"reference\"},{\"name\":\"Heidegger, Nietzsche, and the Origins of Nihilism (JSTOR, Conway 1992)\",\"url\":\"https://www.jstor.org/stable/20717561\",\"author\":\"Daniel W. Conway\",\"date\":\"1992\",\"type\":\"journal\"},{\"name\":\"Nietzsche's Shadow: On the origin and development of the term nihilism (ResearchGate, 2020)\",\"url\":\"https://www.researchgate.net/publication/346594539_Nietzsche's_shadow_On_the_origin_and_development_of_the_term_nihilism\",\"author\":\"ResearchGate\",\"date\":\"2020\",\"type\":\"journal\"}]","tags":"虛無主義, 尼采, 存在主義, 卡繆, 海德格, 屠格涅夫, Jacobi, 哲學史, 價值哲學","title":"虛無主義是什麼","tldr":"虛無主義不是某一人發明，而是 Jacobi 哲學論戰首創哲學意涵、屠格涅夫文學普及、尼采哲學化的三階段概念接力, 核心主張是最高價值自我貶值、世界無內在意義與客觀價值根基, 尼采診斷其為基督教—柏拉圖傳統以「真理意志」自我瓦解的兩千年邏輯後果, 它催生了存在主義、後現代與政治虛無主義等整個 20 世紀思想版圖, 克服路徑分三條：尼采的價值重估與超人、卡繆的荒謬反抗、海德格的存在追問","updatedAt":1787735402128,"updatedBy":{"userId":"6a8cf1cf024de832ca4e41","userName":"Rechine"},"version":3},{"createdAt":1787724024344,"deletedAt":null,"id":"default_research_inbox_folder_6a8cf1cf024de832ca4e41","isNew":false,"isPublic":false,"itemType":"RESEARCH_INBOX_FOLDER","name":"研究收件匣","originPluginDir":"30494b3b7ed927b5b8f99d74","originPluginID":"30494b3b7ed927b5b8f99d74","parents":{"researchConsole":1787724024344},"preParentID":null,"reviewedAt":0,"updatedAt":1787724024344,"updatedBy":{"userId":"6a8cf1cf024de832ca4e41","userName":"Rechine"},"version":1},{"category":"SICP","createdAt":1788155718278,"finalNoteId":"8b3819be924e66f627a64913","id":"6a95174680d1d10080f7748b","itemType":"RESEARCH_INBOX_ITEM","name":"SICP 1-1","needsUserInput":false,"needsUserInputNote":"","originPluginDir":"30494b3b7ed927b5b8f99d74","originPluginID":"30494b3b7ed927b5b8f99d74","originalQuestion":"1.1.1到1.1.8各小章節在討論說明什麼\n\n本題隸屬研究專案「SICP」。必須先讀取下列專案參考文件，並以它們作為主要來源；只有文件未涵蓋或需要交叉驗證時，才補充網路資料。來源欄需清楚標示每份使用的專案文件。\nsicp.md：https://cdn.cubelv.com/uploads/6a8cf1cf024de832ca4e41/250a1e08-f1a5-4542-ab34-c2e3044a1080.md","parents":{"default_research_inbox_folder_6a8cf1cf024de832ca4e41":1788155718278},"priority":"中","relatedTopics":"SICP\ncubelv://research_project/6a94f64a80d1d10080f77485\n參考文件夾：cubelv://file_folder/6a94f64a80d1d10080f77486","researchDepth":"Standard","researchPlan":"\u003ch2\u003eResearch Plan｜SICP 1-1\u003c/h2\u003e\u003cp\u003e\u003cstrong\u003e所屬專案：\u003c/strong\u003e\u003citem-embed item-id=\"6a94f64a80d1d10080f77485\"\u003e\u003c/item-embed\u003e\u003cbr\u003e\u003cstrong\u003e分類：\u003c/strong\u003eSICP｜\u003cstrong\u003e深度：\u003c/strong\u003eStandard｜\u003cstrong\u003e狀態：\u003c/strong\u003eResearching\u003c/p\u003e\u003ch3\u003e一、核心問題判讀\u003c/h3\u003e\u003cp\u003e題目要逐節理解《Structure and Interpretation of Computer Programs》1.1.1–1.1.8，而非只翻譯章名。分析應說明每一節的核心概念、在前後節之間的承接，以及它們如何共同建立「以程序建構抽象」的能力：表達式與命名 → 組合式求值 → 複合程序 → substitution model → 條件與述詞 → Newton’s method → black-box abstraction。\u003c/p\u003e\u003ch3\u003e二、子問題（7 題）\u003c/h3\u003e\u003col\u003e\u003cli\u003e\u003cstrong\u003e第 1.1 節在全書與第 1 章中的任務是什麼？1.1.1–1.1.8 如何由基本元素逐步建立程序抽象？\u003c/strong\u003e\u003cbr\u003e先給讀者概念地圖，避免把八節看成零散語法。\u003c/li\u003e\u003cli\u003e\u003cstrong\u003e1.1.1 Expressions 與 1.1.2 Naming and the Environment 分別建立哪些運算與命名觀念？\u003c/strong\u003e\u003cbr\u003e說明 primitive expressions、組合式與 define／環境的起點。\u003c/li\u003e\u003cli\u003e\u003cstrong\u003e1.1.3 Evaluating Combinations 與 1.1.4 Compound Procedures 如何解釋組合式求值及使用者定義程序？\u003c/strong\u003e\u003cbr\u003e建立 operator／operands 與程序抽象的基本機制。\u003c/li\u003e\u003cli\u003e\u003cstrong\u003e1.1.5 The Substitution Model for Procedure Application 能解釋什麼、又在哪些情況失效？\u003c/strong\u003e\u003cbr\u003e掌握代換模型，並為後續 environment model 埋下界線。\u003c/li\u003e\u003cli\u003e\u003cstrong\u003e1.1.6 Conditional Expressions and Predicates 如何把條件、布林判斷與程序控制流程串起來？\u003c/strong\u003e\u003cbr\u003e釐清 cond、if、predicate 與遞迴／分支思考的角色。\u003c/li\u003e\u003cli\u003e\u003cstrong\u003e1.1.7 Example: Square Roots by Newton’s Method 如何將數學方法轉譯為逐步逼近的程序？\u003c/strong\u003e\u003cbr\u003e以代表性案例連結問題拆解、good-enough? 與迭代改善。\u003c/li\u003e\u003cli\u003e\u003cstrong\u003e1.1.8 Procedures as Black-Box Abstractions 如何說明程序邊界、區域名稱與內部定義？八節最後形成何種抽象化能力？\u003c/strong\u003e\u003cbr\u003e收束 black-box abstraction、local names 與 block structure，連回專案目標。\u003c/li\u003e\u003c/ol\u003e\u003ch3\u003e三、前置知識\u003c/h3\u003e\u003cul\u003e\u003cli\u003e基本代數運算與函數概念。\u003c/li\u003e\u003cli\u003e程式的輸入、輸出、變數／名稱與函數（procedure）最基本觀念。\u003c/li\u003e\u003cli\u003e不要求先熟悉 Scheme；首次出現的 Scheme 語法應就地解釋。\u003c/li\u003e\u003c/ul\u003e\u003ch3\u003e四、研究範圍\u003c/h3\u003e\u003cp\u003e\u003cstrong\u003e涵蓋：\u003c/strong\u003e1.1.1–1.1.8 每節的問題意識、關鍵術語、範例的推理步驟、前後依賴關係，以及一份可供初學者複習的概念流程圖／對照表。\u003c/p\u003e\u003cp\u003e\u003cstrong\u003e排除：\u003c/strong\u003e不提前詳解第 1.2 節以後的遞迴程序與高階程序；不做完整 Scheme 環境安裝教學；不把後續 environment model 的細節倒灌到 1.1，但可標示代換模型的適用界線。\u003c/p\u003e\u003ch3\u003e五、來源與證據要求\u003c/h3\u003e\u003cp\u003e\u003cstrong\u003e主來源（必用）：\u003c/strong\u003e\u003ca href=\"cubelv://file/6a94f65580d1d10080f77487\"\u003eSICP 專案參考文件：sicp.md\u003c/a\u003e，已確認含第 1.1.1–1.1.8 完整章節。每個主要論點與各小節解讀均應優先以此文件為據，來源欄須清楚標示「專案文件：sicp.md」。僅在術語釐清或交叉驗證不足時，補充 MIT Press／SICP 官方或高品質課程資料，並標示用途。\u003c/p\u003e\u003ch3\u003e六、給分析員的執行指引（Standard）\u003c/h3\u003e\u003cul\u003e\u003cli\u003e產出 14 節結構化研究筆記，先給 3–5 點 TL;DR；中文說明保留 Expressions、Environment、Compound Procedures、Substitution Model、Predicates、Newton’s Method、Black-Box Abstraction 等關鍵英文術語。\u003c/li\u003e\u003cli\u003e以「節次／本節要回答的問題／核心概念／關鍵例子／接到下一節」的表格完整覆蓋八節。\u003c/li\u003e\u003cli\u003e必須解說 1.1.5 的 applicative order 與 normal order，並清楚限定 substitution model 的用途與限制。\u003c/li\u003e\u003cli\u003eNewton 平方根案例應著重「改善猜測→停止條件→程序分層」的抽象化洞見，避免只列程式碼。\u003c/li\u003e\u003cli\u003e結尾提供一條 1.1.1→1.1.8 的概念主線與 3–5 個常見誤解校正，讓讀者能接續第 1.2 節。\u003c/li\u003e\u003cli\u003e來源至少列出專案文件 sicp.md；若補充外部資料，區分原典、官方課程與二手解說。\u003c/li\u003e\u003c/ul\u003e\u003cp\u003e\u003cem\u003e本計畫由研究協調員建立，供研究分析員直接接手。\u003c/em\u003e\u003c/p\u003e","researchTitle":"SICP 1-1","sourceUrls":"cubelv://file/6a94f65580d1d10080f77487","status":"Completed","subQuestions":"[{\"n\":1,\"question\":\"第 1.1 節在全書與第 1 章中的任務是什麼？1.1.1–1.1.8 如何由基本元素逐步建立程序抽象？\",\"purpose\":\"先給讀者概念地圖，避免把八節看成零散語法。\"},{\"n\":2,\"question\":\"1.1.1 Expressions 與 1.1.2 Naming and the Environment 分別建立哪些運算與命名觀念？\",\"purpose\":\"說明 primitive expressions、組合式與 define／環境的起點。\"},{\"n\":3,\"question\":\"1.1.3 Evaluating Combinations 與 1.1.4 Compound Procedures 如何解釋組合式求值及使用者定義程序？\",\"purpose\":\"建立 operator／operands 與程序抽象的基本機制。\"},{\"n\":4,\"question\":\"1.1.5 The Substitution Model for Procedure Application 能解釋什麼、又在哪些情況失效？\",\"purpose\":\"掌握代換模型，並為後續 environment model 埋下界線。\"},{\"n\":5,\"question\":\"1.1.6 Conditional Expressions and Predicates 如何把條件、布林判斷與程序控制流程串起來？\",\"purpose\":\"釐清 cond、if、predicate 與遞迴／分支思考的角色。\"},{\"n\":6,\"question\":\"1.1.7 Example: Square Roots by Newton’s Method 如何將數學方法轉譯為逐步逼近的程序？\",\"purpose\":\"以代表性案例連結問題拆解、good-enough? 與迭代改善。\"},{\"n\":7,\"question\":\"1.1.8 Procedures as Black-Box Abstractions 如何說明程序邊界、區域名稱與內部定義？八節最後形成何種抽象化能力？\",\"purpose\":\"收束 black-box abstraction、local names 與 block structure，連回專案目標。\"}]","updatedAt":1788156089219,"updatedBy":{"agentId":"b67deecc74cf3029ce66c6f8","agentName":"知識整理員 Knowledge Curator","userId":"6a8cf1cf024de832ca4e41","userName":"Rechine"},"version":4},{"category":"Computer Science","createdAt":1788153327642,"finalNoteId":"c69ae83859d6e169fd959a1e","id":"6a950def80d1d10080f77488","itemType":"RESEARCH_INBOX_ITEM","name":"SICP大綱","needsUserInput":false,"needsUserInputNote":"","originPluginDir":"30494b3b7ed927b5b8f99d74","originPluginID":"30494b3b7ed927b5b8f99d74","originalQuestion":"SICP各章節在討論說明甚麼\n\n本題隸屬研究專案「SICP」。必須先讀取下列專案參考文件，並以它作為主要來源；只有文件未涵蓋或需要交叉驗證時，才補充網路資料。來源欄需清楚標示使用的專案文件。\nsicp.md：https://cdn.cubelv.com/uploads/6a8cf1cf024de832ca4e41/250a1e08-f1a5-4542-ab34-c2e3044a1080.md","parents":{"default_research_inbox_folder_6a8cf1cf024de832ca4e41":1788153327642},"priority":"中","relatedTopics":"SICP\ncubelv://research_project/6a94f64a80d1d10080f77485\n參考文件夾：cubelv://file_folder/6a94f64a80d1d10080f77486","researchDepth":"Standard","researchPlan":"\u003ch2\u003e專案來源要求\u003c/h2\u003e\u003cp\u003e本題隸屬研究專案「SICP」。必須先讀取 \u003ca href=\"cubelv://file/6a94f65580d1d10080f77487\"\u003esicp.md\u003c/a\u003e，並以它作為主要來源；只有文件未涵蓋或需要交叉驗證時，才補充網路資料。來源欄需清楚標示使用的專案文件。\u003c/p\u003e","researchTitle":"SICP大綱","sourceUrls":"cubelv://file/6a94f65580d1d10080f77487","status":"Completed","subQuestions":"[{\"question\":\"全書的核心主張與五章之間的概念主線是什麼？\",\"purpose\":\"建立先有地圖再讀細節的全局理解。\"},{\"question\":\"第 1 章如何以程序、遞迴與高階程序建立抽象化觀念？\",\"purpose\":\"說明計算程序與程序抽象的起點。\"},{\"question\":\"第 2 章如何從資料抽象到通用運算與物件導向式抽象？\",\"purpose\":\"釐清複合資料、層次資料與資料導向設計。\"},{\"question\":\"第 3 章為何引入狀態、賦值、物件與並行？\",\"purpose\":\"理解純函數模型的界限及時間觀點。\"},{\"question\":\"第 4 章如何以直譯器與邏輯程式設計揭示程式語言的結構？\",\"purpose\":\"掌握 metalinguistic abstraction 與求值策略。\"},{\"question\":\"第 5 章如何把機器模型、編譯與暫存器機器連回前四章？\",\"purpose\":\"串連高階抽象與底層執行。\"},{\"question\":\"不同背景的讀者應如何閱讀，各章應帶走什麼能力？\",\"purpose\":\"產出可行的閱讀路徑與避坑提示。\"}]","updatedAt":1788154174573,"updatedBy":{"agentId":"c5429ae35460edc27ac6208b","agentName":"研究分析員 Research Analyst","userId":"6a8cf1cf024de832ca4e41","userName":"Rechine"},"version":6},{"category":"Computer Science","createdAt":1787794046783,"finalNoteId":"f7274cca8f5f8c8fc5f3ab19","id":"6a8f927ed1399576af4730cb","itemType":"RESEARCH_INBOX_ITEM","name":"軟體設計模式","needsUserInput":false,"needsUserInputNote":"","originPluginDir":"30494b3b7ed927b5b8f99d74","originPluginID":"30494b3b7ed927b5b8f99d74","originalQuestion":"三大設計模式分類:創建型模式 結構型模式 行為模式\n底下各有哪些設計模式 是為了解決什麼問題","parents":{"default_research_inbox_folder_6a8cf1cf024de832ca4e41":1787794046783},"priority":"中","relatedTopics":"","researchDepth":"Standard","researchPlan":"\u003ch2\u003eResearch Plan｜軟體設計模式\u003c/h2\u003e\u003cp\u003e\u003cstrong\u003e題目：\u003c/strong\u003e軟體設計模式\u003cbr\u003e\u003cstrong\u003e原始提問：\u003c/strong\u003e三大設計模式分類：創建型 / 結構型 / 行為型，底下各有哪些設計模式、是為了解決什麼問題\u003cbr\u003e\u003cstrong\u003e分類：\u003c/strong\u003eComputer Science｜\u003cstrong\u003e深度：\u003c/strong\u003eStandard｜\u003cstrong\u003e狀態：\u003c/strong\u003eResearching\u003c/p\u003e\u003ch3\u003e一、核心問題判讀\u003c/h3\u003e\u003cp\u003e使用者要的不是零散名詞解釋，而是一份「分類 → 清單 → 問題意圖」對照表：掌握 GoF 23 個模式為主體，理解每一類共同解決哪一家族的設計痛點、每一模式用一句話講清 intent 與典型場景，並能據此做初步選型。問題無重大歧義，但有兩個收斂點：(1) 以 GoF 23 為準，Simple Factory 等非 GoF 需標註辨析而非混入主清單；(2) 重點在「解決什麼問題」而非完整程式碼實作。\u003c/p\u003e\u003ch3\u003e二、子問題（6 題）\u003c/h3\u003e\u003col\u003e\u003cli\u003e\u003cstrong\u003e模式是什麼、為何分類：\u003c/strong\u003e軟體設計模式的定義、模式三要素、GoF《Design Patterns》背景與影響，為何切為創建/結構/行為三類？\u003c/li\u003e\u003cli\u003e\u003cstrong\u003e創建型（Creational, 5 種）：\u003c/strong\u003eSingleton / Factory Method / Abstract Factory / Builder / Prototype 各自解決什麼實例化難題？與 Simple Factory 的關係？\u003c/li\u003e\u003cli\u003e\u003cstrong\u003e結構型（Structural, 7 種）：\u003c/strong\u003eAdapter / Bridge / Composite / Decorator / Facade / Flyweight / Proxy 各自解決什麼接口、組合或包裝難題？\u003c/li\u003e\u003cli\u003e\u003cstrong\u003e行為型（Behavioral, 11 種）：\u003c/strong\u003eStrategy / Observer / Command / Iterator / State / Template Method / Chain of Responsibility / Mediator / Memento / Visitor / Interpreter 各自解決什麼協作與職責分配難題？\u003c/li\u003e\u003cli\u003e\u003cstrong\u003e對照與選用：\u003c/strong\u003e三類對照表、選用啟發式、常見組合（Factory+Singleton、Decorator+Composite、Strategy+Factory 等）、過度設計警示。\u003c/li\u003e\u003cli\u003e\u003cstrong\u003e原理與演進：\u003c/strong\u003e與 SOLID / 組合優於繼承 / 依賴反轉的關係，現代語言與框架如何內建或替代部分模式，常見誤解澄清。\u003c/li\u003e\u003c/ol\u003e\u003ch3\u003e三、前置知識\u003c/h3\u003e\u003cul\u003e\u003cli\u003e物件導向基礎：類別/物件、繼承 vs 組合、介面/抽象類別、封裝\u003c/li\u003e\u003cli\u003e基礎 UML：類別圖、物件圖、時序圖的讀圖能力\u003c/li\u003e\u003cli\u003eSOLID 原則與高內聚低耦合、依賴反轉的基本概念\u003c/li\u003e\u003cli\u003e常見重構味道（code smell）對模式動機的對照（如大量 new、條件分支膨脹、接口不相容）\u003c/li\u003e\u003c/ul\u003e\u003ch3\u003e四、研究範圍\u003c/h3\u003e\u003cp\u003e\u003cstrong\u003e涵蓋：\u003c/strong\u003eGoF 23 個模式的分類邏輯、每模式一句話 intent + 解決問題 + 典型場景 + 結構要點（文字描述 UML），三類各一張對照表，一個跨類選型流程圖/決策樹。\u003c/p\u003e\u003cp\u003e\u003cstrong\u003e明確排除：\u003c/strong\u003e不展開非 GoF 的企業/併發/架構模式（MVC、MVVM、Publisher-Subscriber 變體、J2EE 模式等）深入；不逐一給 23 個完整可執行代碼，僅給 3–4 個代表性偽碼/Java 片段；不做特定框架（Spring 等）源碼逐行導讀。\u003c/p\u003e\u003ch3\u003e五、所需來源類型\u003c/h3\u003e\u003cul\u003e\u003cli\u003e一手/權威：Gamma et al.《Design Patterns: Elements of Reusable OO Software》（GoF 原典二手整理）、Refactoring.Guru、SourceMaking、OODesign.com 的模式條目\u003c/li\u003e\u003cli\u003e教科書/課程：Head First Design Patterns、University CS 教材對 GoF 的系統整理\u003c/li\u003e\u003cli\u003e專家文章：Martin Fowler 網站（依賴注入、重構與模式關係）、高品質工程部落格對模式權衡的討論\u003c/li\u003e\u003cli\u003e交叉驗證：同一模式至少對照 2 筆來源（定義與結構圖），中文來源僅作輔助可讀性補充\u003c/li\u003e\u003c/ul\u003e\u003ch3\u003e六、給分析員的執行指引（Standard 深度）\u003c/h3\u003e\u003cul\u003e\u003cli\u003e篇幅目標：14 節結構化筆記，3000–5000 字中文，TL;DR 3–5 點先給結論\u003c/li\u003e\u003cli\u003e必備表格：三張對照表（創建型 5 欄：模式 / Intent 一句話 / 解決問題 / 典型場景 / 代價；結構型、行為型同格式），共 23 列完整覆蓋\u003c/li\u003e\u003cli\u003e必備區分：GoF 23 vs 非 GoF（Simple Factory）明確標註；創建/結構/行為的「家族痛點」各用一段話總結\u003c/li\u003e\u003cli\u003e範例策略：3–4 個最小可懂偽碼/Java 片段即可（建議：Factory Method、Decorator、Observer、Strategy 各一），其餘以結構描述與場景句為主，避免程式碼海\u003c/li\u003e\u003cli\u003eHow it works：每類各畫一條「問題 → 模式機制 → 效果」因果鏈，搭配選型啟發式（new 在哪/接口合不合/流程變不變）\u003c/li\u003e\u003cli\u003eEvidence：來源至少 6–8 筆，含 GoF 原典整理與 Refactoring.Guru 等，且標註 Source Type\u003c/li\u003e\u003cli\u003e語氣：工程可讀、避免術語堆砌，關鍵英文術語括註原文（Creational / Structural / Behavioral、模式英文名）\u003c/li\u003e\u003c/ul\u003e\u003cp\u003e\u003cem\u003e本計畫由研究協調員建立，已寫入 subQuestions 供下一棒直接取用。\u003c/em\u003e\u003c/p\u003e","researchTitle":"軟體設計模式","sourceUrls":"https://refactoring.guru/design-patterns/catalog\nhttps://refactoring.guru/design-patterns/classification\nhttps://refactoring.guru/design-patterns/what-is-pattern\nhttps://sourcemaking.com/design_patterns\nhttps://www.geeksforgeeks.org/system-design/gang-of-four-gof-design-patterns/\nhttps://www.digitalocean.com/community/tutorials/gangs-of-four-gof-design-patterns\nhttps://www.coursera.org/articles/gang-of-four-design-patterns\nhttps://en.wikipedia.org/wiki/Design_Patterns","status":"Completed","subQuestions":"[{\"n\":1,\"question\":\"軟體設計模式是什麼？GoF 23 個模式的起源與分類邏輯為何？\",\"angle\":\"定義、模式三要素（情境/問題/解法）、GoF 背景、為何分為創建/結構/行為三類\",\"why\":\"建立共同語彙與框架，避免只背名詞；回應為何要分類\"},{\"n\":2,\"question\":\"創建型模式解決哪一類物件創建問題？底下各模式針對什麼難題？\",\"angle\":\"共用痛點：解耦實例化、隱藏建構複雜度、提升彈性；逐一拆 Singleton / Factory Method / Abstract Factory / Builder / Prototype 的 intent 與典型場景\",\"why\":\"回應創建型清單與對應問題，含 Simple Factory 非 GoF 的辨析\"},{\"n\":3,\"question\":\"結構型模式解決哪一類結構組合問題？底下各模式針對什麼難題？\",\"angle\":\"共用痛點：接口不合、組合擴張、裝飾與代理；逐一拆 Adapter / Bridge / Composite / Decorator / Facade / Flyweight / Proxy\",\"why\":\"回應結構型清單與對應問題，提供選擇線索\"},{\"n\":4,\"question\":\"行為型模式解決哪一類協作與職責分配問題？底下各模式針對什麼難題？\",\"angle\":\"共用痛點：物件間溝通、演算法抽換、職責鏈；逐一拆 Strategy / Observer / Command / Iterator / State / Template Method / Chain of Responsibility / Mediator / Memento / Visitor / Interpreter\",\"why\":\"回應行為型清單與對應問題，覆蓋 11 種 GoF 行為型\"},{\"n\":5,\"question\":\"如何對照三類並選用、組合模式？有哪些常見搭配與過度設計陷阱？\",\"angle\":\"三類對照表、選用啟發式（new 在哪就看創建型、接口衝突看結構型、流程會變看行為型）、常見組合如 Factory+Singleton、Decorator+Composite、Strategy+Factory；反模式警示\",\"why\":\"從清單提升到決策能力，避免為用而用\"},{\"n\":6,\"question\":\"設計模式與物件導向原則、現代語言特性的關係是什麼？常見誤解與演進替代有哪些？\",\"angle\":\"SOLID/組合優於繼承/依賴反轉的呼應；現代語言中 DI 容器、lambda 取代 Strategy/Command、框架內建 Observer；誤解如 Singleton=全域變數、盲目套用\",\"why\":\"補齊原理層與當代脈絡，讓知識不過時\"}]","updatedAt":1787794621132,"updatedBy":{"agentId":"b67deecc74cf3029ce66c6f8","agentName":"知識整理員 Knowledge Curator","userId":"6a8cf1cf024de832ca4e41","userName":"Rechine"},"version":4},{"category":"哲學","createdAt":1787730522811,"finalNoteId":"41d0b6cb0a60547853ae08ac","id":"6a8e9a5ad4ecf11545f9f346","itemType":"RESEARCH_INBOX_ITEM","name":"虛無主義是什麼","needsUserInput":false,"needsUserInputNote":"","originPluginDir":"30494b3b7ed927b5b8f99d74","originPluginID":"30494b3b7ed927b5b8f99d74","originalQuestion":"虛無主義是誰提出的 內容核心是甚麼 對哲學史造成甚麼影響 反抗虛無主義的人提出了甚麼哲學思想","parents":{"default_research_inbox_folder_6a8cf1cf024de832ca4e41":1787730522811},"priority":"中","relatedTopics":"","researchDepth":"Standard","researchPlan":"\u003ch2\u003eResearch Plan｜虛無主義是什麼\u003c/h2\u003e\u003cp\u003e\u003cstrong\u003e題目：\u003c/strong\u003e虛無主義是什麼\u003cbr\u003e\u003cstrong\u003e原始提問：\u003c/strong\u003e虛無主義是誰提出的、內容核心是什麼、對哲學史造成什麼影響、反抗虛無主義的人提出了什麼哲學思想\u003cbr\u003e\u003cstrong\u003e分類：\u003c/strong\u003e哲學｜\u003cstrong\u003e深度：\u003c/strong\u003eStandard｜\u003cstrong\u003e狀態：\u003c/strong\u003eResearching\u003c/p\u003e\u003ch3\u003e一、核心問題判讀\u003c/h3\u003e\u003cp\u003e使用者想一次搞懂虛無主義的「身世—內容—影響—回應」四環：並非只問定義，而是要一條完整的思想史敘事。題目用語「是誰提出的」隱含對單一發明者的期待，但實際上 nihilism 是多階段、多人接力形成的概念（德國觀念論語境 → 俄國文學流行 → 尼采哲學化），需先破除單一發明者迷思，再給出清晰的詞源譜系。\u003c/p\u003e\u003cp\u003e\u003cstrong\u003e是否有歧義：\u003c/strong\u003e無重大歧義，範圍可收斂。唯一需釐清的是「虛無主義」有多重類型（存在/道德/認識/政治），報告中需明確劃分，避免把所有「否定意義」混為一談。\u003c/p\u003e\u003ch3\u003e二、子問題（6 題）\u003c/h3\u003e\u003col\u003e\u003cli\u003e\u003cstrong\u003e詞源與提出脈絡：\u003c/strong\u003enihilism 一詞最早在何時、由誰、在什麼論戰中出現？Jacobi、俄國文學（屠格涅夫《父與子》）、尼采各自扮演什麼角色？\u003c/li\u003e\u003cli\u003e\u003cstrong\u003e定義與類型學：\u003c/strong\u003e哲學上如何定義虛無主義？如何區分存在虛無、道德虛無、認識論虛無、政治虛無／被動與主動虛無主義？\u003c/li\u003e\u003cli\u003e\u003cstrong\u003e思想內核與論證：\u003c/strong\u003e虛無主義主張「什麼不存在／無價值」？其核心論證是「價值崩解」「上帝已死」「意義無根」如何展開？\u003c/li\u003e\u003cli\u003e\u003cstrong\u003e尼采的診斷：\u003c/strong\u003e尼采為何稱虛無主義是歐洲兩千年的邏輯後果？基督教—柏拉圖傳統如何自我瓦解？他劃分的虛無主義階段是什麼？\u003c/li\u003e\u003cli\u003e\u003cstrong\u003e對哲學史的衝擊：\u003c/strong\u003e19–20 世紀以降，虛無主義如何催生或重塑存在主義、現象學、海德格、後現代、政治思想與文學藝術？\u003c/li\u003e\u003cli\u003e\u003cstrong\u003e克服與回應方案：\u003c/strong\u003e哪些哲學家／思潮明確以「克服虛無主義」為目標？尼采（權力意志／永恆回歸／超人／價值重估）、卡繆（荒謬與反抗）、沙特、海德格、當代倫理學與宗教哲學的路徑有何異同？\u003c/li\u003e\u003c/ol\u003e\u003ch3\u003e三、前置知識\u003c/h3\u003e\u003cul\u003e\u003cli\u003e古希臘懷疑論／犬儒派對「價值可疑」的早期線索\u003c/li\u003e\u003cli\u003e基督教—柏拉圖價值體系與近代啟蒙理性的張力\u003c/li\u003e\u003cli\u003e德國觀念論（康德、黑格爾）對形上基礎的動搖\u003c/li\u003e\u003cli\u003e19 世紀歐洲現代性脈絡（工業化、世俗化、俄國知識份子運動）\u003c/li\u003e\u003c/ul\u003e\u003ch3\u003e四、研究範圍\u003c/h3\u003e\u003cp\u003e\u003cstrong\u003e涵蓋：\u003c/strong\u003e詞源與概念史、類型與定義辨析、尼采為核心的哲學診斷、對存在主義／後現代／政治與文學的影響、主要克服方案比較。\u003c/p\u003e\u003cp\u003e\u003cstrong\u003e明確排除：\u003c/strong\u003e不展開俄國虛無主義運動的組織史與暗殺事件細節；不處理當代流行文化「厭世／躺平」等泛化標籤；不深入神學內部的虛無論辯。\u003c/p\u003e\u003ch3\u003e五、所需來源類型\u003c/h3\u003e\u003cul\u003e\u003cli\u003e權威百科：SEP（Stanford Encyclopedia of Philosophy）、IEP、哲學史教科書對 nihilism 條目\u003c/li\u003e\u003cli\u003e原典：尼采《權力意志》《查拉圖斯特拉如是說》《道德系譜學》相關章節二手整理\u003c/li\u003e\u003cli\u003e二手研究：存在主義（卡繆《薛西弗斯的神話》、沙特）、海德格論虛無主義、後現代（尼采接受史）論文\u003c/li\u003e\u003cli\u003e思想史綜述：詞源學與俄國思想史材料，輔以可信的哲學普及與學術綜述作交叉驗證\u003c/li\u003e\u003c/ul\u003e\u003ch3\u003e六、給分析員的執行指引（Standard 深度）\u003c/h3\u003e\u003cul\u003e\u003cli\u003e篇幅目標：14 節結構化筆記，3000–5000 字中文，TL;DR 3–5 點先給結論\u003c/li\u003e\u003cli\u003e必備區分：被動／主動虛無主義、存在／道德／認識論虛無主義的對照表\u003c/li\u003e\u003cli\u003e必備脈絡：Jacobi → 屠格涅夫 → 尼采 的「概念接力」時間軸，避免寫成「尼采發明」\u003c/li\u003e\u003cli\u003e影響與回應要成對呈現：每一項「衝擊」盡量對應一項「回應方案」，形成思想史因果鏈\u003c/li\u003e\u003cli\u003e來源至少 6–8 筆，含 1–2 筆 SEP/IEP 等級與 1 筆尼采研究，避免只用普及文章\u003c/li\u003e\u003cli\u003e語氣：學術準確但可讀，避免術語堆砌；關鍵德文／英文術語括註原文\u003c/li\u003e\u003c/ul\u003e\u003cp\u003e\u003cem\u003e本計畫由研究協調員建立，已寫入 subQuestions 供下一棒直接取用。\u003c/em\u003e\u003c/p\u003e","researchTitle":"虛無主義是什麼","sourceUrls":"https://iep.utm.edu/nihilism/\nhttps://plato.stanford.edu/entries/friedrich-jacobi/\nhttps://en.wikipedia.org/wiki/Friedrich_Nietzsche\nhttps://en.wikipedia.org/wiki/Fathers_and_Sons_(novel)\nhttps://en.wikipedia.org/wiki/The_Myth_of_Sisyphus\nhttps://en.wikipedia.org/wiki/Friedrich_Heinrich_Jacobi\nhttps://www.jstor.org/stable/20717561\nhttps://www.researchgate.net/publication/346594539_Nietzsche's_shadow_On_the_origin_and_development_of_the_term_nihilism","status":"Completed","subQuestions":"[{\"n\":1,\"question\":\"『虛無主義』一詞的詞源與提出脈絡是什麼？由誰在何種論戰／作品中首次使用並流行？\",\"angle\":\"Jacobi 的哲學論戰 → 屠格涅夫《父與子》的大眾化 → 尼采的哲學化三階段\",\"why\":\"回應『是誰提出的』，破除單一發明者迷思\"},{\"n\":2,\"question\":\"哲學上如何定義虛無主義？有哪些主要類型與劃分標準？\",\"angle\":\"存在／道德／認識論／政治虛無主義；被動 vs 主動虛無主義\",\"why\":\"釐清概念邊界，避免泛化為『悲觀』\"},{\"n\":3,\"question\":\"虛無主義的核心主張與論證結構是什麼？\",\"angle\":\"價值無根、上帝已死、意義崩解、真理可疑的內在邏輯\",\"why\":\"回應『內容核心是什麼』\"},{\"n\":4,\"question\":\"尼采如何診斷虛無主義的成因與歷史階段？\",\"angle\":\"基督教—柏拉圖傳統的自我瓦解、歐洲虛無主義的到來與階段論\",\"why\":\"尼采是虛無主義論述的樞紐，必備\"},{\"n\":5,\"question\":\"虛無主義對西方哲學史、文學與政治造成了哪些關鍵影響？\",\"angle\":\"存在主義、現象學／海德格、後現代、俄國政治虛無主義與文學藝術\",\"why\":\"回應『造成什麼影響』\"},{\"n\":6,\"question\":\"哪些哲學家與思潮提出了克服或回應虛無主義的方案？其路徑有何異同？\",\"angle\":\"尼采（權力意志／永恆回歸／超人／價值重估）、卡繆（荒謬與反抗）、沙特、海德格、當代倫理學／宗教哲學回應\",\"why\":\"回應『反抗虛無主義的人提出了什麼』\"}]","updatedAt":1787731367434,"updatedBy":{"agentId":"b67deecc74cf3029ce66c6f8","agentName":"知識整理員 Knowledge Curator","userId":"6a8cf1cf024de832ca4e41","userName":"Rechine"},"version":4}]}