由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 王垠继续喷各路大神:我为什么在乎这一个A+ (转载)
相关主题
The untold truth about C++这么好的帖子没人转?
C++,大家觉得最值得买最想买最不后悔买的书是哪本?有必要开个c++版
VB, C++初学者清推荐书籍Bjarne Stroustrup C++第四版电子版出来了
c++ cast problem有人看了新版 1368页的 c++ programming language 吗
哪位大侠有如下书籍的电子版,或者下载地址,多谢见过的几个大牛
C++0xC++必备书籍推荐
读Bjarne Stroustrup写得The C++ programming language 是不是经常有不知所谓的感觉。问个C++的operator conversation function问题
(zz)C++11新特性重新捡起C++怎么上手?
相关话题的讨论汇总
话题: friedman话题: 代码话题: 所以话题: b521话题: cps
进入Programming版参与讨论
1 (共1页)
a********5
发帖数: 1631
1
我知道有些人至今仍然嘲笑和鄙视我,因为我曾经说过,我在Dan Friedman的两门课程
B521(程序语言理论)和B621(高级程序语言理论)都得了A+。只要提到我,他们就会
拿出这个把柄来,好像我是一个只在乎分数的肤浅的人。实际上我觉得这些人只是为了
鄙视而鄙视,所以他们发现貌似一个把柄,也不搞清楚Dan Friedman是谁,也不搞清楚
这个A+的分量,拿着半截就开跑,抓住不放了。所以即使我没提过这分数的事情,他们
一样会找到其它话题来损我。我一直都懒得回应这些人的言论,不过今天我有兴致显示
一下自己的价值,所以想花点时间告诉你,这个A+到底意味着什么。
从我的人生历史里面,你应该很明显的看出来,课程,考试,分数,名校,权威,事业
,成就,贡献,以至于图灵奖,诺贝尔奖,对于我来说真的什么都不是。你觉得一个在
乎这些东西的人,会以优秀的成绩从清华,Cornell,Indiana三所大学退学吗?在漫长
的学术生涯中,我上过许多的课程,很多最后结果都是A或者A+,也有几门课的分数低
到C。因为我从来不觉得任何人有资格出题来考我,所以自上大学以来,我给自己定的
标准就是“及格万岁”。我是一个非常不喜欢上课的人,我觉得普通的课堂讲座本身就
是一种极其低效的教学方式,所以一旦觉得老师水平不够或者不懂教学就开始翘课,自
己看书自学。所以,最后无论什么分数都不能衡量我的价值,反而有时候觉得高分是对
我价值的侮辱——本来有时候老师教的,课本上的东西就不对,得高分意味着我得跟他
们错得一样。然而,我为什么唯独在乎在一个非名校,“非名师”手里上的这门课程,
并且愿意告诉你我在里面的成绩呢?
其实,这个分数的意义远远不止是一个A+,它涵盖的内容可能超乎你的想象。也许你可
以从一个很小的例子看出它到底意味着什么。在课程进行到一半的时候,我花了一个星
期的时间,独立解决了曾经困扰程序语言领域十多年的难题——CPS变换。CPS变换有什
么用呢?如果你写过Node.js或者其它类似的东西,就知道所谓“call back hell”的
代码样式,其本质就是程序语言专家所谓的“CPS”(continuation-passing style)
。“CPS变换”就是可以自动把代码变换成那种样式的过程,它在本质上就是一个编译
器。实际上有些函数式语言的编译器(比如SML),其中最重要的过程就是CPS变换。
CPS变换之后,你可以掌握代码中的“控制流”,实现所谓“超轻量线程”,进而可以
实现最近很流行的,所谓“大规模并发”。所以你看到了,这些很流行的概念,在程序
语言专家看来,并不是什么稀奇的东西,甚至不是新的想法。
在这十几年里面,有众多的世界级专家参与过这个问题的研究,包括程序语言领域的鼻
祖之一,爱丁堡大学教授,英国皇家学会院士Gordon Plotkin,天才的丹麦Aarhus大学
教授Olivier Danvy,CMU的Andrzej Filinski(现在DIKU),Indiana的Dan Friedman
以及他的得意门生,天才的Matthias Felleisen,Felleisen的得意门生,天才的Amr
Sabry(我的导师),普林斯顿大学教授Andrew Appel(编译器教材“虎书”的作者)
。这些人为这个话题发表了不知道多少论文,Andrew Appel还为此专门写了一本书,叫
做《Compiling with Continuations》。我之所以会去解决这个问题,是因为Friedman
耍老顽童的花样,别出心裁地把这个问题作为了一道附加题目放进了B521的作业里。我
不知道这个问题有如此之难,所以愣头愣脑,真把它当成作业题给解决了。按照作业的
“道德规范”,完全从问题出发,不看书不看论文不查网络,全凭自己的头脑,在一个
星期之内,把代码反反复复重写了几十次,最后得到了最优的结果。这就是所谓“王垠
40行代码”的含义,虽然最后只剩下40行,然而却不知道删掉了多少。为了这40行代码
,一个人七天,一群人十年,我想你应该知道这是什么概念。
当我最后把代码交给Dan Friedman的时候,他不相信我的代码是正确的,因为历史上有
许多的学生声称做出了这道题目,然而他们几乎全都是错的,或者采用了效率很低的做
法。只有深入到精髓,才会明白怎么写出这些代码。那么多大牛花了那么多年工夫才研
究清楚,所以Friedman把这问题放在作业里面,其实根本就没指望有人能够解决。所以
自然,他很难相信任何人能够做出这道题目。那天Friedman用惊讶又怀疑的眼神看着我
,然后给了我一篇30多页的论文。这篇论文是历史上这个问题的一个重大突破,作者是
他的好朋友,Danvy和Filinsky。可是这论文写得含混晦涩,所以我花了超过一个月才
琢磨清楚这篇论文是怎么回事,我至今被那些公式弄得眼花缭乱。可是最后我发现,我
的自己写出来的代码完全的实现了它最后的思想,而且还要更加优雅。所以当最后我在
班上讲解这片代码是怎么回事的时候,Friedman对大家说:“你们可要听仔细了,这个
值100美元!”
我的名字叫做王垠(父亲起名含义是谐音“亡垠”,无边无垠的意思),所以我将会永
不停息的完善自己,永远不会拿某一个东西自居。解决这个难题只是对我这个人内在品
质的一种反映而已,而且它只是我在B521做出的好几个“课外练习”的其中一个。在短
短一学期的时间里,我还进行了其它几个重量级的练习,包括重新实现miniKanren语言
,加入constraint logic programming功能和一种非常强大的逻辑逆(negation)操作
符,等等。这些练习,全都是独立依靠自己领悟摸索完成,没有查阅任何书籍和论文资
料。从这些练习里面,我获得了让我受益终生的独立思考能力。也就是这种能力,让我
可以在Google,Coverity之类的公司,轻松解决其他人咋咋呼呼,认为不可能完成的任
务。这就是为什么我会讲这个课程的故事,并且告诉你我得了A+。
有趣的是,学期结束的时候,成绩单上出现的分数其实是I(Incomplete)。这种成绩
表示有课程任务没有完成,如果在一年之内不弥补,就会变成F(不及格)。我很纳闷
,发信去问Friedman。他回答说:“对不起,是秘书搞错了!” 然后急忙发信给秘书
说:“这个人的分数应该是A+!实际上如果可能的话,我希望给他A+++++++!”
现在你还觉得我是因为肤浅才告诉你这个A+分数吗?B521教会我的,是一生最重要的东
西,它让我真正的理解了什么叫做“简单”,它使得我去追寻它。它赋予我的独立思考
能力,继续在帮助我用巧妙简单的方法解决其他人望而却步的问题。这不是一个普通的
A+,这是一个把我送上世界巅峰,给予我勇气和自由思想的A+。
就像爱因斯坦说的,任何一个傻瓜都可以把问题搞复杂,你需要一点天才,还有很多勇
气,才能达到简单。很多牛人用“简单”来标榜自己设计的东西,然而我发现他们对简
单的理解其实很肤浅。大部分时候他们用一种类似“皇帝的新装”的心理技巧——你如
果不能理解他的东西,他就说你是傻瓜或者菜鸟,不能理解这种简单。所以没有人敢说
他们设计的东西太复杂。
你觉得世界上有几个人能够在B521上得A+呢?谦虚是一种美德,不要随便评判别人,然
而当看到这么多大牛都那么不谦虚,耀武扬威的,很多人用他们作为评判其他人的依据
,所以我只好冒着评判他们的风险,告诉你一些事实。其实Donald Knuth, Dennis
Ritchie, Bjarne Stroustrup, Guido van Rossum, Brendan Eich, Linus Torvalds,
Rob Pike, ... 这些很多人仰慕的大牛,如果上B521肯定是连A都拿不到的。有些甚至
不能及格,因为有些人根本不知道他们在干什么,设计出一堆复杂的垃圾,然后仗着自
己的威望和强权迫使你去“学习”。其实我对计算机的理解跟这些大牛们,早就不在一
个数量级上了。我心里有数他们该得什么分数,你们自己猜猜吧。
本来不想这么赤裸裸的跟人比较的,然而我发现我的话语权和我对事物的认识深度比起
来,实在相差太多。当我说到一些事情的时候,经常有人抬出这些人的语录来压制,说
得好像圣经似的,对我各种评判,所以觉得有必要特此说明一下。这些大牛在我心目中
真的一点权威都没有的,我反而清楚他们肚子里到底有多少货,思维方式有哪些误区和
局限性。
也许我现在可以毫不担心的告诉你了,我在Kent Dybvig的编译器课程上得的也是A+。
Kent恐怕是世界上最厉害的编译器作者,他几乎从来不给人A+,而我恐怕是他20多年来
最厉害的一个学生。我们做了一个Scheme编译器,它的难度和工作量,是C语言编译器
的两倍以上。由于我喜欢别出心裁,不按他的写法,我的课堂编译器的某些方面,其实
超越了他的Chez Scheme。比如,我的编译器曾一度生成比他更高效的X64机器指令。然
而Kent很会背地里偷学武功,闷声发大财。据课程助教说,Kent有几次偷偷在我的代码
上做“侦探工作”挺久…… 再加上他几十年深藏不露的经验,所以他现在恐怕仍然比
我强 :)
d********u
发帖数: 5383
2
药真的不能停。。。

