第1 章介紹了函數語言的基礎概念,第2 章談了歸納定義與證明。我們將運用這些知識在第5 章之中推導一些程式、解一些編程問題。但在那之前,我們得暫緩一下,釐清一些和語意相關的概念。
語意(semantics)一詞由語言學中借用而來。 語意學是關於字句、詞語的意思的研究。一段程式的「意思」為何? 在電腦技術發展的早期這似乎不是個問題。 當時,「程式語言」只是屬於某台特定型號電腦的指令集,指令的意思就如同其操作手冊所說。 若有疑義,用電腦執行看看就知道了。 隨著技術發展,同一個程式語言可在不同電腦上執行,各廠商、研究機構都可以實作同一語言的編譯器。 同時,實用性質的程式語言也發展得更加複雜,一個程式語言中常有不太能憑直覺理解的細微處。 我們因而需要有個不依賴特定硬體、特定編譯器,也可討論程式語言的「意思」的方法。 不僅可作為各家實作程式語言的依據,也方便大家溝通:每當我們設計新的語言、符號,我們也常需要釐清它的語意是什麼。
描述語意的方式有許多種。本書目前為止其實在不知不覺中混用了兩種語意:指稱語意談一個程式是什麼,操作語意談一個程式做什麼。以下我們以非常粗略的方式介紹它們。