如果要給 Lisp 語言下一個註解的話,它是單純而強大的語言。它給我的整體感覺很像數學家寫的運算式,簡練不囉唆、每一句都像是真理。接觸這語言到現在,對於它的純粹仍然感到敬仰。雖然對我來說,它還是一個似懂非懂的語言。我並未使用它開發應用,但它讓我見識到語言的美。
它就像是一個黏土,可以讓你雕塑出想要的形狀。
它就像是一個積木,可以讓你堆疊出想要的城堡。
使用它的體驗是很特殊的,一般的程式語言不容易有這樣的感覺。
它給你高度的自由,你不像是使用語言,反而比較像是創造語言。
摘要性的介紹:
Lisp 是由七個基本功能構成的語言,分別為: quote, atom, eq, car, cdr, cons, cond.
Lisp 的句子是由 s-exp 構成的, s-exp 作為程式的資料和指令,這代表 s-exp 可以當作資料傳輸也可以當作指令執行,這個特性讓 Lisp 可以很容易地進行擴充、建構新的程式運算。
當初約翰·麥卡錫在論文中的求值函數eval ,可以僅透過 quote, atom, eq, car, cdr, cons, cond 完成。透過(print(eval(read)))的過程可以實現一個很直觀的計算模型,讀取資料、求值、印出,而這模型本身是可以擴充的,你可以在裡面增加函數、擴充功能。
這是我在 lisp 學會最驚豔的事情
如果想要詳細了解如何辦到的?請務必參照《Lisp之根源》
接下來,暫時離開抽象的計算理論,看一下實際的機器是怎麼運作的吧。