下午一不小心去了一趟国图,一不小心参观了一下国图正在展出的甲骨文。做几个小笔记。
给自己扫扫盲
“契”我倒是听说过。之前翻看《国史大纲》,其中曾经援引《尚书·尧典》提到“虞廷九官,…,契司徒”。江湖传言契的封地在商,其也就是商人的祖先。“重光”这个词我却是完全不知所云;回来搜索了一下,找到了这样一条解释:“光复,再次见到光明”。
Record life
下午一不小心去了一趟国图,一不小心参观了一下国图正在展出的甲骨文。做几个小笔记。
给自己扫扫盲
“契”我倒是听说过。之前翻看《国史大纲》,其中曾经援引《尚书·尧典》提到“虞廷九官,…,契司徒”。江湖传言契的封地在商,其也就是商人的祖先。“重光”这个词我却是完全不知所云;回来搜索了一下,找到了这样一条解释:“光复,再次见到光明”。
论文提交了。原地满血满状态复活。
论文是码出来的
漫漫码文路,实在不能说是一点收获也没有:好歹我也成功地从一个Word菜鸟进化成了一位可以照着模板设置章节、生成目录的WPS “Master”。当然,身为一位WPS “Master”,这一路走来自然也免不了要被诸位LaTeX、Word大仙儿们鄙视一通 (腹黑地AT一下某位姐以及另外两位哥),回顾起来颇有点“破帽遮颜过闹市”的感觉。也罢,好歹算是踉踉跄跄地走到终点了。
人之于世,感情纷杂,曰喜、怒、哀、乐。哀之极致,谓“哀莫大于心死”。
11号中午,在北京工作的表哥打来电话,跟我说外婆身体不是很好,问我要不要一起回家去探望一下。我回答说,我已经订好了16号上午的车票。12号下午15时36分,收到了表哥从家里发来的一条短信。短信上说,“你姥娘走了”。一遍又一遍“对方已关机”的提醒逐渐熄灭了我最后一丝的幻想、也逐渐模糊了我的双眼;我对自己说,我想要记住这两个日子。
13号,跪在外婆的灵前,心情也终于降到了冰点。那位唯一会唤自己作“粒儿”的老人家累了。而陪老人家到最后的人里,毕竟还是没有“粒儿”这个人。
好吧,我承认我食言了。
故事的起源是下午收邮件时看到的这条评论。每个人都有发表自己看法的权利,所以对评论本身不做表态。
一直在用的都是SBCL,Meta-dot (M-.) 自然是没有问题的。在Clisp + SLIME下用 Meta-dot 试了一下之前写的这个小程序中的matrix-modules函数,还真的有问题:No source information available for: (SYSTEM::DEFUN/DEFMACRO #P”/home/$USER/.cache/common-lisp/clisp-$VER-$ARCH/PATH/TO/cl-qrencode/src/qr-spec.fas” 226 233)。
当然,后来我才知道,所谓“抽象代数” (Abstract algebra),另外一个名称是“近世代数” (Modern algebra)。身边就有好几本近世代数,白花了三十二大洋。Orz。。。
看到有童鞋问了这样一个问题: 为什么Lisp中(reduce #’+ ())的返回值是0,而(reduce #’* ())的返回值是1。且让我再来做一次“语言律师”吧: 如果不带参数调用+或*函数,那么这两个函数都会返回相应运算的幺元,或称单位元 (Identity)。
之前用到里德-所罗门编码,浏览了一下维基百科,被各种概念搞得满头雾水。不得已买了本抽象代数粗略学习了一下,不禁感慨,数学果然还是王道啊。
当然,今晚熬夜的初衷是为了赶项目进度;并且,我要声明,四点之前我的确是在做项目相关的工作,LOL。
等了这么久,终于到了尘埃落定的时候,虽然我连说一句“Whatever”的兴致都没有了。不过,确实是时候换种生活方式了。作为这种转换的序幕,我决定写点东西总结 & 展望一下。
总结起来说,研究生三年的收益 (将会[1]) 是远远大于成本的;并且,需要特别注明的是,这里的成本指的是经济成本,而不只是传统意义上的会计成本。所以“回首往事”,还是很有一些东西值得记录一下的。要说的东西多且杂,且由诸位看官自行选择了。
事实上,因为有一些优先级更高的事情要做,已经好久没有碰SBCL源代码了。Nikodemus Siivola大神新近发表了一篇”How To Fix A Compiler Bug“,虽然总体感觉含金量不是特别高,不过,难得大神也会现身说法,还是翻译一下吧。大神的许可协议是BY-2.5,翻译起来完全没有心理压力,LOL。
一直以来,总有人请求我就SBCL的开发写一点简介或者给出一些示例。
让我们来尝试修复lp#738464这个bug。这个bug来源于如下所示的代码:
动态规划、贪婪算法
动态规划和贪婪算法是解决最优化问题的两种主要的方法。两种方法有一些相似之处。
《算法导论》中对动态规划的描述大致如下: 动态规划算法不同于分治法。后者是指将问题划分成一些独立的子问题,递归地求解各子问题,然后合并子问题的解而得到原问题的解。动态规划中各子问题可能会包含公共的子子问题,对这种情况,动态规划算法对每个子子问题只求解一次,将其结果保存在一张表中。动态规划算法的设计可以分为四个步骤: (1)描述最优解的结构 (2)递归定义最优解的值 (3)按自底向上的方式计算最优解的值 (4)由计算出的结果构造一个最优解。