開發自製腳本引擎不僅能滿足專屬領域需求,更是磨練程式設計能力的絕佳專案。本文建立語言特性正交分類框架,指導根據應用場景選擇最適合的腳本語言設計。
MakeArray(i) = [i] ++ MakeArray(i+1) // 無限陣列
Sum(MakeArray(1), 10) // 僅計算前 10 項,避免無限遞迴
x=1; x="str")function Add(a) { return function(b) { return a+b; } }
Inc = Add(1); Inc10 = Add(10);
Inc(5)→6; Inc10(5)→15 // 同一函數碼,不同捕獲環境
| 應用場景 | 推薦特性組合 |
|---|---|
| 遊戲劇情/關卡腳本 | 命令式、弱型別、函數、基本控制流 |
| GUI 事件回呼密集 | 閉包或函數指標型別 |
| 資料查詢/轉換 DSL | 描述式、無型別、簡化 Lambda 語法 |
| 高效能數值計算 | 強型別、按值計算、JIT 編譯友善 |
| 簡單設定檔 | 命令式、無運算式、無函數、僅變數/分支/迴圈 |
以下任一條件滿足即為圖靈完備:
因閉包本質為環境結構指標,以上皆能表達遞迴資料結構。
早期專案採 Pascal 語法(受 Delphi 影響),支援觸發器、動畫控制、複雜分支邏輯,驗證了「劇情複雜度決定腳本特性豐富度」的原則。