S SmartDocs

Langages de programmation

Tutoriels Python, C, C++, Java, JavaScript, TypeScript, Go, R et Haskell — de la syntaxe de base aux techniques avancées.

C++ 中文 Mis à jour 2026-06-15

Ch15 — Lambda 與函式物件(Lambda & Function Objects)

函式物件(functor)與 Lambda 表達式是 C++ 中實現「可呼叫物件(callable)」的兩大方式。它們讓你能把「行為」當作參數傳遞、儲存、組合,是使用 STL 演算法、設計回呼(callback)與策略模式不可或缺的工具。掌握 Lambda,等於拿到了現代 C++ 的萬用鑰匙。

Lire l'article →
C++ 中文 Mis à jour 2026-06-15

Ch16 — 記憶體管理與智慧指標(Memory Management & Smart Pointers)

手動記憶體管理是 C++ 最強大也最危險的能力。現代 C++ 透過智慧指標(smart pointers)把資源管理自動化,消除記憶體洩漏、懸空指標、重複刪除等一整類最難除錯的錯誤。本章的核心訊息只有一句話:在現代 C++ 中,你幾乎不該再手寫 new 與 delete。

Lire l'article →
C++ 中文 Mis à jour 2026-06-15

Ch17 — 移動語意(Move Semantics)

移動語意是 C++11 最重要的革新之一。它讓程式能「搬走」資源而非「複製」,把處理大型物件(容器、字串、檔案緩衝)的成本從 On 降到 O1。理解移動語意,是理解現代 C++ 為什麼又快又安全的關鍵。

Lire l'article →
C++ 中文 Mis à jour 2026-06-15

Ch18 — 例外處理(Exception Handling)

例外處理提供一種結構化的錯誤處理機制:把「正常邏輯」與「錯誤處理」分離,讓錯誤無法被默默忽略,並與 RAII 結合保證資源在任何路徑下都被釋放。本章不只教你語法,更教你何時該用、何時不該用例外。

Lire l'article →
C++ 中文 Mis à jour 2026-06-15

Ch19:命名空間與多檔案專案

理解命名空間(namespace)的用途,知道它如何避免名稱衝突(name collision) 掌握命名空間的定義、巢狀命名空間(含 C++17 A::B::C 語法)與命名空間別名 區分 using 指令(directive)與 using 宣告(declaration),並理解為何不可在標頭檔使用 using namespace 認識匿名(unnamed)命名空間與內部連結(internal linkage) 初步認識 inlin

Lire l'article →
C++ 中文 Mis à jour 2026-06-15

Ch20:C++17 特性精選

