顯示具有 lisp 標籤的文章。 顯示所有文章
顯示具有 lisp 標籤的文章。 顯示所有文章

2013年9月20日 星期五

lisp note 2

 最近讀lisp的心得,感覺的確是一個滿有趣的語言,要說讓我不怎麼喜歡的地方,大概就是那一堆(())這些符號,真的讓我剛開始,看到眼花,語言的可讀性跟python比起來真的差很多 :( 但是我也在想就是因為他的這種語言特性,才會讓lisp這麼多彩多姿 :),也讓lisp有個說法是lisp就像是DNA一樣。


lisp全名是(list processor),從這名字就可以略知一二了,在這程式語言裡,你會看到一堆list,事實也是如此,大致上可以這樣看,lisp裡面的元素,可以分為兩種非cons,是cons,是什麼意思呢?

cons掌控著兩個指標,第一個指標指的元素(car),第二個是(cdr),所以你會看到有語法是這樣的, (car '(1 2)), 這將會得到1,想當然爾(cdr '(1 2)),就是得到2,看到我看到這樣的語法時,心中就開始想了一件事.....
那就是,既然這語法是成功執行的,那是不是代表後面那東西就是一種cons所組成的物件?
後來,經過網路上的搜尋後,事實果然就是如此!!

其實 (1 2),它相當於(cons 1 (cons 2 nil))這樣,當然你會想,要是你想建一個很長的list,那豈不是要打一長串這樣的東西,很麻煩 :( ,lisp是有提供一個syntax sugar的,那就是list,(list 1 2),這樣的效果是一樣的。因此這也給我了一個想法,用cons是可以做出額外許多東西的,或許可以建造新型態? 只是目前我也沒試過,所以說lisp裡面的元素非cons即cons,似乎也無可厚非呢 :)

lisp這語言實在有好多東西要挖喔 :) 目前我沒辦法闡述太多心得,因為還有太多東西沒讀到,也還有太多東西沒釐清,所以沒辦法寫太多心得出來,但是,有一點是lisp有一些語法是有歷史淵源的,我覺得看那些歷史淵源,讓我了解更多的東西,千萬不要遇到語法就硬記,當你知道他的淵源,使用它就跟喝水一樣自然:)

我是這麼認為的,有太多人只把語言當作工具而利用,而沒有去深層了解他背後的語意和哲學,我覺得這是很可惜的,就像是為了考試而讀書一樣,沒有去了解書中給你的意境,想當然爾,會覺得讀書無趣,食之無味。 或許這就是現實面吧,我想lisp有效率上的問題,所以在以前才沒有熱門起來,但是不管如何,我還是覺得lisp值得一學,至少它目前讓我開了許多眼界 :)


在此提供一個可以當做文件查詢的網站 reference
另外lisp的表示法是用前序表達,這或許也是讓許多人第一次看不習慣的原因吧,這邊有個wiki 可以看

2013年9月18日 星期三

first time to play lisp

最近不知道怎麼搞的,突然想要來碰一下這十分古老的語言 :) lisp是一個充滿分支的語言,我覺得他沒有像python那樣有一個強力標準在,意思是python有一個官方版本,雖然python也有眾多分支就是了,像是Jpython, Ironpython....有的沒的。

其實在後來有一個算的上稱為標準的lisp,那就是common lisp,以後在網路上搜索的結果,發現比較多人在用的是clisp(common lisp)和SBCL,但是common lisp也是有眾多實做版本,,我是下載 gnu common lisp ,如果想要玩SBCL請自行去找載點囉 :)

lisp的在網路上的資源,說多也不多,說少也不少,但是我覺得似乎沒那麼熱門,畢竟這語言,曾經被冷落一段時間,但是經過我稍微一探lisp的世界,我發現這語言雖然古老,但是它卻有著許多現代語言的特性,甚至該說更好嗎? 垃圾回收機制他也擁有。但是令我比較驚訝的是它的例外處理,他不像目前的語言,一遇到錯誤就只是丟個訊息,然後程式結束,lisp它似乎會讓你進入debug模式的樣子,然後列出一些你可以執行的動作,目前我也才剛碰一兩天而已,所以還無法完整了解,lisp的哲學,必須過一段時間才能領域精髓。




上面是我的開發環境,因為網路上,我看到推薦的幾乎一致是 emacs + slime + your clisp,所以我就用囉,其實最近也在學vim,但是我看到的插件,竟然跟gnu screen配合,這實在是...很悲劇的他沒提供windows版的:( ,當然其實也有不是用gnu screen,純粹用vim buffer的,插件名字是slimv,但是目前還找不到無法使用的原因,目前猜想是我vim支持的python版本的不合的關係,但是我可不想為了這個,而重新去compile一個vim來用...,或許也是其他原因也說不定,只是想要無痛設定開發環境,就用emacs吧 :) 畢竟slime本來就是emacs的插件。


其實如果你不想要為了學lisp而在去安裝emacs、學emacs的話,我有找到一個IDE,方便好用,以供參考allegro common lisp ,但是介面實在是...,如果你不介意介面的話,又不想碰emacs,那就用這個吧 :)


另外這邊記錄一下目前找到的資源,滿意外的lisp,有不少免費電子書而且品質還算不錯!!
我想看完這些就差不多了吧 :)