
程式的意義
|
45
小步語意詳細的執行導向風格,適合真實世界裡明確規範的程式語言。舉例來說。
Scheme 程式語言最新的 R6RS 標準(
http://www.r6rs.org/final/html/r6rs/r6rs-Z-H-15.html
),
就以小步語意描述它的執行方式,並提供那些語意的參考實作物(
http://www.r6rs.org/
refimpl/
),而這些參考實作物是以 PLT Redex(
http://redex.racket-lang.org/
,也就是
『為規範及除錯操作語意所設計的特定領域語言』)所編寫。OCaml 程式語言的底層是
較為簡單的 Core ML 語言,OCaml 程式語言以 Core ML 為基礎,並以其執行階段的行
為定義了 OCaml 程式語言的小步語意(
http://caml.inria.fr/pub/docs/u3-ocaml/ocaml-ml.
html#htoc5
)。
其他在更為簡單的 lambda calculus 語言裡使用小步操作語意來規範運算式意義的例
子,請見第 208 頁『語意』。
大步語意
現在我們已經看過小步操作語意的樣貌:我們設計了能維護一些執行狀態的抽象機,然
後定義化簡規則,這些規則規範了每種程式的建構物該怎麼在完成時漸進持續的往前執
行。尤其小步語意有著濃濃的
迭代
(
iterative
)風貌,需要能重複執行化簡步驟的抽象
機(
Machine#run
裡的 Ruby
while
迴圈),我們建構這些步驟所產生輸出的資訊,如同
輸入所要求的相同,讓它們適合這種重複的應用 ...