B05 · 跨語言 CRUD 比較 詳細 ROADMAP

計畫文件,不會被 Quartz 渲染。 回主 roadmap → backend/ROADMAP.md


章節目標

同一個功能(簡單 CRUD)用不同語言實作,對比語法 / 樣板量 / 生態成熟度 / 效能 / 工程體驗。這章不教語言(那在 backend/language/{name}/ 深入),而是選型視角——讓讀者在「Go / Python / Node / Java / PHP / C# 要選哪個」時有依據。


🌱 基本介紹

#主題SlugStage大綱
01跨語言 CRUD 比較是什麼01-what-is-cross-language-crud🌱為什麼用「CRUD」這個最小共同分母比較語言;控制變因、公平性

❓ 為什麼需要

#主題SlugStage大綱
02為什麼不能只看語言 benchmark 選型02-why-not-benchmark-only🌱benchmark 場景太單純、生產環境的瓶頸通常在 IO / DB / network、CRUD 比較暴露的是「樣板量 / 開發速度 / 維護性」而非純效能
03為什麼 CRUD 是好的比較單位03-why-crud-as-comparison🌱CRUD = Route + ORM + Validation + Auth + Error handling,涵蓋後端最常見操作;小到可一頁讀完、大到能看出生態差異

🕰️ 演進

#主題SlugStage大綱
04後端語言 CRUD 範式演進04-crud-paradigm-evolution🌱Java 繁瑣 → Rails Convention-over-Configuration 顛覆 → Node.js 快速原型 → Go 走回顯式 → Rust 型別嚴謹

🧠 知識型

F05-A 五語言 CRUD 總覽(既有)

#主題SlugStage大綱
05CRUD 跨語言總覽⛔️ micro-service/09-crud-overview🌿跨系列
06Go CRUD⛔️ micro-service/10-go-crud🌿跨系列
07Node.js CRUD⛔️ micro-service/11-nodejs-crud🌿跨系列
08Python CRUD⛔️ micro-service/12-python-crud🌿跨系列
09JVM(Java / Kotlin)CRUD⛔️ micro-service/13-jvm-clr-crud🌿跨系列
10Laravel PHP CRUD⛔️ micro-service/14-laravel-crud🌿跨系列

F05-B 新增比較軸

#主題SlugStage大綱
11C# / .NET CRUD11-dotnet-crud🌱ASP.NET Core + EF Core + minimal API,跟 JVM 心智模型對比
12Rust CRUD(Axum + SQLx)12-rust-crud🌱ownership 在 web handler 的表現、? operator、async trait 限制
13語言選型決策樹13-language-decision-tree🌱團隊人數 / 性能要求 / 招募難度 / 生態成熟度 / 心理負擔,6 維度評分

🎯 語言觸發清單(backend/language/{name}/

不屬於 B05 章節子題——是預計觸發的子系列清單。目錄不預先建,寫到 5+ 篇才 mkdir

優先度語言子目錄預計子題
🔴JS / TypeScriptbackend/language/nodejs/~15(Event Loop / Stream / Worker / Typing / monorepo / package manager 戰爭)
🔴Pythonbackend/language/python/~15(GIL / asyncio / typing / packaging / __slots__ / free-threading 3.13+)
🔴PHPbackend/language/php/~10(FPM / PSR / Composer / OPcache / Swoole / 8.x 新特性)
🟡Java(跨層級完整)backend/language/java/~20(JMM / GC / JIT / classloader / concurrency / Project Loom / Kotlin coroutine)
🟡Gobackend/language/go/~12(Goroutine / Channel / Context / sync package / generics 2022)
🟡C# / .NETbackend/language/dotnet/~12(CLR / GC / async-await / LINQ / Kestrel / .NET 8 AOT)
🟢Rustbackend/language/rust/~15(Ownership / Borrow / Lifetime / async / tokio / error handling)

🔧 小實作注意事項

#主題SlugStage大綱
14用 7 語言各實作一個 Health Check endpoint14-healthcheck-7-languages🌱最小可跑的 HTTP endpoint,對比 framework 啟動成本、樣板
157 語言打相同 DB + 壓測15-7-languages-benchmark🌱控制變因的 benchmark;暴露瓶頸在哪(CPU / GC / DB pool / JIT warmup)

💣 Anti-pattern

#主題SlugStage大綱
16選型 Anti-patterns16-selection-antipatterns🌱只看 TIOBE / StackOverflow survey、只看 benchmark 不看生態、跟風選新語言但團隊沒人熟、用熟的語言做不該用的場景(Python 跑 CPU 密集沒考慮 multiprocess / Rust)

🧰 對應檢查工具

#主題SlugStage大綱
17跨語言工具生態17-cross-language-tooling🌱OpenAPI codegen 多語言、protobuf / gRPC、LSP、Docker multi-stage 跨語言 build、k6 / Vegeta 壓測

📎 補充

#主題SlugStage大綱
S01Polyglot 團隊的後端選型s01-polyglot-team🌱大公司多語言共存的經驗、服務邊界怎麼拆、共用 contract 怎麼管
S02新語言(Zig / Gleam / Mojo)後端展望s02-new-languages🌱2024–2026 興起的 new kids;什麼時候值得關注

章節進度統計

  • 章節子題:17 + 2 補充 = 19 項(不含觸發清單)
  • 觸發子系列:7 個語言(~99 子題,另計)
  • 🌿 growing:6(跨系列)
  • 🌱 seed:13

跨系列連結

  • backend/framework/ B06(同語言內的 framework 選擇)
  • backend/concepts/ B01(語言之下的共通概念)
  • micro-service/ 09–14(五語言 CRUD 既有)
  • micro-service/37-framework-selection-methodology38-framework-selection-cases
  • standards/02-good-backend-framework