Lisper社區(qū)有很多問(wèn)題魂挂。
comp.lang.lisp是我見(jiàn)過(guò)的最病態(tài)的新聞組之一粹断。下面我將談到其中的兩個(gè)很嚴(yán)重的問(wèn)題派敷。
每隔兩三年癌压,comp.lang.lisp就會(huì)展開一場(chǎng)關(guān)于為什么人們不愛(ài)用Lisp的大討論仰泻。一次,Peter da Silva建議道滩届,“應(yīng)該開發(fā)一個(gè)像AWK那樣的lisp腳本工具集侯,這樣人們就可以輕松地完成排序這樣的事,進(jìn)而用Lisp做一些日常工作,而后開始做大工程”棠枉。他舉了個(gè)例:
awk 'BEGIN {FS=":"}; $6=="/sbin/nologin" {print $1}' /etc/passwd
跟帖很有趣浓体。首先,一個(gè)人說(shuō)到辈讶,“你早就可以這樣做了”:
“我早就用Lisp(好吧命浴,是Scheme)來(lái)處理一些日常事務(wù)了。只需要幾個(gè)宏和函數(shù)贱除,我就能用Common Lisp實(shí)現(xiàn)你的腳本:”
(with-lines-from-file (line "/etc/passwd")
(let ((fields (string-split line :fs #\\\\:)))
(when (string= (aref fields 5) "/sbin/nologin")
(format t "~A~%" (aref fields 0))))))
這個(gè)方案差不多比AWK版長(zhǎng)一倍半生闲,但至少它“只需要幾個(gè)宏和函數(shù)”-_-! 嚯嚯~,這家伙根本就沒(méi)把住問(wèn)題的本質(zhì)勘伺。
所以跪腹,(Lisp社區(qū)的)第一個(gè)問(wèn)題是他們根本就不知道其他人想要什么。
討論還在繼續(xù)飞醉,接下來(lái)是一個(gè)更嚴(yán)重的問(wèn)題:
“有多少時(shí)候你會(huì)寫這種“一句代碼”冲茸?事實(shí)上并不多。這不過(guò)是Perl的一種壓縮代碼的奇技淫巧缅帘。六個(gè)星期轴术,乃至六個(gè)月后,我更愿意讀Lisp代碼钦无,而不是那些Perl謎語(yǔ)逗栽。”
有多少時(shí)候我會(huì)寫這種“一句代碼”失暂?我不知道彼宠,也許一天二三十次。但我打賭肯定不精彩弟塞,因?yàn)槲覀兌贾榔鞠浚珹WK已經(jīng)徹底失敗了,因?yàn)樗荒軡M足實(shí)際需求决记。所以摧冀,(Lisp社區(qū)的)第二個(gè)問(wèn)題是他們不愿說(shuō)Lisp不行,即時(shí)用Lisp來(lái)解決某個(gè)問(wèn)題真的不高效系宫。這時(shí)他們的回答要么是“實(shí)際中不會(huì)出現(xiàn)這樣的問(wèn)題”索昂,要么是“白癡才會(huì)去解決這種問(wèn)題”。
值得注意的是扩借,爭(zhēng)論轉(zhuǎn)向了抨擊Perl椒惨。關(guān)Perl哪門子事啊潮罪?Da Silva討論的是AWK框产,不是Perl凄杯。但是comp.lang.lisp上的人就是不放過(guò)Perl。他們就是喜歡討論P(yáng)erl秉宿。我們?cè)倏纯碿omp.lang.python上的情況,那的人很少會(huì)討論P(yáng)erl屯碴。所以描睦,我認(rèn)為相比起comp.lang.lisp,comp.lang.python上的討論更健康——Lisper在意Perl导而,而Python則更在意Python忱叭。
這就知道Lisp為什么不流行了。Lisp程序員根本就不想讓它流行今艺。他們總是抱怨沒(méi)人用Lisp韵丑,卻又總在侮辱論壇上的新手(這幫老家伙認(rèn)為這是新手應(yīng)得的,誰(shuí)讓他們又笨又愛(ài)嘰嘰喳喳)虚缎。如果Lisp真的流行起來(lái)撵彻,那絕對(duì)是comp.lang.lisp上這幫人的噩夢(mèng)。
Lisp在很多方面都很優(yōu)秀实牡,但Lisp社區(qū)的問(wèn)題很嚴(yán)重陌僵。我倒是想改善這種情況,但恐怕我?guī)筒涣耸裁创次耄驗(yàn)樗麄兏揪筒宦爠裢攵蹋辽俾牪贿M(jìn)我的。