程式教學
一頁學會一種程式語言、一個設計模式或一個演算法。每篇先直接回答問題,再給出能執行的程式碼、常見錯誤和官方參考資料。
程式語言
- 閱讀約 8 分鐘Python語法、型別、流程控制、函式、集合、錯誤與檔案,一頁講完
- 閱讀約 8 分鐘JavaScript變數、型別、函式、陣列、物件、Promise 與 async/await
- 閱讀約 8 分鐘TypeScript型別、介面、聯集型別、型別縮小、泛型與錯誤處理一頁講完
- 閱讀約 9 分鐘Java型別、類別、record、集合、例外與模式比對一頁講完
- 閱讀約 9 分鐘C型別、函式、陣列、字串、指標、malloc/free 與錯誤處理
- 閱讀約 10 分鐘C++型別、類別、STL 容器、lambda、RAII、智慧指標與例外
- 閱讀約 9 分鐘C#型別、類別、record、集合、LINQ、async/await 與例外
- 閱讀約 9 分鐘Go型別、切片、map、結構、介面、goroutine、channel 與錯誤
- 閱讀約 9 分鐘Rust所有權、借用、結構、列舉、match、集合與 Result 一頁講完
- 閱讀約 8 分鐘PHP變數、陣列、函式、類別、列舉、例外與 JSON 端點一頁講完
- 閱讀約 7 分鐘Ruby型別、方法、陣列、雜湊、區塊、類別、模組與例外
- 閱讀約 9 分鐘Swift型別、可選值、閉包、集合、結構、列舉、協定與錯誤
- 閱讀約 10 分鐘Kotlin空值安全、控制流程、函式、資料類別與協程一頁講完
- 閱讀約 9 分鐘Dart空值安全、函式、集合、類別與 async/await,適用 Flutter
- 閱讀約 9 分鐘ScalaScala 3 語法、模式比對、集合、case class 與 Option
- 閱讀約 8 分鐘R向量、資料框、函式、統計與繪圖一頁講完
- 閱讀約 10 分鐘SQLSELECT、JOIN、GROUP BY、CTE、交易,及三種資料庫差異
- 閱讀約 9 分鐘Bash腳本、變數、引號、迴圈、函式、管線與 set -euo pipefail
- 閱讀約 10 分鐘PowerShellCmdlet、物件管線、變數、函式、雜湊表與 try/catch
- 閱讀約 9 分鐘Lua變數、表、函式、元表與 pcall 一頁講完
- 閱讀約 9 分鐘Perl純量、陣列、雜湊、副程式、正規表示式與錯誤處理
- 閱讀約 10 分鐘Haskell純函式、型別、模式比對、串列、Maybe 與 IO
- 閱讀約 9 分鐘Elixir模式比對、管線、Enum、行程與 {:ok, value} 錯誤處理
- 閱讀約 9 分鐘Erlang模式比對、遞迴、行程、OTP 與 let-it-crash 錯誤處理
- 閱讀約 9 分鐘Clojure語法、不可變集合、函式、巨集、atom 與錯誤處理
- 閱讀約 8 分鐘F#型別、記錄、聯集、模式比對、管線與 Result 一頁講完
- 閱讀約 8 分鐘OCaml型別、記錄、變體、模式比對、模組與錯誤處理
- 閱讀約 8 分鐘Julia型別、陣列、廣播、函式、多重分派與錯誤處理
- 閱讀約 9 分鐘Zig型別、切片、可選值、錯誤聯集、comptime、defer 與配置器
- 閱讀約 9 分鐘Fortran現代語法、型別、迴圈、程序、模組、陣列與 iostat
- 閱讀約 9 分鐘COBOL四大部、PIC 資料、IF/EVALUATE、PERFORM 迴圈、表與檔案
- 閱讀約 11 分鐘Assembly (x86-64)x86-64 NASM 暫存器、指令、迴圈、記憶體、系統呼叫與 AT&T 語法
- 閱讀約 10 分鐘Visual Basic .NETVB.NET 語法、型別、迴圈、函式、集合、類別、LINQ 與 VBA
- 閱讀約 10 分鐘Objective-C訊息、類別、屬性、Foundation 集合、block、ARC、NSError
- 閱讀約 9 分鐘MATLAB矩陣、索引、迴圈、函式、結構、元胞、繪圖與 Octave
設計模式
- 閱讀約 10 分鐘設計模式設計模式是什麼、GoF 23 種模式分類與如何選擇
- 閱讀約 8 分鐘SOLID 原則SOLID 五大設計原則,各附 TypeScript 前後對照範例
- 閱讀約 6 分鐘單例模式確保只有一個實例:TypeScript 範例、非同步變體與替代方案
- 閱讀約 6 分鐘工廠方法模式讓子類別決定建立哪種物件:TypeScript 範例與適用情境
- 閱讀約 6 分鐘抽象工廠模式不指定具體類別,即可建立一系列相關物件
- 閱讀約 6 分鐘建造者模式用流暢 API 分步建構複雜物件,並介紹 Director 角色
- 閱讀約 6 分鐘原型模式透過複製實例建立物件:TypeScript clone()、深淺拷貝
- 閱讀約 6 分鐘轉接器模式讓不相容的介面協同運作:TypeScript 範例、物件與類別轉接器
- 閱讀約 5 分鐘橋接模式分離抽象與實作,使兩者可獨立變化
- 閱讀約 6 分鐘組合模式統一對待單一物件與物件樹:TypeScript 檔案系統範例
- 閱讀約 7 分鐘裝飾者模式在執行期透過包裝為物件新增行為:類別與函式裝飾器
- 閱讀約 6 分鐘外觀模式為複雜子系統提供單一入口:TypeScript 結帳範例
- 閱讀約 6 分鐘享元模式共享內部狀態以節省記憶體,附 TypeScript 範例
- 閱讀約 6 分鐘代理模式以快取、延遲載入、保護與遠端代理控制物件存取
- 閱讀約 6 分鐘責任鏈模式沿處理者鏈傳遞請求直到被處理,含中介軟體形式
- 閱讀約 6 分鐘命令模式把請求變成物件,用於排隊、記錄、復原與重做
- 閱讀約 6 分鐘直譯器模式用類別建模小型語言,在 TypeScript 中求值運算式樹
- 閱讀約 6 分鐘迭代器模式不暴露內部儲存地走訪集合,含 Symbol.iterator 與產生器
- 閱讀約 5 分鐘中介者模式透過一個中心物件協調元件,取代直接參照
- 閱讀約 6 分鐘備忘錄模式不暴露內部細節地儲存與還原狀態,用於復原與檢查點
- 閱讀約 6 分鐘觀察者模式主體變化時自動通知訂閱者,附型別的 TypeScript 程式碼
- 閱讀約 6 分鐘狀態模式用狀態類別取代 switch,讓物件行為隨狀態改變
- 閱讀約 5 分鐘策略模式在執行期替換可互換的演算法,用 TypeScript 函式或類別實作
- 閱讀約 6 分鐘樣板方法模式在基底類別固定演算法步驟,由子類別補上細節
- 閱讀約 7 分鐘訪問者模式透過雙重分派為類別階層新增操作,及聯集型別替代方案
資料結構
- 閱讀約 7 分鐘鏈結串列單向與雙向鏈結串列:插入、刪除、反轉、環偵測與複雜度
- 閱讀約 6 分鐘堆疊與佇列用 Python 講 LIFO 堆疊與 FIFO 佇列:括號配對、BFS、複雜度
- 閱讀約 7 分鐘雜湊表雜湊函式、桶、碰撞、負載因子與擴容,附 Python 程式碼
- 閱讀約 6 分鐘二元搜尋樹BST 排序規則、搜尋、插入與刪除的 Python 實作、平衡與複雜度
- 閱讀約 6 分鐘二元樹走訪前序、中序、後序與層序,遞迴與迭代的 Python 程式碼
- 閱讀約 7 分鐘二元堆積堆積性質、上浮下沉、建堆積、優先佇列與 Python heapq
- 閱讀約 6 分鐘字典樹(Trie)前綴樹的插入、搜尋、前綴判斷與自動補全,附複雜度
- 閱讀約 7 分鐘並查集不相交集合並查:find、union、路徑壓縮與按秩合併,附 Python
- 閱讀約 7 分鐘LRU 快取用雜湊表加雙向鏈結串列實作最近最少使用快取,含 OrderedDict
演算法
- 閱讀約 7 分鐘大O符號時間與空間複雜度、常見類別及如何從程式碼判讀
- 閱讀約 7 分鐘遞迴基底情況、呼叫堆疊、記憶化與 Python 遞迴深度限制
- 閱讀約 6 分鐘二分搜尋法二分搜尋如何折半有序區間:Python 程式碼、bisect、變體與陷阱
- 閱讀約 7 分鐘雙指標與滑動視窗對撞指標、快慢指標與滑動視窗,附 Python 程式碼與過程追蹤
- 閱讀約 5 分鐘泡沫排序法泡沫排序如何交換相鄰元素:逐趟追蹤、Python 程式碼與複雜度
- 閱讀約 5 分鐘選擇排序法選擇排序如何挑出最小值:逐步追蹤、Python 程式碼與穩定性
- 閱讀約 6 分鐘插入排序法插入排序如何移位歸位:追蹤、Python 程式碼、穩定性與最佳情形
- 閱讀約 6 分鐘合併排序法分治合併排序:追蹤、Python 程式碼、合併步驟、穩定性與複雜度
- 閱讀約 7 分鐘快速排序法基準、Lomuto 分割追蹤、Python 程式碼、最壞情形與快速選擇
- 閱讀約 7 分鐘堆積排序法最大堆積、下沉、逐步追蹤、Python 程式碼、heapq 與複雜度
- 閱讀約 6 分鐘計數排序法小整數鍵的線性時間計數排序:追蹤、穩定的 Python 程式碼與複雜度
- 閱讀約 6 分鐘基數排序法LSD 與 MSD 基數排序:逐位追蹤、Python 程式碼、穩定性與複雜度
- 閱讀約 6 分鐘廣度優先搜尋(BFS)用佇列實作 BFS:範例追蹤、Python 程式碼、最短路徑與 O(V + E)
- 閱讀約 6 分鐘深度優先搜尋(DFS)遞迴與迭代 DFS:範例追蹤、環偵測與 O(V + E) 複雜度
- 閱讀約 6 分鐘Dijkstra 演算法用優先佇列求最短路徑:範例追蹤、Python heapq 程式碼與複雜度
- 閱讀約 6 分鐘Bellman-Ford 演算法含負權邊的最短路徑、負環偵測與 Python 程式碼
- 閱讀約 6 分鐘Floyd-Warshall 演算法全點對最短路徑:矩陣範例追蹤、Python 程式碼、路徑還原與 O(V³)
- 閱讀約 6 分鐘A* 搜尋f = g + h 啟發式尋路:可容許啟發函式、網格範例與 Python 程式碼
- 閱讀約 6 分鐘拓樸排序依相依性排序任務:Kahn 演算法、DFS、graphlib 與環偵測
- 閱讀約 6 分鐘最小生成樹Kruskal 與 Prim:範例追蹤、Python 程式碼、並查集與堆積
- 閱讀約 7 分鐘動態規劃記憶化與製表法比較,零錢兌換與 LCS 追蹤、Python 程式碼與複雜度
- 閱讀約 6 分鐘貪婪演算法每步選區域最佳:區間排程追蹤、Python 程式碼與反例
- 閱讀約 6 分鐘回溯法選擇、探索、撤銷:N 皇后追蹤、子集、排列與 Python 剪枝
- 閱讀約 6 分鐘KMP 字串搜尋前綴函式、搜尋追蹤、Python 程式碼與 O(n + m)
- 閱讀約 8 分鐘位元運算位元運算子、單位元技巧、位元計數與位元遮罩,附 Python 範例
語言教學從安裝工具、印出 Hello, world 開始,講到函式、集合、錯誤處理,最後寫一個完整的小程式。設計模式頁講清每個 GoF 模式要解決的問題,給出 TypeScript 範例,並說明什麼時候不該用。資料結構與演算法頁逐步示範一個例子,給出 Python 程式碼,並寫明時間與空間複雜度。
範例程式碼簡短,照抄即可執行;每頁都連結到核對過的語言文件、標準或原始出處。
常見問題
第一種程式語言學什麼好?
多數初學者選 Python 或 JavaScript:語法簡單、社群龐大、到處都能執行。做網頁選 JavaScript,做資料分析、自動化和一般程式設計選 Python。
跟著教學需要安裝什麼嗎?
每篇語言教學開頭都會說明如何安裝官方工具並執行第一個程式。設計模式和演算法頁使用 TypeScript 和 Python,可以在本機或任何線上執行環境中執行。
這些教學免費嗎?
免費。所有教學不需註冊即可閱讀,範例程式碼也可以用在你自己的專案中。
資料結構和演算法有什麼不同?
資料結構是存放資料的方式,例如陣列、雜湊表、樹;演算法是解決問題的一連串步驟,例如排序、找最短路徑。演算法快不快,往往取決於它使用的資料結構。