- 論壇徽章:
- 2
|
回復(fù) 8# OwnWaterloo
前面scheme的優(yōu)勢(shì)說(shuō)掉了一個(gè)。。。 尾調(diào)用優(yōu)化。。。
我知道的語(yǔ)言使用嚴(yán)格求值的語(yǔ)言只有scheme, lua, scala是語(yǔ)言保證支持的。 cl是implementation details, 一些支持一些不支持。
在非嚴(yán)格求值的語(yǔ)言里尾調(diào)用的含義不一樣,沒有可比性。
這里個(gè)人認(rèn)為學(xué)院派是對(duì)的,有語(yǔ)言保證的尾調(diào)用優(yōu)化與沒有語(yǔ)言保證的尾調(diào)用優(yōu)化,代碼的寫法都完全不一樣。
scheme的優(yōu)勢(shì):尾調(diào)用優(yōu)化+continuation,沒了。
lexical scope only? 前面提到的3種lisp,el,cl,clojure都是混合型的。 el在24之前是默認(rèn)dynamic, lexical 要麻煩一些。 24之后就與cl, clojure一樣是默認(rèn)lexical, 也支持dynamic。
lisp-1? 這只是權(quán)衡,與lisp-2之間各有優(yōu)劣。
衛(wèi)生宏? make simple thing simpler, make hard thing harder。
Minimalism? 理論上是對(duì)的, 實(shí)踐里行不通。 roll your own的言外之意就是還會(huì)有roll their own。
本來(lái)語(yǔ)言與host環(huán)境(大部分都是C)之間的boundary就是個(gè)麻煩事情,Minimalism還會(huì)導(dǎo)致各種roll xxx own之間的boundary。
連個(gè)data structure庫(kù)都要東拼西湊,搞毛啊。
而其他的feature稍微現(xiàn)代點(diǎn)的語(yǔ)言里哪個(gè)沒有?
總之,scheme適合學(xué)習(xí),學(xué)習(xí)語(yǔ)言的core可以精簡(jiǎn)到什么程度,可以在這些盡量減少限制的core上實(shí)現(xiàn)各種features。
但實(shí)踐和學(xué)習(xí)是兩碼事。實(shí)踐里scheme"語(yǔ)言"這種哲學(xué)行不通。而如果是scheme的"某種實(shí)現(xiàn)",投入實(shí)際使用前還請(qǐng)三思而行。 |
|