Lisp的诅咒
终其一生, 一个老师可能会培养成百上千的学生。他们大多数就像人群画中的虚线勾画的群众一样, 面目模糊。有时候,这种模糊感会让你尴尬,比如有人叫着你的名字打招呼,你却完全不知道他或她是谁。
但有些学生你会记得,通常是非常优秀的学生和非常差劲的学生。才华和彻底的失败都会让人印象深刻。更奇特的是,有些学生同时具备这两个特质,我对他们抱有深深的同情。
人生中的彻底失败并不新鲜, 我们的身边充满了这类人, 我想探讨的是那些才华横溢而失败的人。
为了理解这一点,我们先回到的高中时代,看看那些正在成长的才华横溢的失败者。就像电影《死亡幻觉 Donnie Darko (2001)》所描绘的那样,每个高中每隔一两年都会出这么个人。
他们通常是出类拔萃的天才,习惯于在最后一刻完成任务但仍能表现出色。他们对整个教育体系并不那么认真,因为许多学校的规则确实荒谬。事实上,如果你认真的去看,我们世界中的许多事物都没有多少道理。
他们有两个方面:智力敏锐和玩世不恭。世界对他们显得容易甚至有些沉闷。很快他会认识到许多人类活动实际上是相当无意义,他发现并内化了这一点,然后会变得愤世嫉俗,也会有些悲伤. 因为他自己也被卷入了这个机器,如果想进步,就必须附和。青少年非常善于发现这种假象。可这也是一种疾病的种子, 一种可能在以后的生活中发展为沮丧和忧郁。
这个人的另一个特点是他非常容易感到厌倦。他会紧抓住一个任务,短时间内以疯狂的速度完成,然后厌倦了就放弃它。这也是一种模式;疯狂活跃的时期后,跟着的是忧郁、退缩和不活跃的时期。这是一种双相人格。
接下来,高中毕业了,看看他进入大学后会发生什么?
我们有两个故事;一个光明的故事和一个黑暗的故事。
光明的故事是他真正被所选择的东西激励,以优异的成绩毕业,证明了他的天才。
但我想探讨的不是这个故事。我想看的是黑暗的故事。那个才华和失败混合在一起的故事。
聪明的头脑会发现大学和高中一样,在许多方面都是装模作样的。大学的根基是伟大思想家们构建的学科之美。但如果看看大学的教授人群(和所有的人群一样), 狭隘和浅薄并不鲜见,他会再次陷入愤世嫉俗和失望当中.
对新生来说,学校和大学之间的重大区别是自由。从妈妈和爸爸的管束中解放出来,自由地做自己的事情。事实上有自由的搞砸一切。所以我们的主人公开始新的生活,发现他可以熬夜喝酒, 学业上继续依靠他的才华支撑, 毕竟高中时候管用, 而且它在大学也确实管用了一段时间。
但天才是不够的。他还需要应用,因为大学的课题更难。所以很快,我们的人就开始在作业中获得B+,然后是B,然后是C。他感受到了失败,刺穿了他平常的自信。他还可以熬到凌晨5点,然后在上午9点的截止时间之前交作业,他交的东西并不那么好。
这种学生多是以差生的面目出现在我身边。其中一个人在把UNIX提示符改成了“无聊>”。如果我恰好能发现这类同学,对我们彼此都是幸运的。(事实上,我挽救了一个,现在他也是一位教授了)。通常,他会在最后一年的项目中活跃起来,能够自己做一些事情,并提交一些非常非常好的东西。有些甚至是体现了惊人原创性。但是许多教授不会因为这个原因而给它一个公平的分数。
通常,这种学生很难走到终点。退学很常见。最后去做一些外卖/肯德基之类的工作,但会一直阅读和学习,因为好的头脑总是饥饿的。
最后,我们说一下Lisp. Lisp对具有这种思维的人具有强烈的亲和力。一旦理解了这一点,并看到正是这种思维为Lisp的文化做出了很大贡献,你就开始明白为什么Lisp和它的许多支持者一样,是一个才华横溢的失败者。它分享了才华横溢的双极思维( brilliant bipolar mind => BBM)的特殊优点和缺点。
为什么会这样?嗯,部分原因是与视野有关. 老乔治·布什曾经描述的“视野事物”实际上是BBM的优势之一。他可以看得很远;比实际上他的力量允许他所能到达的更远。他横溢的才华构想了需要巨大资源的雄心勃勃的项目,迅速着手, 然后中道崩猝。
这就是Lisp, Lisp作为工具,就像杠杆对手臂一样。它极大增强了你的力量,使你能够自由的驾驭自己的环境和计算机。如果说用C编写就像用镊子夹起小豆子去拼图, Lisp则就像用毛笔挥毫泼墨。
所以BBMs喜欢Lisp, Lisp的令人惊叹的原创性反映了BBM的创造力;所以我们有一长串与Lispers有关的创意——垃圾回收、列表处理、个人计算、GUI等。自然而然的, 他们认为Lisp是有声望的,是首屈一指的编程语言,而他们是第一批做这些事情的人, 他们和Lisp将一起走向辉煌.
但事实并非如此,原因不在语言中,而在社区本身,它不仅包含了BBM的优点,还包含了缺点。
其中之一就是无法把事情做到彻底。 “扔掉的项目”这个词绝对是为BBM量身定做的,它来自Lisp社区。Lisp允许你非常轻松地扔掉东西,很容易把这当作理所当然。10年前,当我在寻找我的Lisp的GUI时(那时Garnet刚刚消失),我看到了这一点。没问题,有9个不同的选择。问题是,9个中没有一个文档完善,也没有一个是没有错误的。基本上,每个人都实现了自己的解决方案,对他来说效果很好,所以一切都好。这是BBM的态度: "在我这儿很好用啊!!",很遗憾, 成功失败皆在于此.
相比之下,C/C++的方法截然不同。用镊子做任何事情都很难呀,所以做的任何重要的事情都将是一项真正的成就, 要记录, 分享, 值得大书特书. 项目上也总需要更多的人, 更多的协作, 更高的社交能力.
所有这些,从雇主的角度来看,是有吸引力的。与一个只能被另一个BBM(如果你能找到一个)替换的BBM黑客编程Lisp相比,10个人进行沟通、适当记录事物并合作是更好的选择。
现在我注意到的BBM的另一个方面是他对伪饰的敏感性。用普通美国话说,他闻到屁话就知道。我们大多数人也都这样。但BBM比其他人的容忍度要低得多。他经常能看到事物现状的荒谬,并具有足够的智力来看到事物应该是什么样子。他不像普通士兵那样盲从,他是不愿妥协的。
Lisp机器就是这种愿景的产物。正如Gabriel曾经说过的那样,这是正确的事情。可惜实际上不是。拒绝与市场妥协,并选择和C分道扬镳的平台,最终被证明是一个致命的错误。
这让我想到了BBM的最后一个特点。所有那些能量和智力的另一面——在低迷时期的悲伤、忧郁和自我的丧失。如果你阅读了许多讨论Lisp的帖子(包括comp.lang.lisp中名为“Common Lisp Sucks”的一篇),你会看到它大书特书。多年资深的程序员们,明显的能力和才华都会陷入忧郁的发作中。智力被内向地用于哀悼他们最喜欢的编程语言的不足。问题是可以解决的(天哪,Qi就是证明),但当你感到沮丧时,一切似乎都无法解决。Lisp注定失败,我们都将下地狱。
实际上,一个比其他任何东西更能说明这一点的论文是经典的《Lisp:好消息,坏消息,如何大获全胜》。如果你读了那篇论文,你会感受到BBM的本质。它是独一无二的,因为Gabriel同时展示了两个方面。积极的一面,对Lisp的智力自豪和信念都在那里。但那里也有消沉的“但一切都是虚无”的方面。这包含在“差的更好”的信息中。
总结下,我到底想表达什么呢,有两个问题即Lisp思维方式的问题和Lisp的问题。Lisp思维方式的问题是BBM特有的思维方式的问题。
至于Lisp的问题?答案是为编程它的头脑量身定做的, 这是Lisp之禅.
Lisp无关对错, 因为Lisp就像生活一样,关键在于你把它变成什么.