王垠系列博文(题名外挂URL)

暂且收集了一些链接博文(好水.gif),之后会码成文档。。。

夜宵感悟:才华有,文笔不错,码的码(就留给你们去评了),真心推荐大家看看这些文章,赞不赞同另说!

纵观全局

1、【40行代码】;2、【清华梦的粉碎】;3、【我与Google的故事】;4、Braid—一个发人深思的游戏

5、【对博士学位说永别】;6、【如何掌握程序语言】;7、【完全用Linux工作】;9、【Cornell的感受】

8、【写给支持和反对《完全用Linux工作》的人们】;10、【从工具的奴隶到工具的主人】;11、【我看PhD】

12、【学术腐败是历史的必然】;13、【王垠的过去与现状】;14、一个王垠同学对王垠从清华退学的感受 —— 至于为什么放在最后,END见。

王垠.jpg

1、王垠【40行代码】 上半生最重要的杰作,闷头一个星期写出来。

附代码与他人评论(没几个洞的):https://www.zhihu.com/question/20822815/

2、【清华梦的粉碎】——写给清华大学的退学申请

http://blog.csdn.net/vc2014/article/details/41945379

3、【我与Google的故事】

http://blog.csdn.net/vc2014/article/details/41945435

4、Braid—一个发人深思的游戏

博文:http://blog.csdn.net/unsv29/article/details/50473854

Braid(时空幻境):http://braid-game.com/

5、【对博士学位说永别】

http://blog.csdn.net/vc2014/article/details/41945483

开源中国社区,文章后面跟评了很多有趣的话:https://www.oschina.net/news/32707/say-goodbye-to-doctor

6、【如何掌握程序语言】

http://blog.csdn.net/vc2014/article/details/41945685

7、【完全用Linux工作】

背景shai是亮黑(慎入),黑脸问为什么要贴出了,因为它排版好啊:

http://blog.sina.com.cn/s/blog_b83bda47010197if.html

背景正常,排版lowB(不针对贴字作者):

http://blog.csdn.net/wooin/article/details/651085

8、【写给支持和反对《完全用Linux工作》的人们】

里面王垠个人url已失效:http://yinwang0.lofter.com/post/183ec2_479bfc

9、【Cornell的感受】

http://bbs.sciencenet.cn/forum.php?mod=viewthread&tid=6505

10、【从工具的奴隶到工具的主人】

送给学Code的人:http://www.csdn.net/article/2012-09-12/2809847

11、【我看PhD】

http://www.xuebuyuan.com/2156262.html

12、【学术腐败是历史的必然】

http://www.360doc.com/content/16/0416/13/11409172_551092622.shtml

13、【王垠的过去与现状】

里面很多url都失效:https://www.cnblogs.com/zjoch/p/5148305.html

14、一个王垠同学对王垠从清华退学的感受 —— 至于为什么放在最后,END 见。

在【14】的url中文章最后已有(排版等好点):https://club.kdnet.net/dispbbs.asp?boardid=1&id=11045056

亚里士多德在《形而上学》中的第一句话是:“每一个人在本性上都想求知。

