2010-01-18
Beta技术沙龙第十期《云端的Ruby on Rails》预告
发贴者:tiny @ 时间 1/18/2010 10:33:00 上午 | 6 条评论
2009-12-31
发布Tiny4Reader测试版(Mac版,其他平台用户请直接忽视)
Tiny4Reader是一个非常简单的PDF阅读器,其实Mac上Preview就已经是一个非常完美的PDF阅读器了,那么我为什么非要费劲写一个呢。
发贴者:tiny @ 时间 12/31/2009 04:08:00 下午 | 16 条评论
2009-11-19
如何给Mysql命令行客户端里的命令添加别名(如何在Mysql内使用ls/ll)
我有个非常不好的习惯,每次进入到Mysql命令行客户端的时候,都会下意识ll一下。这个毛病非常不好,因为这命令人家根本不支持,而且人家还等着你给个分号,你不给就继续等,真是烦人。其实Mysql也真是的,有些命令需要分号,有些不需要,烦人。
于是我今天在我的Twitter上面抱怨这一点:
每次进入mysql>提示符,我总是先ll一下,每次都是,我决心以后研究下mysql console的源代码,让ll=show databases;,如果use了数据库,就变成show tables;很多人说他们也是,于是我就想干脆Hack一下Mysql,让他支持ll/ls吧。在Hack之前,我想搜索一下有没有正规方式给Mysql命令行命令加个别名(要是有这正规方法,自己不用,反而去改代码也太丢人了),于是我在Google搜索“mysql alias ls”,结果没找到正规方法,倒是没想到很快就找到了这篇文章《Making mysql a bit more shell-like》。
这篇文章告诉我,原来很早以前(文章发布于2004年)就有人这么想,而且这么做了;而且这么做非常的简单,只需要修改mysql.cc文件,加几行代码,然后重新编译安装就是了。
不过注意,这篇文章太老了,代码已经过时,在现在的mysql.cc下已经编译不过去了,不要直接用patch,看懂patch自己改还是很容易的。另外你还需要把buffer->set("SHOW DATABASES", 14);这类的地方改成buffer->append("SHOW DATABASES;");就可以了(注意databases后面的分号,有了这个ll和ls就不用加分号了,很爽啊)。
发贴者:tiny @ 时间 11/19/2009 01:15:00 上午 | 5 条评论
2009-11-17
欢迎大家参加Beta沙龙第九期《推荐系统在大型网站中的应用和实做》
时间:11月22日 星期日 下午2点半
地点:奇遇花园咖啡馆(http://storygarden.me/cafe/map)
主题:推荐系统在大型网站中的应用和实做
主讲:王洪涛(当当) 付超群(前某网站音乐事业部)
简介:“豆瓣猜你喜欢什么”,亚马逊的书籍推荐等等都是网站中的推荐系统,推荐系统越来越成为一个网站不可或缺的部分。它可以帮助用户找到自己可能喜欢的东西,可以帮助网站提高销售收入。有人说推荐系统就是搜索引擎之后的Next big thing。beta沙龙本期请到了resys的两位成员王洪涛和付超群,两位都在大型网站上进行过推荐系统的实做,希望他们的经验,可以帮助我们了解什么是推荐系统,网站为什么需要推荐系统,以及如何构建一个推荐系统。
无需报名,无需费用,点单随意。
发贴者:tiny @ 时间 11/17/2009 09:12:00 上午 | 2 条评论
2009-10-24
正式发布雪计算的keynote
前些日子TL聚会的时候,我做了一个关于雪计算的演讲,那是雪计算这个概念第一次面向除了我以外的广大人类们。昨天在迎接老莫,许式伟等盛大大牛们的饭局上面,老莫问起,我才想起,我居然忘了发雪计算keynote出来。
不管别人怎么看,我是正经地在阐述一个概念,一个想法,而不是讽刺或者挖苦什么东西。那么,云计算尚方兴未艾,我为什么着急下雪呢?
因为云计算是大众可以享用的,但不是大众可以构建的,越好用的云,对架构,投资,技术的要求越高,越不是普通人可以轻易构建的。而雪计算不同,每个有一定底层网络和架构知识的技术人员都可以搭建起一个还算可以用的雪计算平台,这是雪的草根之处,也是我自知无缘投入大云构建事业之后,想到的还算有点挑战性的玩法。
更细节的,请阅读雪计算的keynote,暂时还没有可用的Demo和更细节的信息。
下载地址:
http://www.tinydust.net/keynotes/tinysnow.pdf
发贴者:tiny @ 时间 10/24/2009 12:22:00 上午 | 4 条评论
2009-09-17
为什么我想买TextMate但是没买呢?
下午01:30:42 yayv: TextMate有哪些功能是Editplus没有的呢?
下午01:31:05 tiny: 跟texamate比的话ed就算没什么功能的
下午01:31:10 tiny: 模板啊,自动完成啊
下午01:31:13 tiny: 这些都要体会
下午01:31:20 tiny: 你必须有mac才行
下午01:31:30 tiny: 然后你下个测试版用就知道了
下午01:32:09 yayv: 你这个回答..., 等于我没问...
下午01:32:36 tiny: 实际上是这样的
下午01:32:42 tiny: 你说功能就那么简单
下午01:32:51 tiny: 但是好用这个不是简单可以说清除的
下午01:32:54 yayv: 你连1-3个你喜欢的功能都说不出来,凭什么说他好呢,哪怕是都有的功能他做的更好
下午01:33:31 tiny: 呵呵
下午01:33:54 yayv: ..., 还是没得到结果...
下午01:34:08 tiny: 我用着觉得你,你不一定啊
下午01:34:37 yayv: 我不在乎是不是我能用上,我只在乎为什么其他人觉得他好用
下午01:35:12 tiny: 就是好用
下午01:35:18 tiny: 我给你个最简单的例子吧
下午01:35:24 yayv: 好
下午01:35:26 yayv: 就等这个呢
下午01:35:26 tiny: 代码完成,现在ide都可以做吧
下午01:35:31 yayv: 对
下午01:35:35 tiny: vc,vb什么样子你知道的
下午01:35:40 yayv: 对
下午01:35:41 tiny: delphi看着是一样的
下午01:35:47 yayv: autocomplete
下午01:35:53 tiny: 但是往往要编译一下h,pas之类的
下午01:35:57 tiny: 会慢一点
下午01:36:03 tiny: 功能%一样,对吧?
下午01:36:14 tiny: 100%
下午01:36:20 tiny: xcode也有代码完成
下午01:36:32 tiny: 但是不是按点以后出现
下午01:36:37 tiny: 因为他不是c++
下午01:36:52 tiny: 他是Objective-C,他的语法是[对象 方法];
下午01:37:23 tiny: 他的完成是 你写 pr,他就给你输出一个pr正常字体,int灰色
下午01:37:38 tiny: 你觉得对,你就按tab,这样print就出来了
下午01:38:09 yayv: 输入 fo, 有 for foreac 多种选择的时候呢?
下午01:38:39 tiny: 你觉得不对,你可以按esc,出现一个下拉框可以选择
下午01:38:50 tiny: 或者你可以完全不理会,直接继续输入
下午01:38:51 yayv: 哦
下午01:38:57 tiny: pri的时候多半就不会错了
下午01:39:07 tiny: 而且貌似带有上下文的学习,所以错误的几率很低
下午01:39:10 yayv: 类似emacs的补全括号的感觉
下午01:39:15 tiny: 我昨天看到人说这个不好
下午01:39:24 tiny: 那就是完全按照vc的思路去说的
下午01:39:31 yayv: 无所谓谁说不好,我只在乎谁觉得好
下午01:39:40 tiny: 我觉得很好,为什么呢,因为我现在已经完全不记得他的存在了
下午01:39:42 yayv: 任何功能,都会有一大堆的人说不好
下午01:39:54 tiny: 就是给你讲的时候,我要去操作一下,才能给你描述对
下午01:40:04 tiny: 不然该按什么我都记不住
下午01:40:17 tiny: 但是我写代码的时候,肯定不会打错
下午01:40:20 yayv: 恩,明白,就像VI的很多命令,习惯之后就想用筷子那么简单
下午01:40:28 tiny: 我把这个叫做自然
下午01:40:40 tiny: 如果你完全不知道这个东西,你不理会他,不用他的好处
下午01:40:47 tiny: 它也完全不会干扰你
下午01:40:58 tiny: 不像delphi,他比较突出
下午01:41:07 tiny: 因为慢,你会暂时不能响应
下午01:41:15 tiny: textmate就有点这个感觉
下午01:41:23 tiny: 你让我跟你说他哪里好用,很难说
下午01:41:28 yayv: delphi还好,还算快,JB 这类的贼慢
下午01:41:39 tiny: bcb更慢
下午01:41:44 tiny: 我主要用bcb多点
下午01:41:45 yayv: 明白,要的就是你上面这些描述
发贴者:tiny @ 时间 9/17/2009 02:04:00 下午 | 5 条评论
2009-09-16
Joel Test:写好代码的12个步骤
刚才看到了篇《The Joel Test: 12 Steps to Better Code》,感觉很靠谱,分享给大家:
| |||
其中的第9条,狠狠的击中了我,Robin同志多次告诫我买一个Textmate(约$59),我就是舍不得买,怕被老婆骂:上个月信用卡账单,美元怎么那么多啊?。
按照第9条的逻辑,不考虑硬件因素的话(考虑硬件的话,我是很想买Mac Pro的,$3299,8核,那不是机器,那是真正的野兽啊),我唯一出钱购买的开发工具就是IDP(iPhone Developer Program)了。
Joe Test这12条标题简译如下:
- 是否使用源码控制软件?
- 是否可以一步构建一个build?
- 是否进行daily build?
- 是否有bug数据库?
- 是否在修改bug后,才开始写新代码?
- 是否及时更新了你的时间表?
- 是否有详细的设计规格说明书?
- 程序员是否有个安静的工作环境?
- 是否在使用金钱可以买到的最好的工具?
- 有没有测试人员?
- 面试的时候是否要求求职者写代码?
- 是否利用陌生人进行可用性测试(直译为走廊过客可行性测试)?
发贴者:tiny @ 时间 9/16/2009 05:12:00 下午 | 8 条评论
2009-08-28
第一台计算机的荣誉应该归美国
第一台计算机的荣誉应该归美国,但是,英国人老是不服气这一点,因为他们认为实际上第一台确实是他们发明的,是他们根据图灵的设想创造出来的(1),并在解密工作上起了非常大的作用。二战时期,德国的Enigma-machine ciphers埃尼格玛密码是波兰人初步破解(2),而在图灵的带领下,被英国人彻底破解的(3)。
但是,英国人自己害死了图灵,他们对自己发明的计算机严格保密,甚至在不需要破解密码后,销毁了图纸和机器,只有两台做为收藏之用。
而美国的第一台计算机ENIAC(4),刚开始当然也是为了军用(5),可是战后,美国人没有束之高阁,或者干脆学英国人销毁了事。后来的计算机应该是参考了它而发展出来的。从而也催生了,美国整个国家的信息化,以及现在整个世界的信息化。
所以,英国人活该。图灵当时就应该移民去美国,这样信息产业的面目也许完全不同。要知道图灵死的时候才42岁,对科学家这个职业来说,这简直就是青壮年,正是应该大展宏图的时候。
当然,这也是我认为每个中国人,我和你迟早应该移民美国的原因之一。
---
- 应该是指Tunny Machine,为了解决出现在埃尼格玛密码之后的Lorenz cipher洛伦茨码而设计的,据说是依据图灵机思想设计的,故可称为最早的计算机,但也有人说它不可编程,故而不是真正的计算机,待考。
- 波兰版本的Bomba,可以解决原始的埃尼格玛密码,但是对改进后的无能为力,但是对英国人的最终破解启发极大,所以图灵的机器名字也叫Bomb。
- Turing–Welchman bombe,英国人造的,彻底解决了埃尼格玛密码。
- 按照美国法院的判决,第一台计算机是ABC,基于类似的原因,我对此不以为然。
- ENIAC设计的目的是用来计算火炮的投弹曲线表,实际上的第一次使用是氢弹设计中的计算。
发贴者:tiny @ 时间 8/28/2009 10:53:00 上午 | 5 条评论
2009-08-21
跟朋友聊敏捷(我对结对编程、单元测试、重构的看法)
大晚上的有个朋友也没睡,在Gtalk上找我聊敏捷,一聊就聊了一个多小时,谁叫我是话唠呢?我对敏捷的了解并不深,也许说的有很多不对的,不过下面这些东西都是我的一些思考,所以,贴出来就是露怯,我也不刻意藏拙了。
像ThoughtWorks这种公司
后:
聊天是我最没有压力的写东西的方式,前些日子的TL聚会有人反应我一个人说了3/4的话,就是因为如此。如果是聊天,我就可以没有压力的海阔天空的说,一旦正正经经的写个文章,我就会花大量的时间去考据,查资料,以免露怯,所以我最近一两年写东西越来越少。结对编程是我最心向往之的敏捷方法,可惜一直没有好好的实践过,这反而我和霍炬倒是经常一起结对设计,呵呵。8月23日,即本周日,Beta沙龙的话题是我的合伙人霍炬来讲我们如何在应用中使用Snmp协议来进行服务监控的,欢迎大家参加。
发贴者:tiny @ 时间 8/21/2009 01:00:00 上午 | 5 条评论
2009-08-10
瞻仰海峡对岸的牛人《追求神乎其技的程式設計之道》
活在这个日新月异的世界是需要巨大勇气的,因为有太多牛人在侧,以前(小学、中学、大学)我的生活圈子小,见得牛人少,觉得自己就很不错了。但后来有了互联网,我脆弱的心灵就一次一次地被各色牛人冲击着。
最近几次,是从刘未鹏开始的,他组建了一个颇有气氛和深度的Google Group:TopLanguage,里面牛人无数。他自己当然是其中的佼佼者,他的Blog虽然更新不多,但是每篇都巨长具有深度,很多年以前,他大学还没毕业的时候,我看他的Blog就以为他是哪个深山归隐的老怪了。最近,他的一篇《我在南大的七年》,则彻底摧毁了我残存的一点点自信,为什么牛人都那么年轻那么帅啊。未鹏的学弟是我的好网友xuyou同学,这个家伙也是牛的一塌糊涂,Cool的一塌糊涂,现在正在美国读博。他跟风未鹏的作品《我的大学》则让我相信我活着就是糟蹋粮食(按照我的体重,我这方面还算是有特长的),我准备找个山清水秀,春暖花开的日子自绝与人民。
然而,就在这时,我看到了海峡对岸的牛人Vgod(现在在MIT读书去了已经)的文章:
- 追求神乎其技的程式設計之道(一)
- 追求神乎其技的程式設計之道(二)
- 追求神乎其技的程式設計之道(三)
- 追求神乎其技的程式設計之道(四)
- 追求神乎其技的程式設計之道(五)
- 追求神乎其技的程式設計之道(六)
- 追求神乎其技的程式設計之道(七)
- 追求神乎其技的程式設計之道(八)
- 追求神乎其技的程式設計之道(九)
- 追求神乎其技的程式設計之道(十)
就像Zooey Deschanel在《Yes Man》里面说的:The world is a playground. You know that when you are a kid, but somewhere along the way everyone forgets it.
发贴者:tiny @ 时间 8/10/2009 10:22:00 上午 | 11 条评论
2009-07-29
[转载sir的经典老文]胡侃学习(理论)计算机
原文地址:http://bbs.nju.edu.cn/vd306802/bbscon?board=Mathematics&file=M.1002484634.A&num=2412
发信人: sir (阿涩), 信区: Mathematics. 本篇人气: 4731
标 题: 胡侃学习(理论)计算机(0)
发信站: 南京大学小百合站 (Mon Oct 8 03:57:41 2001), 站内信件
我也来冒充一回高手,谈谈学习计算机的一点个人体会。
由于我是做理论的,所以先着重谈谈理论。
记得当年大一,刚上本科的时候,每周六课时数学分析,六课时高等代数,天天作业不断(那时是六日工作制)。颇有些同学惊呼走错了门:咱们这到底念的是什么系?不错,你没走错门,这就是(当时的)南大计算机系。系里的传统是培养做学术研究,尤其是理论研究的人。而计算机的理论研究,说到底了就是数学,虽然也许是正统数学家眼里非主流的数学。
数学分析这个东东,咱们学计算机的人对它有很复杂的感情。爱它在于它是第一门,也是学分最多的一门数学课,又长期为考研课程--94以前可以选考数学分析与高等代数,以后则并轨到著名的所谓“工科数学一”。其重要性可见一斑。恨它则在于它好象难得有用到的机会,而且思维跟咱们平常做的这些离散/有限的工作截然不同。当年出现的怪现象是:计算机系学生的高中数学基础在全校数一数二(希望没有冒犯其它系的同学),教学课时数也仅次于数学系,但学完之后的效果却几乎是倒数第一。其中原因何在,发人深思。
我个人的浅见是:计算机类的学生,对数学的要求固然跟数学系不同,跟物理类差别则更大。通常非数学专业的所谓“高等数学”,无非是把数学分析中较困难的理论部分删去,强调套用公式计算而已。而对计算机系来说,数学分析里用处最大的恰恰是被删去的理论部分。说得难听一点,对计算机系学生而言,追求算来算去的所谓“工科数学一”已经彻底地走进了魔道。记上一堆曲面积分的公式,难道就能算懂了数学分析?
中文的数学分析书,一般都认为以北大张筑生老师的“数学分析新讲”为最好。我个人认为南大数学系的“数学分析教程”也还不错,至少属于典型的南大风格,咱们看着亲切。随便学通哪一本都行。万一你的数学实在太好,这两本书都吃不饱,那就去看菲赫金哥尔茨的“微积分学教程”好了--但我认为没什么必要,毕竟你不想转到数学系去。
吉米多维奇的“数学分析习题集”也基本上是计算型的东东。如果你打算去考那个什么“工科数学一”,可以做一做。否则,不做也罢。
中国的所谓高等代数,就等于线性代数加上一点多项式理论。我以为这有好的一面,因为可以让学生较早感觉到代数是一种结构,而非一堆矩阵翻来覆去。当年我们用林成森,盛松柏两位老师编的“高等代数”,感觉相当舒服,我直到现在还保留着教材。此书相当全面地包含了关于多项式和线性代数的基本初等结果,同时还提供了一些有用的比较深的内容,如Sturm序列,Shermon-Morrison公式,广义逆矩阵等等。可以说,作为本科生如能吃透此书,就可以算高手。后来它得以在南大出版社出版,可惜好象并轨以后就没有再用了。
国内较好的高等代数教材还有清华计算机系用的那本,清华出版社出版,书店里多多,一看就知道。特点嘛,跟南大那本差不太多。
但以上两本书也不能说完美无缺。从抽象代数的观点来看,高等代数里的结果不过是代数系统性质的一些例子而已。莫宗坚先生的“代数学”里,对此进行了深刻的讨论。然而莫先生的书实在深得很,作为本科生恐怕难以接受,不妨等到自己以后成熟了一些再读。
概率论与数理统计这门课很重要,可惜少了些东西。
少了的东西是随机过程。到毕业还没有听说过Markov过程,此乃计算机系学生的耻辱。没有随机过程,你怎么分析网络和分布式系统?怎么设计随机化算法和协议?据说清华计算机系开有“随机数学”,早就是必修课。人家可是工科学校,作为自以为“理科计算机系”出身的人,我感到惭愧。
另外,离散概率对计算机系学生来说有特殊的重要性。现在,美国已经有些学校开设了单纯的“离散概率论”课程,干脆把连续概率删去,把离散概率讲深些。我们不一定要这么做,但应该更加强调离散概率是没有疑问的。
计算方法是最后一门由数学系给我们开的课。一般学生对这门课的重视程度有限,以为没什么用。其实,做图形图像可离不开它。而且,在很多科学工程中的应用计算,都以数值的为主。
这门课有两个极端的讲法:一个是古典的“数值分析”,完全讲数学原理和算法;另一个是现在日趋流行的“科学与工程计算”,干脆教学生用软件包编程。南大数学系的几位老师做了件大好事,把前者的一本极为经典的教材翻译出版了:德国Stoer的“数值分析引论”。如果你能学会此书中最浅显的三分之一,就算没有白上过计算方法这门课!而后一种讲法似乎国内还没有跟上潮流?不过,只要你有机会在自己的电脑上装个matlab之类,完全可以无师自通。
本系里,通常开一门离散数学,包括集合论,图论,和抽象代数,另外再单开一门数理逻辑。这样安排,主要由于南大的逻辑传统:系里很多老师都算莫先生的门人,就连孙先生都是逻辑专业出身(见孙先生自述)。
不过,这么多内容挤在离散数学一门课里,是否时间太紧了点?另外,计算机系学生不懂组合和
数论,也是巨大的缺陷。要做理论,不懂组合或者数论吃亏可就太大了。
从理想的状态来看,最好分开六门课:集合,逻辑,图论,组合,代数,数论。这个当然不现实,
因为没那么多课时。也许将来可以开三门课:集合与逻辑,图论与组合,代数与数论。
不管课怎么开,学生总一样要学。下面分别谈谈上面的三组内容。
古典集合论,北师大出过一本“基础集合论”不错。南大出版朱梧(木贾)老师的“集合论导引”也许观点更高些,但他的书形式化得太厉害,念起来吃力。
数理逻辑,莫先生的书自然是经典。然而我们也不得不承认,此书年代久远,光读它恐怕不够。尤其是命题/谓词演算本身有好多种不同的讲法,多看几家能大大开阔自己的视野。例如陆钟万老师的“面向计算机科学的数理逻辑”就不错。朱老师也著有“数理逻辑教程”一书,但也同样读起来费力些。
总的来说,学集合/逻辑起手不难,但越往后越感觉深不可测。建议有兴趣的同学读读朱老师的“数学基础引论”--此书有点时间简史的风格,讲到精彩处,所谓“天花乱坠,妙雨缤纷”,令人目不暇接。读完以后,你对这些数学/哲学中最根本的问题有了个大概了解,也知道了山有多高,海有多深。
学完以上各书之后,如果你还有精力兴趣进一步深究,那么可以试一下GTM系列中的"Introduction to Axiomatic Set Theory"和"A Course of Mathematical Logic"。这两本都有世界图书的引进版。你如果能搞定这两本,可以说在逻辑方面真正入了门,也就不用再浪费时间听我瞎侃了。:)
据说全中国最多只有三十个人懂图论(当年上课时陈道蓄老师转引张克民老师的话)。此言不虚。图论这东东,技巧性太强,几乎每题都有一个独特的方法,让人头痛。不过这也正是它魅力所在:只要你有创造性,它就能给你成就感。所以学图论没什么好说的,做题吧。
国内的图论书中,王树禾老师的“图论及其算法”非常成功。一方面,其内容在国内教材里算非常全面的。另一方面,其对算法的强调非常适合计算机系(本来就是科大计算机系教材)。有了这本书为主,再参考几本翻译的,如Bondy&Murty的“图论及其应用”,邮电出版社翻译的“图论和电路网络”等等,就马马虎虎,对本科生足够了。
再进一步,世界图书引进有GTM系列的"ModernGraph Theory"。此书确实经典!国内好象还有一家出版了个翻译版。不过,学到这个层次,还是读原版好。搞定这本书,也标志着图论入了门,呵呵。
组合感觉没有太适合的国产书。还是读Graham和Knuth等人合著的经典“具体数学”吧,有翻译版,西电出的。
抽象代数,国内经典为莫宗坚先生的“代数学”。此书是北大数学系教材,深得好评。然而对本科生来说,此书未免太深。可以先学习一些其它的教材,然后再回头来看“代数学”。国际上的经典可就多了,GTM系列里就有一大堆。推荐一本谈不上经典,但却最简单的,最容易学的:http://www.math.miami.edu/~ec/book/ 这本“Introduction to Linear and Abstract Algebra"非常通俗易懂,而且把抽象代数和线性代数结合起来,对初学者来说非常理想。不过请注意版权问题,不要违反法律噢。
数论方面,国内有经典而且以困难著称的”初等数论“(潘氏兄弟著,北大版)。再追溯一点,还有更加经典(可以算世界级)并且更加困难的”数论导引“(华罗庚先生的名著,科学版,九章书店重印)。把基础的几章搞定一个大概,对本科生来讲足够了。但这只是初等数论。本科毕业后要学计算数论,你必须看英文的书,如Bach的"Introduction to Algorithmic Number Theory"。
理论计算机的根本,在于算法。现在系里给本科生开设算法设计与分析,确实非常正确。环顾西方世界,大约没有一个三流以上计算机系不把算法作为必修的。
算法教材目前公认以Corman等著的"Introduction to Algorithms"为最优。对入门而言,这一本已经足够,不需要再参考其它书。南大曾翻译出版此书,中文名为”现代计算机常用数据结构与算法“。pie好象提供了网上课程的link,我也就不用废话。
最后说说形式语言与自动机。我们用过北邮的教材,应该说写的还清楚。但是,有一点要强调:形式语言和自动机的作用主要在作为计算模型,而不是用来做编译。事实上,编译前端已经是死领域,没有任何open problem。如果为了这个,我们完全没必要去学形式语言--用用yacc什么的就完了。北邮的那本,在深度上,在跟可计算性的联系上都有较大的局限,现代感也不足。所以建议有兴趣的同学去读英文书......不过英文书中好的也不多,而且国内似乎没引进这方面的教材。
入门以后,把形式语言与自动机中定义的模型,和数理逻辑中用递归函数定义的模型比较一番,可以说非常有趣。现在才知道,什么叫”宫室之美,百官之富“!
sir的另一篇经典老文:理论计算机科学漫谈
发贴者:tiny @ 时间 7/29/2009 10:11:00 上午 | 0 条评论
[转载sir的经典老文]理论计算机科学漫谈
原文地址:http://bbs.nju.edu.cn/vd306802/bbscon?board=Mathematics&file=M.975553688.A&num=1793
发信人: sir (sir), 信区: Mathematics. 本篇人气: 7567
标 题: 理论计算机科学漫谈(1)
发信站: 南大小百合 (Thu Nov 30 11:08:08 2000) , 转信
早就答应russel的,今天有点时间,把欠债还上。
计算机科学和数学的关系有点奇怪。二三十年以前,计算机科学基本上还是数学的一个分支。而现在,计算机科学拥有广泛的研究领域和众多的研究人员,在很多方面反过来推动数学发展,从某种意义上可以说是孩子长得比妈妈还高了。
但不管怎么样,这个孩子身上始终流着母亲的血液。这血液是the mathematical underpinning of computer science(计算机科学的数学基础),-- 也就是理论计算机科学。
现代计算机科学和数学的另一个交叉是计算数学/数值分析/科学计算,传统上不包含在理论计算机科学以内。所以本文对计算数学全部予以忽略。
最常和理论计算机科学放在一起的一个词是什么?答:离散数学。这两者的关系是如此密切,以至于它们在不少场合下成为同义词。
传统上,数学是以分析为中心的。数学系的同学要学习三四个学期的数学分析,然后是复变,实变,泛函等等。实变和泛函被很多人认为是现代数学的入门。在物理,化学,工程上应用的,也以分析为主。
随着计算机科学的出现,一些以前不太受到重视的数学分支突然重要起来。人们发现,这些分支处理的数学对象与传统的分析有明显的区别:分析研究的对象是连续的,因而微分,积分成为基本的运算;而这些分支研究的对象是离散的,因而很少有机会进行此类的计算。人们从而称这些分支为“离散数学”。“离散数学”的名字越来越响亮,最后导致以分析为中心的传统数学分支被相对称为“连续数学”。
离散数学经过几十年发展,基本上稳定下来。一般认为,离散数学包含以下学科:
1) 集合论,数理逻辑与元数学。这是整个数学的基础,也是计算机科学的基础。
2) 图论,算法图论;组合数学,组合算法。计算机科学,尤其是理论计算机科学的核心是算法,而大量的算法建立在图和组合的基础上。
3) 抽象代数。代数是无所不在的,本来在数学中就非常重要。在计算机科学中,人们惊讶地发现代数竟然有如此之多的应用。
但是,理论计算机科学仅仅就是在数学的上面加上“离散”的帽子这么简单吗?一直到大约十几年前,终于有一位大师告诉我们:不是。
D.E.Knuth(他有多伟大,我想不用我废话了)在Stanford开设了一门全新的课程Concrete Mathematics。 Concrete这个词在这里有两层含义:
第一,针对abstract而言。Knuth认为,传统数学研究的对象过于抽象,导致对具体的问题关心不够。他抱怨说,在研究中他需要的数学往往并不存在,所以他只能自己去创造一些
数学。为了直接面向应用的需要,他要提倡“具体”的数学。
在这里我做一点简单的解释。例如在集合论中,数学家关心的都是最根本的问题--公理系统的各种性质之类。而一些具体集合的性质,各种常见集合,关系,映射都是什么样的,
数学家觉得并不重要。然而,在计算机科学中应用的,恰恰就是这些具体的东西。Knuth能够首先看到这一点,不愧为当世计算机第一人。
第二,Concrete是Continuous(连续)加上discrete(离散)。不管连续数学还是离散数学,都是有用的数学!
前面主要是从数学角度来看的。从计算机角度来看,理论计算机科学目前主要的研究领域包括:可计算性理论,算法设计与复杂性分析,密码学与信息安全,分布式计算理论,并
行计算理论,网络理论,生物信息计算,计算几何学,程序语言理论等等。这些领域互相交叉,而且新的课题在不断提出,所以很难理出一个头绪来。
下面随便举一些例子。
由于应用需求的推动,密码学现在成为研究的热点。密码学建立在数论(尤其是计算数论),代数,信息论,概率论和随机过程的基础上,有时也用到图论和组合学等。
很多人以为密码学就是加密解密,而加密就是用一个函数把数据打乱。这就大错特错了。现代密码学至少包含以下层次的内容:
第一,密码学的基础。例如,分解一个大数真的很困难吗?能否有一般的工具证明协议正确?
第二,密码学的基本课题。例如,比以前更好的单向函数,签名协议等。
第三,密码学的高级问题。例如,零知识证明的长度,秘密分享的方法。
第四,密码学的新应用。例如,数字现金,叛徒追踪等。
在分布式系统中,也有很多重要的理论问题。
例如,进程之间的同步,互斥协议。一个经典的结果是:在通信信道不可靠时,没有确定型算法能实现进程间协同。所以,改进TCP三次握手几乎没有意义。
例如时序问题。常用的一种序是因果序,但因果序直到不久前才有一个理论上的结果......
例如,死锁没有实用的方法能完美地对付。
例如,......
sir的另外一篇经典老文:胡侃学习(理论)计算机
发贴者:tiny @ 时间 7/29/2009 09:57:00 上午 | 0 条评论
2009-07-25
结对设计
刚才乱翻infoq的老文章,翻到一篇《结对编程的经济价值论》,感觉有点意思。结对编程是我和霍炬同学最心向往之的一种XP方法,然而我们几乎没有结对编程过。
时间是一个大问题,公司就三个程序员,最多的时候也只有四个程序员,大家总是忙着不同的事情。往往不是你忙就是我忙。
座位也是个问题,我们的工位和会议桌似乎都不够方便,至少应该有比较大的桌子,比较大的双显示器等等。
所以,想起来最像结对编程的是,在我们遭遇重大技术问题时,我和霍炬做的结对排错和结对调优。
但是,我今天突然在想,其实我和霍炬曾经做了无数次的结对设计。从几年前,我们设计365kit的前后台,协议,机器人;到两年前,我们和韩磊喝酒的时候,设计出开创一个技术咨询公司的想法;到一年前,我们设计出银杏泰克这个搜索服务的公司;到现在,我们公司产品的每一个架构和细节。
我思路天马行空,霍炬则更加保守严密,我先肆无忌惮的讲出所有的想法,然后霍炬对每个想法一一challenge,我们讨论,然后霍炬记录下来。这是我们作为朋友和合作伙伴合作了几年一直以来的工作方法,我想这也是我们能一直作为好朋友和合作伙伴的方法。
附:如果你想进行靠谱的结对编程,请参考这篇文章《成功实施结对编程》,写的很全面,很有操作性。
发贴者:tiny @ 时间 7/25/2009 09:50:00 下午 | 4 条评论
2009-06-03
beta技术沙龙第四期[iPhone开发入门]我的总结
beta技术沙龙虽然一月才搞一期,但是转眼间也搞了有4期了。每次我都没有写过总结,这点总被火炬和余晟老师诟病。本来为了表示我的清白,我准备别人主讲的活动我不总结,自己主讲的活动就也不总结(看,我还是天才吧,给自己的懒惰找的借口多冠冕)。但是,算了,人总是偶尔要勤快一点的。
我和Robinlu在等待开始
我的朋友Robinlu是比我技术高得多的高手,他的Blog就介绍过iPhone OS开发中内存管理需要注意的事项。
我们对iPhone OS开发都有兴趣和一些经验,所以合作了这次活动的演讲,我来负责前面简要的介绍这个平台,开发工具,开发流程等等。他来讲主要的设计模式,注意事项以及技术难点。
现场的气氛很好,朋友们没有因为我的迟到而生气,令我很感动,谢谢大家。Robinlu觉得我们两个人的演讲都稍微简单了一点,但是非常活跃的问答环节,解决了这一问题。在问答环节中,iPhone和gPhone的比较,对平台的看法,对跨平台的看法,对内存和性能的看法等等等等,很多有深度的问题,给我们的演讲做了最好的补充。可惜问答没有被记录和整理,不然就会是一篇非常好的FAQ了(这个争取在以后的活动中改善)。
所有说来没来的兄弟们,没来是你们的损失;所有本来就不知道这次活动的朋友们,呵呵,记得follow我们beta沙龙的官方推特@betasalon,活动的通知会发布在那里。
最后大家可以在这里在线查看我和Robinlu的keynotes。
顺便公布我翻译的4篇iPhone开发入门的文章,点击代码中国iPhone OS开发专区。
发贴者:tiny @ 时间 6/03/2009 02:25:00 下午 | 0 条评论
2009-05-21
我的搜索历史就像我的作息时间表
刚才打开Google搜索历史看了一眼,发现Hourly search activity(按小时统计的搜索行为)简直可以说就是我的作息时间表。建议以后Hourly search activity作为个人病例的一部分,几点起床,几点睡觉,几点吃饭,简直是一目了然。
![]() |
发贴者:tiny @ 时间 5/21/2009 10:54:00 上午 | 2 条评论


