Common Lisp学习笔记(0):从SLIME开始

按:本文是我在阅读Peter Seibel所著的Common Lisp教程Practical Common Lisp(免费在线阅读地址:http://gigamonkeys.com/book/)的学习笔记。这篇文章的主要内容包括Common Lisp的介绍以及如何搭建Common Lisp编程环境(SBCL + Emacs + SLIME)两部分。因为本文并不怎么涉及Common Lisp的具体知识,所以编号为0。

目录

Continue reading

打医生和打人

今天看到校内上一篇日志名叫《[转】如果医生护士全被打死,医院全倒闭,你们要看病要抢救时再去哈哈大笑吧!—-同意的请转帖》(原文标 题一字未改)。看完以后顿时心里一寒,我擦,这标题是要建立全国医生护士统一战线消灭其他阶级吗?前几天看到一个新闻说医生被打,我没怎么注意,转眼间怎 么就成了好像是医生阶级血泪控诉病人阶级对他们的剥削一般。

“医生被打”这件事本来不是一件正确的事情。但是我很奇怪,难道这件事情错误的地方不是“打人”吗?为什么大家所讨论的错误所在好像是“打医生”? 难道同样是人,这个人能不能打还要看他是什么职业?“如果医生护士全部被打死,医院全倒闭”,啊,这样不行!所以我们不能打医生。这是什么逻辑?难道病人 可以全部被打死?律师可以全部被打死?程序员就可以全部被打死?为什么我觉得忽略了什么基本的问题——譬如说,为什么人可以被打死?

多情码农无情码(2)

(本故事纯属虚构,如有雷同纯属巧合)

第三章 龙啸云

寒冷是个可疑的朋友。刚刚和寻欢一起踏出他的庄园,走在夕阳下的一片草丛上时,我还暗自庆幸寒冷为我带来了些清醒。但是很快,冷风如刀,一刀又一刀 划在我迎风的脸上,一刀又一刀地夺回了它曾为我带来的那些理智。我不得不把全身一半的精力放在走路上,然后拿另一半来忘却刀锋划过面颊的痛苦。

“今天这样的温度,恐怕空气都要凝固了吧。”当我提出要上山拜谒寻欢的父亲与大哥的坟墓的时候,寻欢这样评论。他还开玩笑地说:“这样的天气上山, 我想我可以想象我的老爸和大哥在奈何桥头看见我们俩的情形。‘寻欢,你怎么也死了?还是冻死的?难道是2012吗?’‘哦,不,老爸,大哥,我只是来看望 下你们。来,我给你们介绍下,旁边这位是我的结拜大哥。’”

但无论他怎么说,我还是坚持要在这一天前去拜谒。在我看来,寒冷的朔风与颠簸的山路更能帮助我表达心中的敬意。当然,坐在沙发上、端着热咖啡、听着 古典音乐谈受苦是一回事,屁股离开沙发走向寒冷的国度却是另一回事。此时的我正一边走着一边在内心里咒骂着当初的我为什么要这样自讨苦吃,但无论如何我可 不愿意现在告诉李寻欢:“天气真的好冷啊,我们还是改天吧。”

幸好寻欢终于停了下来,而我也不禁感激上帝,至少他给这条道路都安排了一个终点。我还以为他会火上浇油地送给我一个栈溢出或者死循环。不过话说回来这时候的我还真希望能有人冲我来个真的“火上浇油”。

“我们到了。”寻欢的宣判把我从迷乱的意识里拉回。“一门七进士,父子三探花”,这样一副对联贴在墓园的门口,似乎在向世界宣告,也许上帝可以夺走 他们的生命,却别想夺走他们的骄傲。每个坟墓的样式还能怎样,一抔土,一方碑,大致无二,但站在这片墓园中,你不可能不从心里生出一种敬意来,尽管那些人 只能躺着,而你却可以站着。

但是显然我这位兄弟对这一景观的理解大不相同。“我早就想把门口的对联给换掉了。什么‘一门七进士,父子三探花’,贴在这里就好像我们李家已经灭绝了似的。可惜我老爸是从来听不进别人的意见的。”寻欢这样评价。

“我大哥死后,老爸总是半夜跑到这座山上来喝酒。”李寻欢带着我走到他父亲的坟墓旁。我在墓前深深地鞠了几躬,趁机活动了下几乎冻僵的身子骨。而李 寻欢则一边直直地看着与墓碑毫不着边的远方,一边这样对我说,“这件事是诗音发现的,她告诉我,然后我就到山上去找他。他不肯走,也不肯说话,我就陪他喝 闷酒。我还记得那天喝的是先帝御赐的特贡茅台,老爸他珍藏了多年的,却在那一晚上被我们两人喝了个精光。喝到最后一杯,他终于对我说:‘你知道吗?人生最 痛苦的事情便是,即使你做出了每一个可能做出的正确选择,你也无法留住他的生命。’”

“‘他’就是你的哥哥,‘大李探花’,是吗?”我直起身子,有些艰难地转头看向李寻欢。

“没错。他也是我们家的第一位黑客。是他从如何打开电脑开始教我,教我C++,教我Python,教给了我几乎一切如今我引以为傲的东西。在十岁以前,我就已经拿到了三个国家级的程序设计大赛的一等奖。”说到这里,寻欢忽然低下头来,“而他却拿到了三张病危通知书。”

寻欢的哥哥“大李探花”自小体弱多病,后来英年早逝,这是让江湖中无数黑客都为之扼腕叹息的事情;更悲伤的是,没过多久,他和寻欢的父亲‘老李探 花’也因为伤心过度而去世。如今这一曾在江湖中如神话般存在的家族,只剩下一人,便是我身边的这位结义兄弟李寻欢——他也是黑客界中公认的李家最牛的一 人,在百晓生搜索引擎制作的黑客谱里排行第三名。谁会不把拥有这样一个兄弟当作一件荣幸的事情呢?于是我拍了拍他的肩膀,他也对我一笑,然后我们又一起乘 着寒风原路返回。

幸运的是返回的时候风向没有恶作剧般地发生变化,所以我终于可以轻松地看着李家的庄园在我的视网膜上渐渐变大。由于不再需要把一半的精力花在脸上, 我终于恢复了一些意识。我开始意识到早些时候我在李家的失态。哦,不,李家那些让geek们感到无比兴奋的近乎科幻世界的场景虽然让我有些恍入隔世的感 觉,却还不至于让我变得像进了大观园的刘姥姥;而是在看到她的时候——对了,寻欢叫她“诗音”,她的名字一定就是门上镌刻的那三个楷体小字“林诗音”—— 我竟变得像宋玉笔下的登徒子。

不,不能这样,我是李寻欢的大哥,也是在江湖中颇有名望的黑客,我可不是没见过女人的工科猥琐男。就这么看上一眼我竟然就呆掉了,我竟然就相信自己 爱上她了,天哪,我是有多么的愚蠢呢!而这个女人——林诗音,多么优雅的名字——一直住在李家的庄园里,更毋庸说她和寻欢有什么样的关系了,我又怎么可以 去有什么非分之想呢?想到这里,我觉得我已经清醒了过来。我觉得我应该为自己的理智感到骄傲。

但这些都是我们回到李家庄园,那个轻盈的身影再度闯入我的视野以前的事情。不到一秒钟的时间内,我忘记了我之前所持有的一切推理,它们在她的美丽面前根本不堪一击。不到一秒钟的时间内,我所有的理智再度臣服于她的石榴裙下。

Continue reading

X的理由

在大学里,几乎每门课的第一课都要先讲述一遍学习这门课的理由。这种理由往往都是学习这门课程对以后的XX之类的有什么样的帮助之类的,譬如为什么学习操作系统,为什么学习编译,为什么学习网络,当然全是对干软件这行有帮助;也有的学科甚至还能阐发出不少大义级别的东西,比如说北宋有个叫张载的,他认为读书的理由是“为天地立心,为生民立命,为往圣继绝学,为万世开太平”,这话说出来简直屌爆了(后来南宋有个叫乐雷发的家伙做了首《乌乌歌》,我猜张载如果能看到一定要气得活过来);我们大多数小时候估计也听过伟大的周总理说自己是“为中华之崛起而读书”的故事,听起来也是让人不由得无比崇拜。这些都是很有趣的事情;然而这些事中最有趣的部分却是,有多少人是真的为了这些理由而学习的这门课程?

让我再来举一个关于理由的例子。譬如说我的名字李垚,为什么要取“垚”字为名?我用过的说法有不少种。比如装X时候专用的大义凛然版——垚者,山高也。所谓高山仰止,又有山高人为峰,我父母为我取这样一个名字,无疑对我寄托了厚望。当然还有不那么大义的功利版——土生金,这个名字是为了祝福我生财有道。或者阴谋论版——我爸妈都是当教师的,他们深恶痛疾于当前中国社会汉学普及工作之不力,所以决定从我的名字上着手,使用一个生僻字,于是大多数教过我或者跟我一起学习过的老师、同学都从我这里学到了至少一个汉字,此乃一滴水穿石之长策。或者神秘论版——据说上交大的人有很多名垚的,但是名垚的人并不多,根据贝叶斯公式可以推算名垚的人容易上交大是自然法则,所以给我取名垚。或者科幻版——详见《垚言惑众·释名篇》。这些理由中有的我还真用过,比如装X专用的那个版本。但是我爸妈真的会为了这么些个理由给我取这么个名字吗?貌似不会,据他们解释取“垚”为名的原因仅仅是我妈姓“姚”。

常有人说“读史可以明智”。姑且先不论这句话是不是真命题,单说这个世界上有多少人会为了明智去读史的?或者有人说学习历史有利于弘扬中国传统文化,这就更玄乎了,试问世界上有几个读史的家伙是为了弘扬中国传统文化的?张载难道真是为了那四句无比抽象的目标去读书的吗?好吧我不能说真不是,但我实在怀疑。至于敬爱的周总理的故事,不妨还是认为我这人思想太肤浅,因为我总觉得如果“你为什么要读书”这个问题出自一个教小P孩读书的老师的话,“因为老师要我读书”这句话是最诚实的。

所以一个有趣的现象就是我们学习或者使用某样东西的理由往往是在学习和使用它们之后才编造出来的;而我们往往都不是因为这个理由学习或者使用这个东西的。也许最先学习某样东西的人总需要编造出来一些理由吸引不是学习这样东西的人,但一个值得思考的问题是,既然我们都不是因为这个理由而学习这样东西的,凭什么我们认为这个理由可以吸引别人呢?比如为什么学习软件工程,我可能会告诉你:“软件改变世界,而只有工程学才能创造出好的软件,你愿意追随我做一个程序员吗?啊哈,顺便提一些无关紧要的,我之所以学习软件工程这个专业是因为在志愿申请表里我没找到计算机科学。”

小时候我们玩过一种游戏,一个人问另一个你为什么要做A这件事情,你可能回答因为B;然后对方继续问那你为什么要B,你回答因为C……就这么一直持续下去。事实上如果并不是为了把对方逼疯或者取得胜利或者纯粹无聊,这个游戏应该是有结尾的。比如说:“你为什么从来不买洋葱?”“因为我不吃洋葱。”“为什么你不吃洋葱?”“因为我不喜欢吃洋葱。”到此为止,“喜欢”或者“不喜欢”,这个理由难道还不够吗?“为什么要学软件工程?”“因为软件工程可以学编程。”“为什么要学编程?”“因为我喜欢编程。”或者,“为什么要学历史?”“因为我喜欢历史。”

喜欢或者不喜欢,这就是一个很个人的因素,一般情况下这个理由就很合适了。当然,如果你想探讨人为什么会喜欢上一样东西,以及怎么让一个人对一样东西感兴趣,这个话题的水可能就比较深了,甚至比此时的夜色还深,所以我们还是到此为止吧——不过话说回来,这个理由又何尝不是我先想结束这篇文章,然后才想出来的结束这篇文章的理由呢?

多情码农无情码(1)

(本故事纯属虚构,如有雷同纯属巧合)

第一章 龙啸云

有人说,时间是这个世界的第四维。如果按照这个说法来看,时间只是一样永恒不变的事物,而我们在其中一个个流逝。我知道我前半生的二十多年岁月,就像是一场无目的的驾驶旅程;直到那一天。

因为在那一天,我看到了她。

那天是在李寻欢的庄园里,我和他一起踏过用电子墨水显示着欢迎和指引信息的珍珠屏幕铺成的地面,穿过一面又一面闪烁着或奇幻、或写实、或抽象、或黑 客风格的壁纸的玻璃墙壁,走过一个使用全息投影技术把全球各地的卫星发来的实时信息拼接在一起显示出来的地球仪。我以一个码农的身份感叹着这一切的美妙, 直到寻欢带我走进一扇门。

那扇门与其他的用玻璃屏幕做成的门都不大相同,因为上面用手工雕刻着“林诗音”三个楷体小字,字体清秀,婉雅,隐约间似乎能看到一些虞世南的风格。那扇门后面的世界,超越了我以前所经历的所有世界。

但是请原谅我在这里无法描写这个房间内的景色布局。这并不是因为那其中太美或者太丑,让我无法找到言语,而是因为事实上在我第一次进入这间房间的时 候,那些景色我全都没有看到——因为我看到了她。在我看到她的那一刻,似乎我的所有的脑细胞都用来处理、生成,并试图捕捉她的一姿一容了;除此以外的世界 的一切,都被忽略了,或者,即使没被忽略,也只是被用来装点的她的美丽而已。据说有科学研究表明,男性在看到美女后智商会下降,我相信就是这个道理。

所以在进入这个房间的那一刻,我看到的只是她,用一种让人词穷的优雅坐在一台电脑前面。她的手指轻轻地敲打着键盘,翩若惊鸿;她的长发慢慢随风抚过 她的肩膀,宛若游龙。我仿佛从来没有看见过女人一般贪婪地看着她。忽然间她停了下来,世界也仿佛在那一刹那静止了。然后,她的头轻轻划过一个美妙的弧线, 于是一双若月射寒江般清澈的眼睛,和两颊如春梅绽雪般素洁的脸庞出现在了我的眼前,她丹唇微启,霞映澄塘,一段如诗般朦胧的声音激活了我的双耳:“你回来 了。”

似乎李寻欢也回答了什么,但我没有听到,也许我听到了,但它在还没有被记忆的一刻就已经被遗忘了。然后我看见那个曼妙的身影忽然站了起来,她身上穿 着的白色长裙也随之飘舞,和背后的显示着一种月景的玻璃屏幕一起印在我的视网膜上,看来似流风回雪,转瞬间轻云蔽月。望之在侧,皎若太阳升朝霞;忽焉在 前,灼若芙蕖出渌波。我傻傻地站在那里,遗忘了一切表情,她却忽然巧笑倩兮:“我给你前几天写的验证码识别程序做了一个GUI,是用JavaScript 写的哦!”

虽然当时我的智商似乎已经下降为0,但我确信在那一瞬间我至少知道了两件事情:一,原来JavaScript不止可以用来做网页;二,我爱上了面前的这位少女。

Continue reading

我的大学(23):昨日之日不可留

许久未做《我的大学》文章,并不是因为这些时间我的大学无甚可记之处。我一直想为上学期的软件工程概论大作业写一篇文章,我还想为进入大学两年 以来(或许再加上高中的三年)的许多在编程上的滚打与感悟做一些沉思,此外还有许多连我自己都已经遗忘了的构思,可惜这些想法在我的草稿箱里存了许久,也 未能实现。有些想法太重,生命却又太轻。

短暂的假期稍纵即逝,而还在没心没肺地度日子的混蛋已经大三。当年我在烈阳下亲自迎来的小盆友如今也成了迎新的志愿者,于是又一批新面孔追着各种学 哥学姐询问各种白痴问题:“选数学分析还是高等数学好啊?”“学生会和团委哪个好啊?”“应该加入什么社团啊?”我也曾经在迎新的时候满怀各种兴奋与热 情。但终有一天大家都会发现,没有谁为谁选择一条道路,我们都在各自的道路上越走越远。

写这篇文章之前,刚刚写完许诺果壳的一篇稿子,然后发现时间已经跨越过零点。“弃我去者,昨日之日不可留”。李白的此句堪称妙笔,他的下一句同理。

死理性派教你做微软面试题

(本文于2011年8月29日首发于果壳网死理性派主题站

经常能在网上看到各种不知真假,却被转烂了的“超变态但很经典的微软面试题”。那微软这样的大公司,到底有多喜欢“蹂躏”面试者的智商呢?本文就从一套广为流传的的“10个最著名微软面试题”中选取了几个最经典的,来和它们较量较量。

闲话少叙,解题吧。

Continue reading

救命稻草

我常懒散地闲逛在社交网络上,往往见到这样的日志或视频或其他类型的分享,标题类似“XXX也愤怒了”。譬如我们常常为主持人对一些社会现象的痛骂而称赞;譬如在动车惨案的时候我们看到白岩松也愤怒了,我们感动鼓舞;譬如今天的新闻据说中途被掐,主持人表示很不满,我们也为她叫绝。然而事实上我们却是在尽一切可能夸大我们愿意相信的东西,好像黑暗世界居住的人民为一丁点光明的可能而呐喊,又好像一个溺于水中的人拼命去抓住一只救命稻草。

长平曾在他的一篇文章中写十多年前在朱镕基答记者问时的记忆与如今:

那时候执政党刚刚提出“依法治国”的口号。作为媒体人,我和诸多法学家、维权律师及部分法官一样,对此治国理念寄予厚望,大力鼓吹。我以为,市场经济观念已经解决了经济领域的方向问题,法治观念也将奠定社会生活和上层建筑的基础。朱镕基总理并不是这两个观念的最佳代言人,但是我们仍然从他激情雄辩的话语中寻找支持,然后把自己认可的言辞夸张放大,而对自己不认可的东西故意忽略。

今天的媒体人也是这样,他们聆听总理的答问,努力从中发掘正面的信息,然后做成大标题或者小标题。比如,本次记者会结束之后,各家媒体就提炼出这些标题:“信心像太阳一样充满光明和希望”,“当前最大危险是腐败”,“解决怨气须让人民监督政府”,“政改与经济改革应协调推进”, “考核政绩要看公平正义和生活改善”,等等。

但是在“但是”以前的话语往往都是无用的。长平的文章中接下来写道:

现在各家媒体派去跑“两会”的记者比以前更多了,但是我不认为相信正面信息的人数也在增加,而是恰恰相反。一方面,由于网络的发展,信息渠道多元化,人们不再容易受传统媒体蛊惑。另一方面,某些方面的现实比以前更加糟糕。比如,温总理在去年的“两会”上留下名言:“不仅要让中国人民生活得幸福,而且要有尊严”,“公平正义比太阳还要光辉”。这两句话被媒体放大之后,感动了无数中国人。然而,在此之后,房屋遭遇野蛮强拆而自焚抗议的人更多了,不堪生活重负而跳楼自杀的人更多了,甚至发生了接二连三的屠杀幼童事件,并有知识分子因言获罪而致举世震惊。所有这些事件中,温总理都一言未发。

我是一个赞赏依法治国和民主制度的人,但是在动车惨案之后,我却真心地希望温总理能够像古时的专制君王一般,对着那些罔顾人命的混蛋们怒喝一声:“拉出去斩首示众。”像《康熙王朝》里的那个让人看来无比痛快的经典片段里的康熙大帝一样,指着“正大光明”四个字,对群臣说:“给朕看半个时辰。”

但我等来的并非如此。事实上我发现我自己也知道事实绝非如此。我只是拼命地抓住幻觉当作希望,但其实我的内心深处又何尝不知道,我抓起的是一根救命稻草。阅读希拉里的发言,探寻“何为天下第一奇毒”,或是寻找79,69,59中的数字规律,这些该说是乐观,还是悲观?

多少天以前,许多人还在高呼“你怎样,中国就是怎样”,一转眼之间,他们却开始为婚姻法的新解释而改变自己的择偶观。一面嘲笑一个小学生的官腔,一面挤破头皮往体制里去;感动于爱情小说中的美好,却愿意为了一份户口而出卖自己的终生;鄙视拜金主义的盛行,却找不到任何金钱以外信仰;痛恨资本家的剥削和政治家的腐败,却为牺牲个体的举国体制带来的“面子”而感到自豪;强颜欢笑、逢场作戏,躲在人群中发泄自己不知道该流向何处的怨气。这是他们的矛盾,又何尝不是我的矛盾;我们都在这样的一片矛盾之海里挣扎。

一位叫萧瀚的老师曾在一篇文章中这样描述自己:

哦,不是悲观,是绝望,我不会把幻觉当希望。没发现吗?绝望的妙用在于你没什么可失望的,因为绝望了,就没什么东西能失去的。

“没什么东西能失去的”,呼应的却是二十多年前的一首《一无所有》。可笑的是,二十年突飞猛进的发展过后,我们何尝不仍是一无所有

纸上谈兵:萨尔浒之战以少胜多的原理

(本文于2011年8月16日首发于果壳网死理性派主题站
小时候我们都学过纸上谈兵这个词。其实历史上纸上谈兵的并非只有赵括一人,还有数学家。1914年一战期间,英国工程师弗雷德里克•兰彻斯特(我敢打赌这 家伙是一个死理性派)异想天开地用数学解析战争,创立了著名的兰彻斯特战斗模型。通过它,我们能很容易地发现以少胜多背后的数学故事,比如经典的萨尔浒之 战。
但在故事开始前,有必要说明的是,这只是 一个简化的数学模型 ,忽略了一些难以量化的因素,譬如天时、地利、人和以及政治因素,而它们对战争也有举足轻重的影响。事实上,从科学角度讲,研究结果仅对研究的模型有效。不过我们都知道,研究总是从基础模型开始的。

用兰彻斯特模型解析战争

这个著名的兰彻斯特战斗模型,实际上是一个讨论参战方战斗力和时间关系的模型,可以用来宏观地描述参战双方的战斗力损耗过程。这样说或许有些抽象,让我们 先思考一个问题,现在有两支军队 A 军和 B 军。A 军以精锐著称,但兵力只有 B 军的一半,B 军人多势众,但单兵作战能力平均只有A军士兵的一半, 除此之外它们其他方面全部是等同的。如果这两支军队交战,一支军队消灭另一支军队即为胜利,你认为谁将是这场战斗的赢家?读者们不妨先选定一个答案( A 胜、B 胜或者玉石俱焚),然后再来看看兰彻斯特战斗模型怎么说。

Continue reading

乱谈词语

几天前我在上海的虹桥火车站等候动车的时候,听到一则有关火车晚点的广播,广播的末尾大约是这样的:“在此谨代表XXX,XXX及XXX全体员工向各位旅客致以诚挚的歉意。”

我不知道有多少人在听到这则广播的时候能够体会到其中“诚挚的歉意”,也许那个在我看来并没有多少感情色彩的声音,也能够允许我去怀疑这则广播的背后究竟有多少“诚挚的歉意”。彼时彼刻,似乎这些词语短暂地失去了它所指涉的意义,言者无意,听者亦无心。在这个语言的两端——它的发言者和接收者两处,这些词语皆成了一种无意义的存在。

词语失去原有意义的语言场合不止此一处。早在两千多年前,一个叫赵高的家伙就曾做过一个后世称为“指鹿为马”的实验。在那个著名实验中,赵高成功混淆了“鹿”和“马”两个词语原有的含义,而在那个实验背后的意义却是,强权战胜了真相。

这个实验也许能够帮助我们理解一句奥利弗·霍尔姆斯关于英国伊丽莎白朝的评论,这句评论这样说:“语言腐坏了。臭气还熏染了英国的良心。”

这个实验也许也能够帮助我们理解乔治·奥威尔在他的小说《1984》中所论述的:“自由就是2+2=4的自由。”

古龙的《陆小凤传奇·金鹏王朝》里有这么一段对话:

陆小凤道:“无论是他死也好,是我死也好,你反正都会很愉快的。”

上官飞燕道:“凭良心讲,你们两个就算全死了,我也不会伤心。”

陆小凤道:“想不到你居然还有良心!”

这里的“良心”一词用得十分有趣。似是偷换概念,又似是一语双关,这是古龙小说里心机深沉的人物言谈常具有的特点。

“政治上的两面三刀,自然是产生于语言的含义双关。”这也是我们前文中提到的奥利弗·霍尔姆斯的话语,这句话的正前方一句正是:“语言腐坏了。臭气还熏染了英国的良心。”

也许霍尔姆斯在说这句话的时候,他还是抱有警醒世人的希望的。所以他用了“良心”这个词语,正是因为他认为这个词语还没有腐坏,至少在这个词语上,语言和实意的联系还没有被消灭。

谢天谢地,他批评的对象不是古龙笔下的上官飞燕。

Continue reading