lisp scheme 果壳_走出Lisp(Scheme)困境
從去年開(kāi)始入坑Lisp,周周轉(zhuǎn)轉(zhuǎn)也算是基本入門(mén)了這一傳說(shuō)中的語(yǔ)言。
Lisp確實(shí)是一門(mén)很開(kāi)明的語(yǔ)法規(guī)范。lambda是基本定義形式,遞歸在其骨子深處,試圖通過(guò)函數(shù)表達(dá)世界,的確這個(gè)世界是周而復(fù)始的,有些人愿意稱為循環(huán),一個(gè)固定的迭代算法加上算法演算后不斷更新的執(zhí)行環(huán)境。
確實(shí)Lisp 的入門(mén)會(huì)讓你感受到遞歸的眩暈和神秘,這很迷人,但總想著遞歸搞定問(wèn)題,未免有些誤入歧途,Lisp的后續(xù)版本其實(shí)對(duì)循環(huán)是支持的。遞歸可以實(shí)現(xiàn)循環(huán),只需要小小的包裝。
面向?qū)ο蟾拍顡?jù)說(shuō)是Lisp最先提出的,但使用上一開(kāi)始確實(shí)看著有些別扭。這個(gè)是可以直接使用的,然而Java等后續(xù)在面向?qū)ο笊洗_實(shí)是更進(jìn)一步的。我更喜歡用閉包去做一些簡(jiǎn)單的包裝,實(shí)現(xiàn)簡(jiǎn)單的面向?qū)ο?#xff0c;這一點(diǎn)在不少后續(xù)的腳本語(yǔ)言都有借鑒。
一直是鼓吹中的宏,幾乎給與了高級(jí)語(yǔ)言使用者一個(gè)編譯器的表達(dá)。看到網(wǎng)上很多人不明白,甚至覺(jué)得不必要,在這一點(diǎn)上,我想說(shuō),不明白的那些多數(shù)是做商業(yè)軟件開(kāi)發(fā)的,更專業(yè)化的學(xué)術(shù)研究或者非常規(guī)的IT應(yīng)用。
Lisp通過(guò)宏給與了開(kāi)發(fā)者上帝般的待遇,通常更大的權(quán)限對(duì)應(yīng)的是更多的風(fēng)險(xiǎn),企業(yè)選用該編程語(yǔ)言也就意味著需要招聘能夠駕馭該風(fēng)險(xiǎn)的人,成本相比Java等保守的語(yǔ)言就會(huì)高出很多,而且業(yè)務(wù)拓展也會(huì)在人才數(shù)量上受到限制。
但我很喜歡宏這個(gè)東西,因?yàn)樗o了我定義自己風(fēng)格或熟悉語(yǔ)法的機(jī)會(huì)。曾經(jīng)被一個(gè)985院校畢業(yè)的同事告知不要使用那些有風(fēng)險(xiǎn)的表達(dá),確實(shí)避開(kāi)風(fēng)險(xiǎn)就會(huì)基本沒(méi)有問(wèn)題。宏的使用在官方也確實(shí)被告知不要輕易使用,除非現(xiàn)有的規(guī)則使你不爽。我更多的喜歡發(fā)現(xiàn)所謂風(fēng)險(xiǎn)背后的使用價(jià)值,就好像玩耍雙截棍,最開(kāi)始不小心就會(huì)被自己抽一下,當(dāng)熟悉后,一切就會(huì)不同了,棍子在身邊翻滾,還很花哨,實(shí)際的擊打效果也是值得一提的。從開(kāi)始搗鼓宏開(kāi)始,我的開(kāi)發(fā)環(huán)境已經(jīng)崩盤(pán)好多次了,宏的道必須走下去。
學(xué)習(xí)中被Lisp的continuation卡住,翻看了很多文檔,它與lambda表達(dá)式不同,lambda是順序執(zhí)行的,而continuation提供了中斷掛起在內(nèi)存,并持有該代碼塊,這為跳出代碼塊和跳出后在特定時(shí)間回到相應(yīng)位置提供了可能。這個(gè)比Java 的continues在邏輯上更為底層,Java的continues只是繼續(xù)下一次循環(huán),而繼續(xù)下一次循環(huán)只是這一演算的一小部分。
Lisp的學(xué)習(xí)歷程對(duì)商用開(kāi)發(fā)者是不友好的,因?yàn)樗傁矚g從很專業(yè)的數(shù)學(xué)和編程語(yǔ)言原理開(kāi)始,在商業(yè)的角度并不需要太多人關(guān)心這個(gè)。
在經(jīng)歷了上述折騰后,使用asdf,引入現(xiàn)有類(lèi)庫(kù),從相對(duì)友好的編程模式開(kāi)始Lisp之旅,然后和學(xué)習(xí)其他語(yǔ)言一樣慢慢的向下學(xué)習(xí)該語(yǔ)言的細(xì)節(jié)和原理,最后在此基礎(chǔ)上如何做出拓展。
交流的語(yǔ)言源于溝通的需要,然而語(yǔ)言遠(yuǎn)在交流之前就已存在,語(yǔ)言是人對(duì)事物標(biāo)記和回溯的工具,為了交換認(rèn)識(shí),才衍生出通用的事物標(biāo)記——各種(地區(qū))方言。與其說(shuō)我們?cè)谑褂镁幊陶Z(yǔ)言,還不如說(shuō)我們?cè)诒磉_(dá)我們對(duì)世界的看法。
Lisp的使用是數(shù)學(xué)的思考,是生活的縮影,更值得贊許的是它在引導(dǎo)開(kāi)發(fā)者認(rèn)識(shí)問(wèn)題的本質(zhì)并為獨(dú)特的表達(dá)提供可能,所以需要一個(gè)平常心,好奇心,在日常中慢慢品悟。
總結(jié)
以上是生活随笔為你收集整理的lisp scheme 果壳_走出Lisp(Scheme)困境的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: shapefile导入oracle,sh
- 下一篇: java流读写_java流概述以及文件读