4 回答

TA貢獻(xiàn)57條經(jīng)驗(yàn) 獲得超235個(gè)贊
Lisp的價(jià)值在于最容易貫徹"Code as Data"這個(gè)編程范式
如果你要解決的問(wèn)題是常見(jiàn)的、無(wú)需動(dòng)態(tài)元編程的“靜態(tài)代碼”就能解決的問(wèn)題,Lisp其實(shí)發(fā)揮不了什么特殊作用。不如直接用那些“功能豐富又易上手”的常見(jiàn)語(yǔ)言(Python、Ruby、C++等)來(lái)做
但是如果你要解決的問(wèn)題需要使用動(dòng)態(tài)生成、轉(zhuǎn)化的代碼來(lái)解決,Lisp就是最好的工具之一
誠(chéng)然,任何需要運(yùn)行時(shí)改變、構(gòu)造的代碼都可以通過(guò)參數(shù)化、鉤子化靜態(tài)代碼來(lái)代替,使之無(wú)須一個(gè)eval解釋器也能達(dá)到目的,但是那樣會(huì)極大地復(fù)雜化靜態(tài)代碼,所以復(fù)雜的情形下不如動(dòng)態(tài)轉(zhuǎn)化代碼來(lái)的直觀
舉個(gè)例子:在常見(jiàn)的AOP場(chǎng)合(任何足夠復(fù)雜的項(xiàng)目都需要某種程度的AOP),使用不含eval的語(yǔ)言都顯得很累贅和蹩腳。要么需要工具來(lái)“后期編織”源代碼、字節(jié)碼、目標(biāo)文件,要么需要instrument、extend、hack運(yùn)行時(shí)。如果使用Lisp,只需要轉(zhuǎn)化代碼(因?yàn)镃ode is Data),或者實(shí)現(xiàn)一個(gè)第二層的eval就行了

TA貢獻(xiàn)63條經(jīng)驗(yàn) 獲得超30個(gè)贊
作為程序員應(yīng)該了解。但是也沒(méi)有吹得那么神乎其神。在lisp剛剛發(fā)明的1958年,它確實(shí)是獨(dú)一無(wú)二的。但是很多現(xiàn)代語(yǔ)言學(xué)習(xí)了lisp的很多特性,而在其他一些方面反而是lisp趕不上的。有人說(shuō)Lisp是有志于在研發(fā)方面追求極致的工程師的最后一跳。
不過(guò)如果你很有興趣、有對(duì)C等語(yǔ)言厭倦,想了解一些Lisp寫得軟件和書籍還是值得學(xué)的。
所以說(shuō)Lisp值不值得學(xué)還得看你對(duì)于自己的定位了。
望采納~
添加回答
舉報(bào)