Lisper社区有很多问题。
comp.lang.lisp是我见过的最病态的新闻组之一。下面我将谈到其中的两个很严重的问题。
每隔两三年,comp.lang.lisp就会展开一场关于为什么人们不爱用Lisp的大讨论。一次,Peter da Silva建议道,“应该开发一个像AWK那样的lisp脚本工具,这样人们就可以轻松地完成排序这样的事,进而用Lisp做一些日常工作,而后开始做大工程”。他举了个例:
awk 'BEGIN {FS=":"}; $6=="/sbin/nologin" {print $1}' /etc/passwd
跟帖很有趣。首先,一个人说到,“你早就可以这样做了”:
“我早就用Lisp(好吧,是Scheme)来处理一些日常事务了。只需要几个宏和函数,我就能用Common Lisp实现你的脚本:”
(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))))))
这个方案差不多比AWK版长一倍半,但至少它“只需要几个宏和函数”-_-! 嚯嚯~,这家伙根本就没把住问题的本质。
所以,(Lisp社区的)第一个问题是他们根本就不知道其他人想要什么。
讨论还在继续,接下来是一个更严重的问题:
“有多少时候你会写这种“一句代码”?事实上并不多。这不过是Perl的一种压缩代码的奇技淫巧。六个星期,乃至六个月后,我更愿意读Lisp代码,而不是那些Perl谜语。”
有多少时候我会写这种“一句代码”?我不知道,也许一天二三十次。但我打赌肯定不精彩,因为我们都知道,AWK已经彻底失败了,因为它不能满足实际需求。所以,(Lisp社区的)第二个问题是他们不愿说Lisp不行,即时用Lisp来解决某个问题真的不高效。这时他们的回答要么是“实际中不会出现这样的问题”,要么是“白痴才会去解决这种问题”。
值得注意的是,争论转向了抨击Perl。关Perl哪门子事啊?Da Silva讨论的是AWK,不是Perl。但是comp.lang.lisp上的人就是不放过Perl。他们就是喜欢讨论Perl。我们再看看comp.lang.python上的情况,那的人很少会讨论Perl。所以,我认为相比起comp.lang.lisp,comp.lang.python上的讨论更健康——Lisper在意Perl,而Python则更在意Python。
这就知道Lisp为什么不流行了。Lisp程序员根本就不想让它流行。他们总是抱怨没人用Lisp,却又总在侮辱论坛上的新手(这帮老家伙认为这是新手应得的,谁让他们又笨又爱叽叽喳喳)。如果Lisp真的流行起来,那绝对是comp.lang.lisp上这帮人的噩梦。
Lisp在很多方面都很优秀,但Lisp社区的问题很严重。我倒是想改善这种情况,但恐怕我帮不了什么,因为他们根本就不听劝,至少听不进我的。