【在 a********5 的大作中提到】
: 我知道有些人至今仍然嘲笑和鄙视我,因为我曾经说过,我在Dan Friedman的两门课程
: B521(程序语言理论)和B621(高级程序语言理论)都得了A+。只要提到我,他们就会
: 拿出这个把柄来,好像我是一个只在乎分数的肤浅的人。实际上我觉得这些人只是为了
: 鄙视而鄙视,所以他们发现貌似一个把柄,也不搞清楚Dan Friedman是谁,也不搞清楚
: 这个A+的分量,拿着半截就开跑,抓住不放了。所以即使我没提过这分数的事情,他们
: 一样会找到其它话题来损我。我一直都懒得回应这些人的言论,不过今天我有兴致显示
: 一下自己的价值,所以想花点时间告诉你,这个A+到底意味着什么。
: 从我的人生历史里面,你应该很明显的看出来,课程,考试,分数,名校,权威,事业
: ,成就,贡献,以至于图灵奖,诺贝尔奖,对于我来说真的什么都不是。你觉得一个在
: 乎这些东西的人,会以优秀的成绩从清华,Cornell,Indiana三所大学退学吗?在漫长

t***t
发帖数: 6066
3
feel he got mental problem
j********x
发帖数: 2330
4
40行代码也不敢贴出来。。。
想起了哥德巴赫:
边角太小 写不下证明。。。
L***s
发帖数: 1148
5
http://github.com/yinwang0/lightsabers/blob/master/cps.ss

