
计算机科学
g9yuayon
姓名:g9yuayon
前世:夜郎国厚脸皮神棍
魅力指数:0
名气:1
宠物:一只从来不对生人叫的看门狗
展开
-
祥林嫂精神恍惚痛苦呼唤之关于Suffix Tree
优快云的大大们啊,行行好啊。修复这坨不能自动上传图片的错误啊。好像已经三个月了啊。图多的时候发文章真地很痛苦啊。Orz Orz Orz在pongba的讨论组上看到一道Amazon的面试题:找出给定字符串里的最长回文。例子:输入XMADAMYX。则输出MADAM。这道题的流行解法是用后缀树(Suffix Tree)。这坨数据结构最酷的地方是用它能高效解决一大票复杂的字符串编程问题:原创 2008-06-21 19:02:00 · 160517 阅读 · 14 评论 -
计算机科学经典论文
从Jao的Programming Musing 看到的:Babar Kazar 整理了一堆经典论文。Jao强烈建议每个严肃的程序员读每篇论文,说它们都或多或少有意思。粗粗扫了一下,很多论文都没读过。挑了些俺多少知道一点的介绍。· An axiomatic basis for computer programming C. A. R. HoareTony Hoare名下的公理化语义(Axioma原创 2007-02-23 04:25:00 · 44443 阅读 · 7 评论 -
lamdba算子4:布尔值和选择
Lambda算子里的布尔值和选择原文在这里。既然Lambda算子里有了数的概念,我们想进行任意的计算就只需要两件东西了:怎么表示选择,和怎么表达重复操作。我们先聊聊怎么表示布尔值(也就是非真即假的二元集合)和选择,然后再讨论重复和递归(友情预告:人见人爱的Y Combinator终于可以出场了)。 我们一般把选择表示为if/then/else的表达式,和大多数编程语言的选择语句翻译 2006-08-27 08:55:00 · 8141 阅读 · 4 评论 -
lambda算子3:阿隆佐.丘齐(Alonzo Church)的天才
lambda算子3阿隆佐.丘齐(Alonzo Church)的天才:Lambda算子里的数前面建立了lambda运算的基本规则,就可以用lambda算子做点有意思的东西了。开始前为方便计,我们先来点语法糖花差花差,用来命名函数。这些语法糖可以让复杂的公式好写一点。我们用"let" 来引入一个“全局”函数(也就是说,我们用这个函数时,不用在每个表达式里定义一次):let squer =翻译 2006-08-14 14:47:00 · 7506 阅读 · 3 评论 -
lambda算子3:阿隆佐.丘齐(Alonzo Church)的天才
lambda算子3阿隆佐.丘齐(Alonzo Church)的天才:Lambda算子里的数前面建立了lambda运算的基本规则,就可以用lambda算子做点有意思的东西了。开始前为方便计,我们先来点语法糖花差花差,用来命名函数。这些语法糖可以让复杂的公式好写一点。我们用"let" 来引入一个“全局”函数(也就是说,我们用这个函数时,不用在每个表达式里定义一次):let squer =翻译 2006-08-14 14:45:00 · 16753 阅读 · 6 评论 -
lambda算子 1.b
上上周就快写完这篇时,IE突然当掉,写的东西烟消云散。俺也元气大伤。这次吸取教训,不用优快云的在线工具写了。这样的坏处是把文章拷贝到优快云时,格式难免出错,还得手工调整一下。优快云什么时候可以实现confluence的在线备份功能呢?还是继续八卦lambda:自由 vs 有界标识符标识符和变量其实是一个意思。我记得国内教材里很少用标识符这个说法。不过既然原作者用这个说法,我就跟着用了转载 2006-06-12 11:14:00 · 14295 阅读 · 6 评论 -
号外,号外 -几乎所有的binary search和mergesort都有错
这是Joshua Bloch(Effective Java的作者)在google blog上发的帖子。在说这个帖子之前,不得不强力重复Joshua Bloch的推荐:如果你还没有读过Programming Pearls (中文版叫《编程珠玑》)这本书,现在就去读吧。如果你只读了一遍,现在就去再读一遍吧。还是说回Joshua的文章。当初Programming Pearls的作者Jon Bentl转载 2006-06-04 09:11:00 · 9222 阅读 · 3 评论 -
lambda算子简介1.a
接着前两天的转载继续写。上次说到lambda算子的函数只接受一个参数。那怎么处理多个参数呢?如果只有一个参数,那岂不是连加法都不能实现?这当然难不倒像丘齐这样的天才。于是, lo and behold, 一个我们至今在编程里常用的技巧粉墨登场:Currying 据说Currying翻译为局部套用函数,也不知真假。喜欢吃印度美食的老大们不要激动。Currying和咖喱没有半点关系。这个技巧翻译 2006-05-29 08:30:00 · 19362 阅读 · 4 评论 -
博客推荐:good math, bad math之Lambda算子简介
Good math,bad math是我最近发现的一个博客。作者Mark Chu-Carroll写的一系列关于计算机科学理论的文章深入浅出,通俗易懂,属于茶余饭后绝佳的消遣读物。俺一直想写点介绍lambda caculus的小文章,但看了他的“My Fravorite Calculus: Lambda”后,就打消了这个念头。有这么好的文章,转贴就行了,自己就不用再写不入流的文章。今天先转介绍lam转载 2006-05-22 06:54:00 · 19566 阅读 · 2 评论 -
Lambda算子5b:How of Y
Lambda算子5b:How of Y 其实是这篇文章的意译。有些东西省了。添了点私货。就有了下面的帖子。虽然Y相当神奇。对它的推导也不完全是天外飞仙般无迹可寻。基本上我们为了解决让没有名字的函数能自我引用,一步一步抽象出了Y。所以知道Y的推导过程对我们程序员还是很有意义的:毕竟编程的过程也是抽象的过程。看看当年的老大们怎么从纷繁的表象里抽象出一般规律,对我们日后的思考应该大有好处。为了原创 2006-09-24 14:28:00 · 16388 阅读 · 9 评论 -
新的免费CS理论书籍
普林斯顿两个教授把一本关于计算复杂性理论的教材初稿放到网上了。很多人学习复杂度理论时用伯克力牛人Papadimitriou的那本经典教材。P老大那本教材写于1993年。13年过去,复杂性理论的进展还是非常显著的。显著到我这个外行都知道一些。从目录看。这本新书和P老大的经典覆盖的基础部分都差不多,但新书的讨论了一些相对较新的东西。比如说代数复杂度,伪随机,密码学方面的进展,交互式证明,通讯复杂度,下原创 2006-09-18 07:59:00 · 9208 阅读 · 0 评论 -
昨天是歌德尔的百年诞辰
最近忙,居然忘了歌德尔的百年诞辰。这里是关于歌德尔诞辰的文章。1931年,歌德尔向世人宣告歌德尔不完备定理,希尔伯特第二猜想告破,人们对数学的看法从此改变。原创 2006-04-30 11:18:00 · 3367 阅读 · 0 评论 -
Andrew Tanenbaum关于计算机科学教学的10大准则
今天看到Andrew Tanenbaum (minix的作者。读过CS的人应该不陌生吧)。在SIGCSE的计算机科学教育杰出贡献奖(Outstanding Constributions of Computer Science Education)上发言的文字材料。A.T在演说里提出十大计算机科学教育的十大准则: 目光长远 (Think long-term) 强调原则,而非事原创 2006-01-22 13:08:00 · 10970 阅读 · 12 评论 -
与Scheme共舞
发表在《程序员》2007年7月刊上。不log上写帖子不用考虑版面限制,所以这里的帖子比发表的啰嗦点。赵健平编辑,Jacky,和刘未鹏都给了我很多帮助,在这里一并谢了。免费的Scheme实现很多。我用的是PLT Scheme,可以到这里下载。PLT Scheme的IDE(Dr. Scheme)支持Emacs的键盘绑定,用emacs的老大们应该喜欢。Dr.Scheme内置中文支持:下面是原创 2007-07-03 13:49:00 · 52882 阅读 · 18 评论 -
排列组合算法1:生成全部有序列b
对推导不感兴趣的老大们可以通过搜索”def”直接跳到代码实现部分。不过有闲心还是瞧瞧推导过程的好。我们可以看见好的算法并非无迹可寻,完全依赖某位大牛的灵光闪现,而是通过观察、归纳、试验、迭代改进,逐步雕琢而成。另外,我们时常感叹,要是有时间学习算法就好了。要是有时间仔细读读TAOCP就好了。其实呢,读TAOCP也不是抢鸡蛋的大事。想读了,就备好纸笔,调出趁手的编辑器,打开书,翻到自己感兴趣的章节。原创 2007-04-10 04:16:00 · 10572 阅读 · 1 评论 -
八卦一下模型验证(三)
优快云的大大们啊,求求你们了啊。修复这坨不能自动上传图片的错误啊。好像已经三个月了啊。图多的时候发文章真地很痛苦啊。Orz Orz Orz准备八卦Edmund等人算法时才想起,人1986年成名作是讨论用CTL (Computational Tree Logic) 作规范语言的模型验证算法,而第一篇八卦失心疯只介绍了LTL。虽说也有算法对付Kripke结构上的LTL模型验证,原创 2008-06-14 15:58:00 · 127539 阅读 · 8 评论 -
采访Joe Armstrong的podcast
早上上班,听Software Engineering Radio对Joe Armstrong的访谈。Software Engineering Radio办得真不错。请来业界风云人物娱乐大众。访谈前主持人做了功课,提的问题颇为有趣,引得被采访着侃侃而谈。上期对Galen Hunt的访谈也挺精彩,把Singularity OS吹得比Singularity还有卖点。Joe在谈到并发编程对程序员冲击时原创 2008-03-21 02:03:00 · 23440 阅读 · 6 评论 -
八卦一下模型检验(二)
接着八卦前先回答老大们直指灵魂的问题。不就是系统状态遍历的问题么?干嘛非得用什么时序逻辑、模型一类的形式化手段啊?搞得比陈凯歌还深沉。做人不能这么无耻不是?找个真正的程序员,放出手里的蝴蝶不就搞定了?嗯,很多程序的确可以靠程序达人强大的自觉和天才的排错能力搞定。问题是,模型检验的对象是高并发复杂系统(比如说1020个状态),目标是绝对可靠地查出系统的错误,既不错杀三千,也不放过一个。这些系原创 2008-03-18 10:34:00 · 18463 阅读 · 13 评论 -
八卦一下模型验证(一)
先穿渔网袜从珠穆朗玛峰上滚下来哭求优快云的大大们看一下优快云博客插件不能自动上传图片和排版的问题。人肉上传图片和排版真地很痛苦呐! 2007图灵奖和模型检验不知道长达半年的疯狂加班是否损害了自己的心理健康。回顾过去几个月,似乎除了工作嘛都没干。人仿佛颓了,觉得时光了无意义地飞逝,过去半年的泰半记忆好像盛夏阳光里的冰块,蒸发得不剩一丝水汽。幸好不是全无亮点,比如看到好原创 2008-03-03 11:00:00 · 20319 阅读 · 9 评论 -
编程范式的示意图
从LtU上看到的。这张图根据CTM的思路,勾画了不同编程范式的特性和联系。方框代表某种编程范式。箭头边的黑体字表示箭头上方编程范式的代表性语言。以“+”为前缀的斜体小字是一种编程范式过渡到另一种编程范式需要的语言特性。CTM从阳春版的核心语言(kernel language)开始,逐步解释语言不足之处,并由此加入新的语言特性,最后就得到了几乎完整的语言—Oz。这就是为什么Oz出现在多条分支的转载 2007-08-20 23:10:00 · 8227 阅读 · 3 评论 -
Lisp for Small Prices
通过programming reddit,从这里看到的。Amazon.ca果然发飙了,软皮本才3.95加元。对比一下amazon.com上同样的书,50美元。怪不得冲到amazon.ca排行榜的第二。顺便扫了一眼排行榜,看到那本龌龊的The Secret居然排名第7,和amazon.com上一样。看来在心想事成不劳而获这坨美梦面前,南北同心。这本The Secret一度在amazon.com原创 2007-08-09 07:55:00 · 7711 阅读 · 5 评论 -
贝叶斯理论
为什么大家一放假(还不是我放), 俺就跟打了鸡血一样兴奋,拼命灌水嗫?Coding Horror(这哥们儿惊人高产,估计每天直接向血管注射Espresso)的新帖子科普了一把贝叶斯理论和Markov链。这两年机器学习的成功应用越来越多,人们对它的依赖也越来越重。毕竟现在信息太多,而我们真正需要的是知识。让程序帮我们发现知识自然成为应用热点。一微软高官跳槽到Google后说,相比微软,Google在原创 2007-05-02 01:13:00 · 10305 阅读 · 11 评论 -
那就推荐一本消遣书吧
上学最宝贵的收获之一是结交学识过人的朋友。自己闷头学得山穷水尽时,高手轻轻一句点拨,眼前便峰回路转,柳暗花明。每次上完课,有幸和朋友小聚,请教弱智问题,听朋友妙语解惑,实在是难得的人生乐事。读The Little Schemer,也有同样的感受。读The Little Schemer的过程,就是被良师引导的过程。 用作者的话说,The Little Schemer是一本教人理解计算本质的书原创 2007-07-27 15:01:00 · 18525 阅读 · 8 评论 -
关于C++ 0x 里垃圾收集器的讲座
好像最近C++标准地下工会在公司附近开会,所以我们上班时偶尔可以看到工会成员矫健的身影。我们也近水楼台,得以听到关于C++0x进展的一些科普报告。上次Bjarne Stroustrup做了关于泛型编程的讲座后,Symantec实验室的Michael Spertus也做了一个关于C++ 0x里垃圾收集的讲座。Michael Spertus当年写出了IBM PC上最早的C编译器,也是C++ 0x里垃圾原创 2007-07-23 11:56:00 · 13198 阅读 · 9 评论 -
翠花儿,上代码
上篇帖子里聊到Sussman认为构造出健壮软件需要我们的系统支持continuation, 回溯,和生成-测试的方法。生成-测试最直观简单的方式是为系统提供多项结果。系统一个一个地测试这些结果,并接受符合要求的一个。Sussman举了一个例子:平方根函数通常返回正根,而抛弃那个负根。那按照生成-测试的方法,一个平方根函数应该将负根和正根一起返回,然后由系统决定到底哪个根更好。后来他进一步提到(第2原创 2007-04-23 14:00:00 · 8983 阅读 · 9 评论 -
做习题的境界
就是把习题当成项目来做。十年寒窗。半世煎熬。习题做完,世界随之改变。例子:A = B这本200来页的书(免费下载。作者是好心银啊),解决了《编程的艺术》上一道难度系数为50的习题:自动化多维几何级数的求和。如果有封闭解,则自动找到该解。不然自动证明无解。这好比20年前Wolfman的Mathematica搞定自动积分,号称机器不能积的,人肉也不用想。又好比优化编译器生成人肉编译器们望尘莫及的全局优原创 2007-07-14 00:52:00 · 13002 阅读 · 3 评论 -
牛人的好文章
什么是牛人灌水的榜样?看看这篇Peter Norvig在飞机上写的灌水文章就知道了。20行Python代码,直观应用贝叶斯定理,一个阳春版的Google拼写纠错就出来了。80%到90%的准确率。当然,当然,单词的模型也是一个大头,不过这不影响这篇文章的价值。作者反复强调建立对问题的直观理解也值得注意。都是妈生的,银和银差别咋恁大嗫,大兄弟?这两天灌了好几篇水,已经用光HP和RP,没有兴致长篇大论介转载 2007-04-10 12:23:00 · 8855 阅读 · 1 评论 -
SICP授课录像镜像
最近SICP授课录像站点似乎不稳定,今天又当掉了。一点点google搜索让我发现了一个速度很快的镜像站点:http://www.cs.bgu.ac.il/~ppl052/lectures/原创 2006-01-02 04:14:00 · 3984 阅读 · 2 评论 -
Java门派的风险
正在看周思博(www.joelonsoftware.com)的新文章。这次是疯狂攻击Java。主要论点是:Java不够难,作为工业语言不错,但作为学校的教学语言,就忒差了。学校应该用指针和递归这类东西把真正的程序员筛选出来。对指针(代表系统底层)和函数编程(代表高层抽象)的学习是脱胎成优秀程序员的必经之路。看这种滔滔雄辩的文章最爽了。摘取一段哈:不了解泛函编程,你不可能发明MapReduce --原创 2005-12-30 12:43:00 · 7010 阅读 · 2 评论 -
第42个Mersenne质数找到了
也是目前能找到的最大质数:224036583-1。 这里有它的二进制表示,20多MB。Mersenne质数是形式为2^n-1的质数。一个叫做Lucas Lehmer Test的方法可以比较快地判定一个数是不是Mersenne质数。Chris Caldwell预测已知质数位数的对数和年份的增长成线性关系。每一对数单位的增长花费大概9年。也就是说,一个质数的位数每9年增长10倍(假设对数的底数是10)原创 2005-02-27 10:52:00 · 2480 阅读 · 2 评论 -
学习理论的实用意义
为什么要学CS理论呢?成天研究MSO=MSO0一类的问题对一个程序员的职业发展到底有什么好处呢?知道Ranked Tree Automata和Unranked Tree Automata的互换又怎么样呢? 不知不觉学习形式化方法一年多了,学了一大堆数理逻辑和自动机理论,可计算性和复杂性理论也多学了不少。 这些理论除了有趣,有没有什么实用的价值呢?我不过是一小小程序员,没有能力也没有打算在CS理论方原创 2005-02-04 14:39:00 · 15442 阅读 · 4 评论 -
补充:学习理论的意义
还忘了一条:学习理论能训练我们对直观想法的表述能力。形式化方法要求我们把直观的描述转换成严格的数学描述,或者把一种形式的语言转换为另一种形式的语言。有时一个想法的直观意义明显,但它的形式化描述却不容易。比如说,把非正则的语言{aibi | i > 0} 用Monadic Second Order Logic 表示为∃X ( X(min) ∧∀y∀z (S(y,z) => (X(y) !X(z))原创 2005-02-05 22:49:00 · 11781 阅读 · 1 评论 -
ALI的错误不少哦
Springer的Automata, Logics, and Infinite Games 好像错误不少啊。看了前7章了,几乎每章都有错误。有些例子都给错了。一些定理的证明也有笔误。这和Springer一贯标榜的高质量有所不符的说。 里面的练习题挺有意思的,能帮助理解书里的概念。可惜没人和我讨论。原创 2004-10-24 07:45:00 · 2272 阅读 · 2 评论 -
学术研究和计算机科学的革新
Windley的一篇短文:Academic Research and CS Innovation 。于我心有戚戚焉 。想当年Software Practice & Expereience 上雄文无数,但近来好像也没有什么大作,价格还高得吓人。偶们公司的图书馆也没有订它了,连存档都只到1997年。我总觉得,CS是一门相当务实的学科。它不象数学,追求的是纯粹的抽象;也不象物理,追求的是穷尽这个世界的本原创 2004-10-24 07:39:00 · 3146 阅读 · 3 评论 -
Marktoberdorf暑期班的讲义
其实偶很惭愧:一直不知道Marktoberdorf暑期班是什么来头,虽然自己也算小半个研究形式化方法的学生。昨天看到Marktoberdorf暑期班讲义 ,尤其是Manfred Broy的讲义,才知道,原来每年的暑期班也是计算机理论界的盛会,大牛云集。大牛们讲的东西也多半名动江湖。当年班里的新鲜玩意儿,竟然多是今天搞计算机的人口头心里常念叨的东西,比如Dijkstra的结构化编程(每个学编程的人第原创 2004-09-18 07:11:00 · 2614 阅读 · 2 评论 -
软件考古学的有趣报告
Rational Rose的老牛Grady Booch做的关于所谓软件考古学的有趣报告 。用Eclipse做分析案例,开眼的说。原创 2004-07-28 12:14:00 · 3737 阅读 · 0 评论 -
突然想到Functional Programming
Philip Wadler 在ACM SIGPLAN Notices, Aug 1998上的文章 "Why no one uses functional languages" 讨论了FP的障碍,主要不是技术上的, 而是商业上的和政治上(politics in its general meaning)。比如很多程序员都 只受过Imperaive Programming的训练,还没有人投资去搞出足够成原创 2004-07-03 03:04:00 · 4662 阅读 · 1 评论 -
范畴论入门文章
偶不是搞编程语言的,但最近读的论文老用到范畴论,所以也就开始学了。James Cheney在他的主页上放了Category Theory For Dummies,正好适合偶这样对抽象数学一知半解的人。LtU上好东西真多啊。原创 2004-08-02 00:57:00 · 4762 阅读 · 0 评论 -
微软又在搞一个新的软件模型验证软件
微软研究院又推出一个新的模型验证软件,zing。粗略看了下关于zing的介绍,好像卖点在能处理更大型的模型,有一套通用的框架。也就是说工程方面有亮点。但没看出理论上有什么特别的地方。 先简单地科普一下什么是软件模型检验。简单的说,就是用程序来自动检测一个软件,或者一个软件模型(比如一套UML模型),是否正确。自动的检测的好处是详尽,不象测试,总是有所遗漏(不要忘了E.W.Dijkstra大牛名言哈原创 2004-07-09 10:57:00 · 3667 阅读 · 2 评论 -
一个关于编程语言历史的有趣网站
有意思的网站 ,记录了编程语言的历史。里面有不少有趣的统计。比如,那个年代发明的语言最多?看了统计不禁感叹:闲人真多啊,从1840到2000居然有6000多种语言问世。遍学所有的语言不可能,也没必要。幸好我们有强大的工具,叫抽象。:-) 比如说范式。如果现在的script kids肯稍微静下心来读点谈编程语言的书,掌握基本的关于范式的理论,网上也不会有那么多乱七八糟,似是而非的所谓语言比较一类的东原创 2004-07-08 13:46:00 · 5448 阅读 · 3 评论