由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 王垠的[40 行代码]: 普通琐男码工们都跪安吧! (转载)
相关主题
请教一个C++11的问题(设计blocking queue)read-write locker的实现
Java8 Lambda expression看不懂怎么办?请教一下那道H2O的题
从招人角度准备面试.求教三进程间同步的问题,原题是CC150第5版的16.5
C++ 一小题请教大牛用mutex lock实现reader writer lock
一道题碰到面试官水平太差看不懂答案怎么办?
multi-threading guru们G家二面彻底跪了~
nVidia phone interview (intern Infrastructure Arch)电面失败
C++ linux 线程面试题thread-safe blockingqueue
相关话题的讨论汇总
话题: lambda话题: cps话题: cps1话题: ctx话题: fact
进入JobHunting版参与讨论
1 (共1页)
s*****r
发帖数: 43070
1
【 以下文字转载自 Military 讨论区 】
发信人: wsnonline (卫所南次郎-哥们儿要火啦!), 信区: Military
标 题: 王垠的[40 行代码]: 普通琐男码工们都跪安吧!
发信站: BBS 未名空间站 (Thu May 19 01:59:08 2016, 美东)
https://www.zhihu.com/question/20822815
"我有什么资格说话呢?如果你要了解我的本事,真的很简单:我最精要的代码都放在
GitHub 上了。但是除非接受过专门的训练,你绝对不会理解它们的价值。你会很难想
象,这样一片普通人看起来像是玩具的 40 行 cps.ss 代码,融入了我一个星期的日日
夜夜的心血,数以几十计的推翻重写。这段代码,曾经耗费了一些顶尖专家十多年的研
究。一个教授告诉我,光是想看懂他们的论文就需要不止一个月。而它却被我在一个星
期之内闷头写出来了。我是在说大话吗?代码就摆在那里,自己去看看不就知道了。当
我死后,如果有人想要知道什么是我上半生最重要的“杰作”,也就是这 40 行代码了
。它蕴含的美,超越我给任何公司写的成千上万行的代码。"
有没有人来说说这个东西,我想知道他有没有说大话。
附代码:
;; A simple CPS transformer which does proper tail-call and does not
;; duplicate contexts for if-expressions.
;; author: Yin Wang ([email protected]/* */)
(load "pmatch.scm")
(define cps
(lambda (exp)
(letrec
([trivial? (lambda (x) (memq x '(zero? add1 sub1)))]
[id (lambda (v) v)]
[ctx0 (lambda (v) `(k ,v))] ; tail context
[fv (let ([n -1])
(lambda ()
(set! n (+ 1 n))
(string->symbol (string-append "v" (number->string n)))))]
[cps1
(lambda (exp ctx)
(pmatch exp
[,x (guard (not (pair? x))) (ctx x)]
[(if ,test ,conseq ,alt)
(cps1 test
(lambda (t)
(cond
[(memq ctx (list ctx0 id))
`(if ,t ,(cps1 conseq ctx) ,(cps1 alt ctx))]
[else
(let ([u (fv)])
`(let ([k (lambda (,u) ,(ctx u))])
(if ,t ,(cps1 conseq ctx0) ,(cps1 alt ctx0))))
])))]
[(lambda (,x) ,body)
(ctx `(lambda (,x k) ,(cps1 body ctx0)))]
[(,op ,a ,b)
(cps1 a (lambda (v1)
(cps1 b (lambda (v2)
(ctx `(,op ,v1 ,v2))))))]
[(,rator ,rand)
(cps1 rator
(lambda (r)
(cps1 rand
(lambda (d)
(cond
[(trivial? r) (ctx `(,r ,d))]
[(eq? ctx ctx0) `(,r ,d k)] ; tail call
[else
(let ([u (fv)])
`(,r ,d (lambda (,u) ,(ctx u))))])))))]))
])
(cps1 exp id))))
;;; tests
;; var
(cps 'x)
(cps '(lambda (x) x))
(cps '(lambda (x) (x 1)))
;; no lambda (will generate identity functions to return to the toplevel)
(cps '(if (f x) a b))
(cps '(if x (f a) b))
;; if stand-alone (tail)
(cps '(lambda (x) (if (f x) a b)))
;; if inside if-test (non-tail)
(cps '(lambda (x) (if (if x (f a) b) c d)))
;; both branches are trivial, should do some more optimizations
(cps '(lambda (x) (if (if x (zero? a) b) c d)))
;; if inside if-branch (tail)
(cps '(lambda (x) (if t (if x (f a) b) c)))
;; if inside if-branch, but again inside another if-test (non-tail)
(cps '(lambda (x) (if (if t (if x (f a) b) c) e w)))
;; if as operand (non-tail)
(cps '(lambda (x) (h (if x (f a) b))))
;; if as operator (non-tail)
(cps '(lambda (x) ((if x (f g) h) c)))
;; why we need more than two names
(cps '(((f a) (g b)) ((f c) (g d))))
;; factorial
(define fact-cps
(cps
'(lambda (n)
((lambda (fact)
((fact fact) n))
(lambda (fact)
(lambda (n)
(if (zero? n)
1
(* n ((fact fact) (sub1 n))))))))))
;; print out CPSed function
(pretty-print fact-cps)
;; =>
;; '(lambda (n k)
;; ((lambda (fact k) (fact fact (lambda (v0) (v0 n k))))
;; (lambda (fact k)
;; (k
;; (lambda (n k)
;; (if (zero? n)
;; (k 1)
;; (fact
;; fact
;; (lambda (v1) (v1 (sub1 n) (lambda (v2) (k (* n v2))))))))))
;; k))
((eval fact-cps) 5 (lambda (v) v))
;; => 120
n******6
发帖数: 1829
2
这代码不简单,很牛



【在 s*****r 的大作中提到】
: 【 以下文字转载自 Military 讨论区 】
: 发信人: wsnonline (卫所南次郎-哥们儿要火啦!), 信区: Military
: 标 题: 王垠的[40 行代码]: 普通琐男码工们都跪安吧!
: 发信站: BBS 未名空间站 (Thu May 19 01:59:08 2016, 美东)
: https://www.zhihu.com/question/20822815
: "我有什么资格说话呢?如果你要了解我的本事,真的很简单:我最精要的代码都放在
: GitHub 上了。但是除非接受过专门的训练,你绝对不会理解它们的价值。你会很难想
: 象,这样一片普通人看起来像是玩具的 40 行 cps.ss 代码,融入了我一个星期的日日
: 夜夜的心血,数以几十计的推翻重写。这段代码,曾经耗费了一些顶尖专家十多年的研
: 究。一个教授告诉我,光是想看懂他们的论文就需要不止一个月。而它却被我在一个星

s*****r
发帖数: 43070
3
感觉秒杀一大半GF码农没问题
人家狂确实有资本,追求最美的代码

【在 n******6 的大作中提到】
: 这代码不简单,很牛
:
: 在

g***j
发帖数: 1275
4
好的程序员不等于可以做好的产品,也不等于好的员工。就像某块木材很好,但是有的
木材成了梁,有的成了船,有的成了器具,而他还一直是快很不错的木材,并一直沾沾
自喜我是一块很好的木材。
我的理解是,他也许成材了,但是没有成器。

【在 s*****r 的大作中提到】
: 感觉秒杀一大半GF码农没问题
: 人家狂确实有资本,追求最美的代码

w***t
发帖数: 1474
5
想证明是不是牛逼拿去投jane street就知道了。
j******o
发帖数: 4219
6
你代码写出花来没产品也是没鸟用,索南一直沉浸在技的圈子里自嗨。
w***t
发帖数: 1474
7
这哥们现在就是在网上造势,等自己成了网红说不定哪天就被哪个不明真相的公司或投
资人当成大哥请走了。现在知乎微博上这种人很多,就看能不能把自己炒红。王垠在吸
引眼球方面so far so good,只是偶尔出来一两个sb言论给自己减分不少,当然说不定
是他故意的。

【在 j******o 的大作中提到】
: 你代码写出花来没产品也是没鸟用,索南一直沉浸在技的圈子里自嗨。
j**********r
发帖数: 3798
8
我老不懂编程语言,就问几个问题。这40行代码成为啥系统的核心代码,挣了多少钱没
有?
如果没有,但是学术上很牛逼,那么发在什么peer review的论文上没有?
如果都没有,那不就是然并卵。同样的东西找个做compiler的博士生几天就给做了,是
40行还是4000行有区别吗?程序是用来跑的,不是用来比短的。
业界看钱,学界看论文。都没有的跟孔乙己show off会写四种回字一个性质。
g***j
发帖数: 1275
9
完全同意

【在 j**********r 的大作中提到】
: 我老不懂编程语言,就问几个问题。这40行代码成为啥系统的核心代码,挣了多少钱没
: 有?
: 如果没有,但是学术上很牛逼,那么发在什么peer review的论文上没有?
: 如果都没有,那不就是然并卵。同样的东西找个做compiler的博士生几天就给做了,是
: 40行还是4000行有区别吗?程序是用来跑的,不是用来比短的。
: 业界看钱,学界看论文。都没有的跟孔乙己show off会写四种回字一个性质。

n****e
发帖数: 2401
10
你要是在我这里“数以几十计的推翻重写”,信不信老子当场要你滚蛋。



【在 s*****r 的大作中提到】
: 感觉秒杀一大半GF码农没问题
: 人家狂确实有资本,追求最美的代码

相关主题
multi-threading guru们read-write locker的实现
nVidia phone interview (intern Infrastructure Arch)请教一下那道H2O的题
C++ linux 线程面试题求教三进程间同步的问题,原题是CC150第5版的16.5
进入JobHunting版参与讨论
b**********5
发帖数: 7881
11
你是不是舔你妈身上的黑人的精液, 舔的脑子烂掉了。。。 你有资格叫人滚蛋么?!
你自己也就一打工的...

【在 n****e 的大作中提到】
: 你要是在我这里“数以几十计的推翻重写”,信不信老子当场要你滚蛋。
:
: 在

c********w
发帖数: 308
12
别再转这比的文章了 崇拜他回去找他好了
c****e
发帖数: 60
13
谢谢分享。 也许有人能从这码中找到用途。 几年前我就是靠一同事的一行程序赚了近
半米。
f******o
发帖数: 1505
14
什么几把玩意,这么嗨。行为艺术吧。
难怪混不下去。
g*c
发帖数: 4510
15
这个傻逼制造了太多的噪音了
t******4
发帖数: 134
16
这代码过不了任何code review吧

:【 以下文字转载自 Military 讨论区 】
https://www.zhihu.com/question/20822815
:"我有什么资格说话呢?如果你要了解我的本事,真的很简单:我最精要的代码
都放在 GitHub 上了。但是除非接受过专门的训练,你绝对不会理解它们的价值。你会
很难想
:象,这样一片普通人看起来像是玩具的 40 行 cps.ss 代码,融入了我一个星期的日
日夜夜的心血,数以几十计的推翻重写。这段代码,曾经耗费了一些顶尖专家十多年的
研究。一个教授告诉我,光是想看懂他们的论文就需要不止一个月。而它却被我在一个
星期之内闷头写出来了。我是在说大话吗?代码就摆在那里,自己去看看不就知道了。
当我死后,如果有人想要知道什么是我上半生最重要的“杰作”,也就是这 40 行代码
了。它蕴含的美,超越我给任何公司写的成千上万行的代码。"
:有没有人来说说这个东西,我想知道他有没有说大话。
:附代码:
:;; A simple CPS transformer which does proper tail-call and does not
:;; duplicate contexts for if-expressions.
:;; author: Yin Wang ([email protected]/* */)
:(load "pmatch.scm")
:..........

【在 s*****r 的大作中提到】
: 感觉秒杀一大半GF码农没问题
: 人家狂确实有资本,追求最美的代码

f******o
发帖数: 1505
17
这人的人生观有问题,质疑他否定他的一律都是傻逼,自己写的垃圾就当个宝。
其实这样的 bias 每个人都多多少少有一点,只不过一般人没他这么挫,多试几次总能
混到个不错的地方,也就不再继续悲愤了。
r****s
发帖数: 1025
18
首先这应该有pseudo-code,然后才是代码,仅仅表示pseudo-code可实现,而已。
AND HOW THE FUCK DOES ANYONE DEBUG THIS SHIT?
c********d
发帖数: 11593
19
人家说了,未经许可乱debug他的代码是不尊重的行为。
http://www.yinwang.org/blog-cn/2015/03/03/how-to-respect-a-prog

【在 r****s 的大作中提到】
: 首先这应该有pseudo-code,然后才是代码,仅仅表示pseudo-code可实现,而已。
: AND HOW THE FUCK DOES ANYONE DEBUG THIS SHIT?

n******u
发帖数: 4271
20
这个什么王银的确除了制造点噪音也没什么其他的用处了
c********e
发帖数: 2726
21
当艺术品收藏了!mark, mark, mark
e*******o
发帖数: 2271
22
妈蛋写这么多不就是个call-back吗……瞎鸡巴整
1 (共1页)
进入JobHunting版参与讨论
相关主题
thread-safe blockingqueue一道题
一道不知道要考察什么的面试题multi-threading guru们
My company dosen't sponsor H1BnVidia phone interview (intern Infrastructure Arch)
一个多线程的题目,这个写法可以过关么C++ linux 线程面试题
请教一个C++11的问题(设计blocking queue)read-write locker的实现
Java8 Lambda expression看不懂怎么办?请教一下那道H2O的题
从招人角度准备面试.求教三进程间同步的问题,原题是CC150第5版的16.5
C++ 一小题请教大牛用mutex lock实现reader writer lock
相关话题的讨论汇总
话题: lambda话题: cps话题: cps1话题: ctx话题: fact