掌握結構化綁定(structured bindings):從 pair/tuple/struct/array 解構,理解拷貝 vs 參考的差異 學會 if/switch 帶初始化語句,把變數作用域限制在分支內 理解 if constexpr 的編譯期分支,並用於樣板程式設計 熟練 std::optional(hasvalue/value/valueor 與 badoptionalaccess 陷阱) 熟練 std::variant(ho

Lire l'article →
C++ 中文 Mis à jour 2026-06-15

第二十一章:型別推導(Type Deduction)

1. 理解 auto 的三種推導情境(by value、auto&、auto&&)及其與 const、參考的交互 2. 看穿 auto 與大括號初始化(std::initializerlist)的陷阱 3. 掌握 decltype 的推導規則,並區分 decltypename 與 decltypeexpression 的關鍵差異 4. 學會使用 decltypeauto 進行回傳型別的完美轉發 5. 理解尾端回傳型別(trailing

Lire l'article →
C++ 中文 Mis à jour 2026-06-15

第二十二章:constexpr 與編譯期計算

1. 清楚區分 const(執行期常數)與 constexpr(編譯期常數) 2. 宣告並使用 constexpr 變數、函式與建構子(literal type) 3. 了解 C++11 → C++14 → C++17 對 constexpr 函式逐步放寬的限制 4. 判斷 constexpr 函式何時在編譯期執行、何時退化為執行期函式 5. 使用 if constexpr(C++17)做編譯期分支與死碼消除(dead code eli

Lire l'article →
C++ 中文 Mis à jour 2026-06-15

第二十三章:多執行緒程式設計(Multithreading)

1. 解釋並行(concurrency)與平行(parallelism)的差異,並判斷何時值得引入多執行緒 2. 使用 std::thread 以函式、lambda、成員函式、函式物件建立執行緒,並正確地 join / detach 3. 理解 joinable 狀態,避免「可 joinable 的執行緒被銷毀」導致 std::terminate 4. 正確地以值、std::ref、std::move 傳遞參數給執行緒 5. 說明資料競

Lire l'article →
C++ 中文 Mis à jour 2026-06-15

第二十四章:設計模式與最佳實踐

1. 解釋 SOLID 五大原則,並用 C++ 範例說明每一條如何改善設計 2. 區分創建型、結構型、行為型三大類設計模式 3. 實作執行緒安全的 Singleton(Meyers' Singleton),並說出它的批評與替代方案(依賴注入) 4. 實作 Observer 模式(push/pull、傳統繼承版與 std::function 現代版) 5. 實作 Strategy 模式(類別繼承版與 std::function 版),並判

Lire l'article →
C++ 中文 Mis à jour 2026-04-03

完整 C++ 教材 — 由淺到深

以 C++17 標準為主的繁體中文完整教材,從零基礎到進階主題。 每個章節包含 Markdown 概念說明 + 可直接編譯執行的 .cpp 範例程式。

Lire l'article →
Go 中文 Mis à jour 2026-04-18

Baasid backend project v1.1

用戶於登入系統請求成功後,Server 產生 JWT token 回傳給客戶端,且之後的CRUD Request 都需帶入 Token 取得 Response Data

Lire l'article →
Imperative Languages 中文 Mis à jour 2026-05-05

2nd Revision 2021 — 題目說明與詳解

課程:5CCS2PLD Programming Language Design Paradigms,King's College London 講者:Maribel Fernández & Odinaldo Rodrigues 題目來源:2ndrevision2021.pdf共 4 題 官方參考:2ndrevision2021answers.pdfsketch of sample solutions 本文件依題目 PDF 與官方 ske

Lire l'article →
Imperative Languages 中文 Mis à jour 2026-05-06

Imperative Languages — Formal Description using Abstract Machines

課程: 5CCS2PLD Programming Language Design Paradigms 學校: Department of Informatics, King's College London 主題: 以抽象機器(Abstract Machine)給予 SIMP 語言形式化的操作語義 本檔目的: 以 PDF 投影片內容為主幹,補完投影片未完整展開的推導、加入網路教材中常見的補充說明,並附高密度模擬考題與詳解。

Lire l'article →
Imperative Languages 中文 Mis à jour 2026-04-23

結構化操作語意學 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 Semanti

Lire l'article →
Imperative Languages 中文 Mis à jour 2026-04-28

Week 5 Revision — 題目說明與詳解

課程: 5CCS2PLD Programming Language Design Paradigms(Maribel Fernández) 來源: Week 5 revision tasks(歷屆試題精選) 本文依題目 PDF 與參考答案 PDF 整理,並補上較完整的推導與概念說明。

Lire l'article →
Imperative Languages 中文 Mis à jour 2026-04-30

函數式程式設計:型別與語意 Types and Semantics

課程來源:5CCS2PLD — Programming Language Design Paradigms,King's College London 講者:Dr. Odinaldo Rodrigues / Prof. Maribel Fernández 對應講義:Week7TYPESANDSEMANTICS.pdf共 84 頁,4 小節:7.1–7.4 本份教材以「先理解、再形式化、再實作」的順序,把講義中的所有定義、規則、範例、練習

Lire l'article →
Imperative Languages 中文 Mis à jour 2026-05-06

Exam May 2024 — 題目說明與詳解

課程:5CCS2PLD Programming Language Design Paradigms,King's College London 講者:Maribel Fernández & Odinaldo Rodrigues 題目來源:exam2024.pdf共 2 大題、10+ 子題,本身附帶官方 sample answer 本文件依考題重新整理,補上完整概念複習、推導步驟、AST 圖、SLDtree 與計算過程,適合期末/期中考前

Lire l'article →
Imperative Languages 中文 Mis à jour 2026-05-06

Exam May 2025 — 題目說明與詳解

課程:5CCS2PLD Programming Language Design Paradigms,King's College London 講者:Maribel Fernández & Odinaldo Rodrigues 題目來源:exam2025.pdf共 2 大題、9 子題;附官方 sample answer 本文件依考題重新整理,補上完整概念複習、AST 圖、推導樹與 SLDtree、Prolog 追蹤過程,適合期末/期中考

Lire l'article →
Java 中文 Mis à jour 2026-04-07

Baasid後端面試題目v1.1

用戶於登入系統請求成功後,Server 產生 JWT token 回傳給客戶端,且之後的CRUD Request 都需帶入 Token 取得 Response Data

Lire l'article →
Java 中文 Mis à jour 2026-04-07

Baasid 後端面試專案 — 交付摘要

psql U postgres c "CREATE DATABASE baasid;"

Lire l'article →
Java 中文 Mis à jour 2026-04-09

Docker 與 Baasid 專案容器化說明

本文說明 Docker 是什麼、為何使用,以及如何在本專案(Spring Boot + PostgreSQL + Gradle)中 建置映像、執行容器,並逐項解釋相關指令與檔案。專案根目錄已提供:

Lire l'article →
Java 中文 Mis à jour 2026-04-07

Baasid 後端面試專案

Language: Java 21 Framework: Spring Boot 3.4 Database: PostgreSQL Security: JWT jjwt API Documentation: Swagger / OpenAPI 3 springdoc Build Tool: Gradle

Lire l'article →
Java 中文 Mis à jour 2026-04-07

Java 完整語法教材

本教材涵蓋 Java SE 的完整語法,從基礎到進階,適合初學者與有經驗的開發者參考。 範例基於 Java 17+(LTS),並涵蓋至 Java 21 的新特性。

Lire l'article →