【在 j********x 的大作中提到】
: 40行代码也不敢贴出来。。。
: 想起了哥德巴赫:
: 边角太小 写不下证明。。。

b***e
发帖数: 1419
6
傻逼人那是费马. 你丫有文化么?

【在 j********x 的大作中提到】
: 40行代码也不敢贴出来。。。
: 想起了哥德巴赫:
: 边角太小 写不下证明。。。

k********4
发帖数: 858
7

lol

【在 b***e 的大作中提到】
: 傻逼人那是费马. 你丫有文化么?
d*******r
发帖数: 3299
8
LOL

【在 b***e 的大作中提到】
: 傻逼人那是费马. 你丫有文化么?
j********x
发帖数: 2330
9
是肥妈还是哥德巴赫没有区别
我只是举个例子
当然
根据你我以往的发帖记录
你肯定是张嘴喷屎
我也是逮着你的发帖挑错。。。
。。。
不过
我觉得你老婆孩子要受罪了
满嘴喷屎的人
周围的人受得了么?。。。
当然说到底也是我的错
当年就该插你妈的屁眼儿里的。。。

【在 b***e 的大作中提到】
: 傻逼人那是费马. 你丫有文化么?
b***e
发帖数: 1419
10
费马和哥德巴赫没区别?你妈逼你丫不识字连数也不识了?你举个例子证明你丫是傻逼
?OK你成功了。
要说你爸当年也跟我商量过,说那天就是明明射你妈屁眼里了你妈非说你丫是你爸的种
。我拍了拍大黄的脑袋笑而不语。说到你老婆,我倒是不担心。我三通你老婆的时候她
说受的罪都值得。你孩子?LOL,告诉你,你丫这种二逼青年是没有孩子的,即使有也
养不大,趁早割了吧。

【在 j********x 的大作中提到】
: 是肥妈还是哥德巴赫没有区别
: 我只是举个例子
: 当然
: 根据你我以往的发帖记录
: 你肯定是张嘴喷屎
: 我也是逮着你的发帖挑错。。。
: 。。。
: 不过
: 我觉得你老婆孩子要受罪了
: 满嘴喷屎的人

1 (共1页)
进入Programming版参与讨论
相关主题
重新捡起C++怎么上手?哪位大侠有如下书籍的电子版,或者下载地址,多谢
[bssd] Emacs/vim 花时间是值得的。C++0x
程序語言有兩種。读Bjarne Stroustrup写得The C++ programming language 是不是经常有不知所谓的感觉。
(zz)王垠:我和权威的故事(zz)C++11新特性
The untold truth about C++这么好的帖子没人转?
C++,大家觉得最值得买最想买最不后悔买的书是哪本?有必要开个c++版
VB, C++初学者清推荐书籍Bjarne Stroustrup C++第四版电子版出来了
c++ cast problem有人看了新版 1368页的 c++ programming language 吗
相关话题的讨论汇总
话题: friedman话题: 代码话题: 所以话题: b521话题: cps