Lisp 編程模型

我沒有學過 Lisp, 不知個人想法是否靠譜。程序員

我在學習一門真正的編程語言以前,已經用一種只有函數的腳本寫了至少10年的應用。因爲那門腳本語言中沒有變量,控制語句,關鍵字,類,對象,有的只有函數,還有一個基於關聯表的數據模型。當我感受用這種形式編程,沒法充分表達個人思想後,決定學習一門真正的語言。但 C Java VB c# 都讓我半途而廢。只有 Perl 讓我重獲新生,我用將近3年的時間將Perl語言用到了全部問題的處理上。隨着 Perl 語言的弊病癒來愈明顯,我決定了解一些其餘的語言,來讓我明白,究竟是什麼讓我感受到如此壓抑。Ruby PHP Javascript Lua Java 這些前途和自由並重的語言耗費了大量的時間。其實我一直想靜下心來學習傳說中的 C 和 Lisp,還有許多人推薦的 Haskell。 隨着用現有語言而致使的問題愈來愈多,讓我對這三種語言越發神往。但老是在這些語言的外圍打轉。編程

Io 語言讓我史無前例的接近 Lisp 的設計模型。c#

Lisp 是函數式語言的原型,由於函數式語言是 Lisp 表達方式的一個子集。Lisp 的宏是他獨有的標誌。想了好久,才明白,原來宏只是 Lisp 要求解釋器將 Lisp 代碼自己當成一個數據結構,在運行時以前的一個階段,也許是解釋,也許是擴展,也許是源碼分析的時候,將一個規則加在這個代碼的數據結構上,來擴展 Lisp 簡單乏味的 S 式語法。這樣讓 Lisp 的代碼看起來沒有固定的語法。由於語法也是 Lisp 動態擴展的一個能力。緩存

從人的角度看,一個變幻無常的語法,讓人很難閱讀和理解,這嚴重影響了人們學習和交流 Lisp. 因此 Lisp 中不鼓勵使用宏,除非想用一種另外的方言編程,那麼這塊工做就交給那些設計語言的人,由於他們會進行屢次的測試和評估,所展示出來的東西必定比 Lisp 更加親切,隨和,適合一些人的口味。數據結構

Lisp 簡單的語法要求程序中任何階段計算的中間值和成果,都應當能獨立保存其狀態,以便交給其餘的計算進程去使用。函數,代碼自己(也就是塊),判斷語句,循環語句,都須要用一種形式描述,保存,返回和傳遞。這鍛鍊了 Lisp 程序員的抽象思惟。也造就了函數式語言的根基。編程語言

Io 語言是沒有括號和表達數序相反的 Lisp 方言,相反是說,Io 中的函數也就是動做,是放在數據的後面,而不是放在前面,由於做者記憶力衰退,感受在進行一個計算以前,把函數名稱先緩存到大腦中比較累,因而想到哪,就寫到哪,先把手頭的數據寫完了,再去寫要幹什麼。這種思路確實讓人輕鬆天然多了。函數

站在巨人的肩膀上,視野真是開闊啊,原型語言,內嵌虛擬機,面向對象,消息機制,一會兒能放入一個語言中。源碼分析

我學習 Io 的目的就不說了,由於我知道你們不信。學習

相關文章
相關標籤/搜索