分割Line----……!*7?……“”“”…******¥%¥#@¥%&&*……*()*……----……!*7?……“”“”…******¥%¥#@

  1 ;; A simple CPS transformer which does proper tail-call and does not
  2 ;; duplicate contexts for if-expressions.
  3
  4 ;; author: Yin Wang ([email protected])
  5
  6 (load "pmatch.scm")
  7
  8 (define cps
  9   (lambda (exp)
 10     (letrec
 11         ([trivial? (lambda (x) (memq x ‘(zero? add1 sub1)))]
 12          [id (lambda (v) v)]
 13          [ctx0 (lambda (v) `(k ,v))]      ; tail context
 14          [fv (let ([n -1])
 15                (lambda ()
 16                  (set! n (+ 1 n))
 17                  (string->symbol (string-append "v" (number->string n)))))]
 18          [cps1
 19           (lambda (exp ctx)
 20             (pmatch exp
 21               [,x (guard (not (pair? x))) (ctx x)]
 22               [(if ,test ,conseq ,alt)
 23                (cps1 test
 24                      (lambda (t)
 25                        (cond
 26                         [(memq ctx (list ctx0 id))
 27                          `(if ,t ,(cps1 conseq ctx) ,(cps1 alt ctx))]
 28                         [else
 29                          (let ([u (fv)])
 30                            `(let ([k (lambda (,u) ,(ctx u))])
 31                               (if ,t ,(cps1 conseq ctx0) ,(cps1 alt ctx0))))])))]
 32               [(lambda (,x) ,body)
 33                (ctx `(lambda (,x k) ,(cps1 body ctx0)))]
 34               [(,op ,a ,b)
 35                (cps1 a (lambda (v1)
 36                          (cps1 b (lambda (v2)
 37                                    (ctx `(,op ,v1 ,v2))))))]
 38               [(,rator ,rand)
 39                (cps1 rator
 40                      (lambda (r)
 41                        (cps1 rand
 42                              (lambda (d)
 43                                (cond
 44                                 [(trivial? r) (ctx `(,r ,d))]
 45                                 [(eq? ctx ctx0) `(,r ,d k)]  ; tail call
 46                                 [else
 47                                  (let ([u (fv)])
 48                                    `(,r ,d (lambda (,u) ,(ctx u))))])))))]))])
 49       (cps1 exp id))))
 50
 51 ;;; tests
 52
 53 ;; var
 54 (cps ‘x)
 55 (cps ‘(lambda (x) x))
 56 (cps ‘(lambda (x) (x 1)))
 57
 58 ;; no lambda (will generate identity functions to return to the toplevel)
 59 (cps ‘(if (f x) a b))
 60 (cps ‘(if x (f a) b))
 61
 62 ;; if stand-alone (tail)
 63 (cps ‘(lambda (x) (if (f x) a b)))
 64
 65 ;; if inside if-test (non-tail)
 66 (cps ‘(lambda (x) (if (if x (f a) b) c d)))
 67
 68 ;; both branches are trivial, should do some more optimizations
 69 (cps ‘(lambda (x) (if (if x (zero? a) b) c d)))
 70
 71 ;; if inside if-branch (tail)
 72 (cps ‘(lambda (x) (if t (if x (f a) b) c)))
 73
 74 ;; if inside if-branch, but again inside another if-test (non-tail)
 75 (cps ‘(lambda (x) (if (if t (if x (f a) b) c) e w)))
 76
 77 ;; if as operand (non-tail)
 78 (cps ‘(lambda (x) (h (if x (f a) b))))
 79
 80 ;; if as operator (non-tail)
 81 (cps ‘(lambda (x) ((if x (f g) h) c)))
 82
 83 ;; why we need more than two names
 84 (cps ‘(((f a) (g b)) ((f c) (g d))))
 85
 86 ;; factorial
 87 (define fact-cps
 88   (cps
 89    ‘(lambda (n)
 90       ((lambda (fact)
 91          ((fact fact) n))
 92        (lambda (fact)
 93          (lambda (n)
 94            (if (zero? n)
 95                1
 96                (* n ((fact fact) (sub1 n))))))))))
 97
 98 ;; print out CPSed function
 99 (pretty-print fact-cps)
100 ;; =>
101 ;; ‘(lambda (n k)
102 ;;    ((lambda (fact k) (fact fact (lambda (v0) (v0 n k))))
103 ;;     (lambda (fact k)
104 ;;       (k
105 ;;        (lambda (n k)
106 ;;          (if (zero? n)
107 ;;            (k 1)
108 ;;            (fact
109 ;;             fact
110 ;;             (lambda (v1) (v1 (sub1 n) (lambda (v2) (k (* n v2))))))))))
111 ;;     k))
112
113 ((eval fact-cps) 5 (lambda (v) v))
114 ;; => 120

原文地址:https://www.cnblogs.com/fyf-shou/p/daytime_stillness.html

时间: 2024-08-02 00:56:27

王垠系列博文(题名外挂URL)的相关文章

王垠:完全用Linux工作 - imsoft.cnblogs

完全用Linux工作,抛弃windows 我已经半年没有使用 Windows 的方式工作了.Linux 高效的完成了我所有的工作. GNU/Linux 不是每个人都想用的.如果你只需要处理一般的事务,打游戏,那么你不需要了解下面这些了. 我不是一个狂热的自由软件份子,虽然我很喜欢自由软件.这篇文章也不是用来推行自由软件运动的,虽然我觉得自由软件运动是非常好的. 这篇文章也不是用来比较 Linux 和 Windows 内核效率,文件系统,网络服务的.我现在是作为一个用户而不是一个开发者来说话的,我

王垠~~转载

希望他能踏踏实实 做个几年  做出成果 世界 需要  改变 但是不需要 很急躁的改变 清华梦的诞生  http://blog.sina.com.cn/s/blog_6749d9540100m1oy.html 小时候,妈妈给我一个梦.她指着一个大哥哥的照片对我说,这是爸爸的学生,他考上了清华大学,他是我们中学的骄傲.长大后,你也要进入清华大学读书,为我们家争光.我不知道清华是什么样子,但是我知道爱迪生和牛顿的故事.清华,大概就是可以把我造就成他们这种人的地方吧.我幼小的脑海里就想象出我能在清华做的

