2014年3月4日 星期二

一行程式碼說起

來看看 LISP 的語言風格,先看下面一行簡單的運算式

3 + 2 * 6

來個括號,順便確認運算順序 (前一段時間還吵過一陣先乘除後加減的口水戰)

(3 + (2 * 6))

把運算符號 + 跟 * 搬到每一對括號前

(+ 3 (* 2 6))

賓果! 這就是 LISP 程式語言的風格,它有一個專有名詞叫做 S-expression,這有什麼用?

這裡先暫停,想象有個你熟悉的語言 (C BASIC FORTRAN...),定義了兩個函數

PLUS
   輸入 A B
RETURN A+B


MUTIPLY
   輸入 A B
RETURN A*B

再看看下面這行程式
(PLUS 3 (MUTIPLY 2 6))

是的,LISP 出現了,實際上 + * 在 LSIP 中與其他函數是平等的,這樣做最大的意義在於資料的格式與程式語言將得到統一 (以後再談 LISP 的資料)。

回頭來看看跟 AutoCAD 有何關聯,你也許聽過一種 AutoCAD 的秘技,假設要畫一條直線,此時要輸入一段距離,假設是 123 456 789 的總和,手邊卻連算盤都沒有,密技會告訴你,這時只要輸入指令 (+ 123 456 789) 就可以得到 1368 的距離,此時,你應該知道其實你就是運用了 LISP。

最後要說的是 LISP 一對刮號將自動傳回其運算值,所以 1368 是 (+ 123 456 789) 的 RETURN。

沒有留言:

張貼留言