Ngôn ngữ lập trình
Hướng dẫn Python, C, C++, Java, JavaScript, TypeScript, Go, R và Haskell — từ cú pháp cơ bản đến kỹ thuật nâng cao.
Ch17 — 移動語意(Move Semantics)
移動語意是 C++11 最重要的革新之一。它讓程式能「搬走」資源而非「複製」,把處理大型物件(容器、字串、檔案緩衝)的成本從 O(n) 降到 O(1)。理解移動語意,是理解現代 C++ 為什麼又快又安全的關鍵。
Đọc bài viết →Ch18 — 例外處理(Exception Handling)
例外處理提供一種結構化的錯誤處理機制:把「正常邏輯」與「錯誤處理」分離,讓錯誤無法被默默忽略,並與 RAII 結合保證資源在任何路徑下都被釋放。本章不只教你語法,更教你何時該用、何時不該用例外。
Đọc bài viết →Ch19:命名空間與多檔案專案
想像一個沒有命名空間的世界。你的專案用了兩個第三方函式庫:一個繪圖庫提供 Color、draw(),一個遊戲引擎也提供 Color、draw()。當你同時 #include 兩者,連結器(甚至編譯器)會抱怨「重複定義」(multiple definition / redefinition)——這就是名稱衝突(name collision)。
Đọc bài viết →Ch20:C++17 特性精選
C++17 不是革命性的大改版,而是一系列「讓日常程式碼更安全、更簡潔」的實用改進。它解決了許多長年以來只能靠慣用法(idiom)或樣板雜技繞過的痛點:: 多值回傳不必再記 std:get<0>、.first/.second → 結構化綁定 「可能沒有值」不必再用魔術數字 -1、nullptr 表示 → std:optional 型別安全的「多選一」不必再用 C 風格 union + tag → std:variant 函式收字串參數不
Đọc bài viết →第二十一章:型別推導(Type Deduction)
讀完本章,你將能夠:: 理解 auto 的三種推導情境(by value、auto&、auto&&)及其與 const、參考的交互 看穿 auto 與大括號初始化(std:initializer_list)的陷阱 掌握 decltype 的推導規則,並區分 decltype(name) 與 decltype(expression) 的關鍵差異 學會使用 decltype(auto) 進行回傳型別的完美轉發 理解尾端回傳型別(traili
Đọc bài viết →第二十二章:constexpr 與編譯期計算
讀完本章,你將能夠:: 清楚區分 const(執行期常數)與 constexpr(編譯期常數) 宣告並使用 constexpr 變數、函式與建構子(literal type) 了解 C++11 → C++14 → C++17 對 constexpr 函式逐步放寬的限制 判斷 constexpr 函式何時在編譯期執行、何時退化為執行期函式 使用 if constexpr(C++17)做編譯期分支與死碼消除(dead code elimin
Đọc bài viết →第二十三章:多執行緒程式設計(Multithreading)
讀完本章並完成練習後,你應該能夠:: 解釋並行(concurrency)與平行(parallelism)的差異,並判斷何時值得引入多執行緒 使用 std:thread 以函式、lambda、成員函式、函式物件建立執行緒,並正確地 join / detach 理解 joinable 狀態,避免「可 joinable 的執行緒被銷毀」導致 std:terminate() 正確地以值、std:ref、std:move 傳遞參數給執行緒 說明資
Đọc bài viết →第二十四章:設計模式與最佳實踐
讀完本章並完成練習後,你應該能夠:: 解釋 SOLID 五大原則,並用 C++ 範例說明每一條如何改善設計 區分創建型、結構型、行為型三大類設計模式 實作執行緒安全的 Singleton(Meyers' Singleton),並說出它的批評與替代方案(依賴注入) 實作 Observer 模式(push/pull、傳統繼承版與 std:function 現代版) 實作 Strategy 模式(類別繼承版與 std:function 版),
Đọc bài viết →完整 C++ 教材 — 由淺到深
以 C++17 標準為主的繁體中文完整教材,從零基礎到進階主題。 > 每個章節包含 Markdown 概念說明 + 可直接編譯執行的 .cpp 範例程式。
Đọc bài viết →Baasid backend project v1.1
用戶於登入系統請求成功後,Server 產生 JWT token 回傳給客戶端,且之後的CRUD Request 都需帶入 Token 取得 Response Data
Đọc bài viết →2nd Revision (2021) — 題目說明與詳解
課程:5CCS2PLD Programming Language Design Paradigms,King's College London > 講者:Maribel Fernández & Odinaldo Rodrigues > 題目來源:2nd_revision_2021.pdf(共 4 題) > 官方參考:2nd_revision_2021_answers.pdf(sketch of sample solutions) > >
Đọc bài viết →Imperative Languages — Formal Description using Abstract Machines
課程: 5CCS2PLD Programming Language Design Paradigms > 學校: Department of Informatics, King's College London > 主題: 以抽象機器(Abstract Machine)給予 SIMP 語言形式化的操作語義 > 本檔目的: 以 PDF 投影片內容為主幹,補完投影片未完整展開的推導、加入網路教材中常見的補充說明,並附高密度模擬考題與詳解。
Đọc bài viết →結構化操作語意學 (Structural Operational Semantics, SOS)
課程來源:King's College London — Imperative Languages, Maribel Fernández > 核心教科書:Glynn Winskel, The Formal Semantics of Programming Languages (Chapter 2 & 4) > 經典原始論文:Gordon D. Plotkin, A Structural Approach to Operational S
Đọc bài viết →Week 5 Revision — 題目說明與詳解
課程: 5CCS2PLD Programming Language Design Paradigms(Maribel Fernández) 來源: Week 5 revision tasks(歷屆試題精選) 本文依題目 PDF 與參考答案 PDF 整理,並補上較完整的推導與概念說明。
Đọc bài viết →函數式程式設計:型別與語意 (Types and Semantics)
課程來源:5CCS2PLD — Programming Language Design Paradigms,King's College London > 講者:Dr. Odinaldo Rodrigues / Prof. Maribel Fernández > 對應講義:Week7_TYPES_AND_SEMANTICS.pdf(共 84 頁,4 小節:7.1–7.4) > > 本份教材以「先理解、再形式化、再實作」的順序,把講義中的
Đọc bài viết →Exam May 2024 — 題目說明與詳解
課程:5CCS2PLD Programming Language Design Paradigms,King's College London > 講者:Maribel Fernández & Odinaldo Rodrigues > 題目來源:exam2024.pdf(共 2 大題、10+ 子題,本身附帶官方 sample answer) > > 本文件依考題重新整理,補上完整概念複習、推導步驟、AST 圖、SLD-tree 與計算過
Đọc bài viết →Exam May 2025 — 題目說明與詳解
課程:5CCS2PLD Programming Language Design Paradigms,King's College London > 講者:Maribel Fernández & Odinaldo Rodrigues > 題目來源:exam2025.pdf(共 2 大題、9 子題;附官方 sample answer) > > 本文件依考題重新整理,補上完整概念複習、AST 圖、推導樹與 SLD-tree、Prolog 追蹤
Đọc bài viết →Java 程式設計完整學習教材
一套三冊的繁體中文 Java 教材,內容從零基礎入門到資深工程師所需的高階主題。 全部章節以 LaTeX 撰寫,使用 XeLaTeX 編譯成高品質 PDF;所有範例程式皆附 詳細的繁體中文註解,方便自學。
Đọc bài viết →Lambda 與函數式程式設計
從本章開始,我們正式邁入資深工程師的領域。你在初級與中級篇已經熟悉物件導向的 思維:把資料與行為封裝進物件。而函數式程式設計提供了另一種互補的視角——把 「行為」本身當成值來傳遞。Java 8 引入的 Lambda 運算式與函數式介面,讓這種 風格得以在強型別的語言中優雅落地,也是後續 Stream API(第 2 章)與 CompletableFuture(第 4 章)的語法基礎。
Đọc bài viết →Stream API
上一章我們學會把「行為」當成值傳遞。Stream API 正是這個能力的舞台:它讓我們用 宣告式的方式描述「要對資料做什麼」,而不必陷入「怎麼一步步做」的迴圈細節。 Stream 不是一種新的資料結構,而是一條「資料處理的管線」——資料從來源流入, 經過一連串轉換,最後匯集成結果。
Đọc bài viết →多執行緒基礎
現代 CPU 早已是多核心的天下,一支只會用單一執行緒的程式,等於買了八線道高速 公路卻只開一條車道。多執行緒讓程式能同時處理多件事:一邊下載檔案、一邊更新 進度條,或讓伺服器同時服務上千個使用者。但並行也是 Java 中最容易出錯、最難 除錯的領域——本章與下一章將帶你把這塊硬骨頭啃下來。
Đọc bài viết →並行程式設計進階
上一章我們用 new Thread() 手動建立執行緒。這在教學上很直觀,但在正式 系統中幾乎是禁忌。本章介紹 java.util.concurrent(簡稱 JUC)套件——由 並行大師 Doug Lea 設計的一整套高階工具,讓我們站在巨人的肩膀上寫並行程式。
Đọc bài viết →反射與標註
到目前為止,我們寫的程式都在「編譯期」就決定了要用哪個類別、呼叫哪個方法。 反射(reflection)打破了這個限制:它讓程式在執行期才動態地檢視與操作 類別、方法與欄位。這聽起來很抽象,但你天天在用的框架幾乎都靠它運作——Spring 的依賴注入、Jackson 的 JSON 序列化、JUnit 的測試探索,底層都是反射。
Đọc bài viết →JVM 深入剖析
前五章我們專注在「怎麼寫 Java」,本章要往下鑽一層,看看「Java 程式如何被執行」。 理解 JVM 不是為了炫技,而是實務所需:當線上服務發生記憶體溢位、GC 停頓過長、 或詭異的 ClassNotFoundException 時,唯有懂 JVM 才能快速定位問題。
Đọc bài viết →