[转]王垠的过去和现状

王垠的过去和现状 我曾在2006年冬季接触到王垠的三篇文章:<完全用linux工作>.<写给支持和反对<完全用Linux工作>的人们>.<清华梦的粉碎--写给清华大学的退学申请>,今天巧合又再次读遍,于是决定把我知道关于王垠的信息总结一下. 1. 从清华退学 王垠是高考发挥失常进入四川大学计算机系97级(据此推测他是79.80生人):2001年直接保送到清华大学计算机系软件所硕博连读,主要进行集成电路布线算法的研究. 2004年8月左右[1],王垠完成了&l

转:《完全用Linux工作》作者:王垠

<完全用Linux工作>作者:王垠 完全用 GNU/Linux 工作 理解 GNU/Linux 注:本文是清华“牛仔”王垠的“成名作”,在网上引起很大的争议.对他崇拜地五体投地者有,对他嗤之以鼻者也有,总之成了一年多以前Linux 爱好者的圈子里的一个很有意思的现象.之后他对这篇文章进行了很大的修改,已经没有了原来那种意气风发.现存的版本如白开水一般无味,请参见:http://learn.tsinghua.edu.cn/homepage/2001315450/ 尽管他原来的观点有所偏激,但我还

完全用Linux工作-王垠

前言,一段正经的屁话: 这篇文章已经被奉为经典,反复传颂.毫无疑问,当我这样毛头小子遇到这样的感情强烈,立场分明的文章,要是能再带上一点高大上.处处散发着为我等吊丝着想的品质,我等就会感激涕零,仅仅追随.即时已经过去很多年,似乎有的人已经对此默然,即使仍有万千呲之以鼻者,但我等还是找着了方向似的,励志效忠于此. 今日贴下此文,要经常查看,作为信徒,让Linux根深蒂固. 正文部分: 完全用Linux工作,抛弃windows 我已经半年没有使用 Windows 的方式工作了.Linux 高效的完成

王垠:对博士学位说永别

本文作者:王垠,四川大学97级本科毕业,保送到清华大学计算机系直博.期间曾在清华大学计算机系软件所就读,主要进行集成电路布线算法的研究.在此期间,他因<完全用GNU/Linux工作>一文和对TeX的推广等“非研究成果的业余东西”而出名. 在只剩一年就要博士毕业的时候,他申请退学,并将1万7千余字的“退学申请书”(题为清华梦的粉碎)公布在网上,引起舆论界一时对教育体制.理想主义等的热议. 下面是王垠的博客全文: 经过深思熟虑之后,我决定再次“抛弃”我的博士学位.这是我第三次决定离开博士学位,也应

王垠:如何掌握所有的程序语言

来自:王垠的博客 链接:www.yinwang.org/blog-cn/2017/07/06/master-pl 对的,我这里要讲的不是如何掌握一种程序语言,而是所有的…… 很多编程初学者至今还在给我写信请教,问我该学习什么程序语言,怎么学习.由于我知道如何掌握“所有”的程序语言,总是感觉这种该学“一种”什么语言的问题比较低级,所以一直没来得及回复他们 :P 可是逐渐的, 我发现原来不只是小白们有这个问题,就连美国大公司的很多资深工程师,其实也没搞明白. 今天我有动力了,想来统一回答一下这个搁置

王垠代表作《完全用Linux工作》

<完全用Linux工作>作者:王垠 完全用 GNU/Linux 工作 理解 GNU/Linux 更多精彩请直接访问SkySeraph个人站点:www.skyseraph.com 注:本文是清华"牛仔"王垠的"成名作",在网上引起很大的争议.对他崇拜地五体投地者有,对他嗤之以鼻者也有,总之成了一年多以前Linux 爱好者的圈子里的一个很有意思的现象.之后他对这篇文章进行了很大的修改,已经没有了原来那种意气风发.现存的版本如白开水一般无味,请参见:http:

王垠:如何掌握程序语言(转)

王垠:如何掌握程序语言 学习程序语言是每个程序员的必经之路.可是这个世界上有太多的程序语言,每一种都号称具有最新的“特性”.所以程序员的苦恼就在于总是需要学习各种稀奇古怪的语言,而且必须紧跟“潮流”,否则就怕被时代所淘汰. 学习程序语言是每个程序员的必经之路.可是这个世界上有太多的程序语言,每一种都号称具有最新的“特性”.所以程序员的苦恼就在于总是需要学习各种稀奇古怪的语言,而且必须紧跟“潮流”,否则就怕被时代所淘汰. 作为一个程序语言的研究者,我深深的知道这种心理产生的根源.程序语言里面其实有