《大道至簡:軟件工程實踐者的思想》以「愚公移山」寓言為引,深刻闡述編程本質:順序、分支、循環三大核心結構足以構建任意複雜系統。本文記錄閱讀感悟與偽代碼實現。
無論多麼龐大的工程,只要有明確需求、確定工作流程,包含順序、分支、循環結構,皆可用編程實現。這三大結構就是編程的精義。
| 故事元素 | 編程結構 | 對應描述 |
|---|---|---|
| 目標:平王屋太行,通豫南達漢陰 | 需求規格 | 明確的驗收標準 |
| 方法:扣石墾壤,箕畚運渤海尾 | 順序結構 | 基本操作步驟 |
| 條件:愚公死 → 子孫繼續 | 分支結構 (if-else) | 異常/邊界處理 |
| 循環:子生孫,孫生子,子子孫孫無窮匱 | 循環結構 (while) | 持續迭代直到條件滿足 |
| 終止:山不加增 | 循環不變量/終止條件 | 保證非死循環,問題可解 |
import java.大道至簡.*;
import java.愚公移山.*;
public class YugongYishan {
public static void main(String[] args) throws IOException {
// 團隊:愚公 + 子孫三夫
int 愚公, 子孫荷擔之三夫;
// 智叟質疑
System.out.println("甚矣,汝之不惠。以殘年余力,曾不能毀山之一毛,其如土石何?");
// 愚公回應:遞歸傳承 + 可行性論證
System.out.println("汝心之固,固不可徹...子子孫孫無窮匱也,而山不加增,何苦而不平?");
// 核心循環:直到山移平
while (王屋山太行山依然存在) {
if (愚公活著) {
愚公和其子孫進行移山(); // 順序結構:扣石、墾壤、運渤海
} else {
愚公的子孫們繼續移山(); // 分支:傳承執行
}
// 隱含終止條件:山高度遞減,最終為 0
if (mountain == 0) break; // 山不加增,保證終止
}
}
}
《大道至簡》第一章用最樸素的寓言,講透了計算機科學最核心的真理:圖靈完備 = 順序 + 分支 + 循環。所有設計模式、架構模式、框架源碼,本質上都是這三大結構在不同抽象層級的組合與變奏。初學者若能悟透此點,便能跳出語法細節,直抵編程本質——用最簡單的結構,解決最複雜的問題。