BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / joke / #696528同步于 2015/1/30
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Joke机器人发帖

[码农向]从前有一个伐木工……第二季,直播

nuanyangyang
2015/1/30镜像同步18 回复
没看过第一季的看这里:http://bbs.byr.cn/article/Joke/696463 手机用户看这里:http://m.byr.cn/article/Joke/696463 ======== 一个妹纸最近黄瓜消耗得太快。她的闺蜜向她推荐了一款按摩棒,说用它按摩特别舒服。那天晚上,闺蜜不小心偷看到她在拿着按摩棒手动地运动。于是急不可耐地告诉她,你造吗,给它装一个电池,打开开关,它会自己震动。妹纸说,酱紫啊,我习惯了…… ======== 从前有一个BASIC程序员,他写的程序看上去是这样子的。 5 REM Rocket launching simulator 10 PRINT "Input a number:" 20 INPUT n% 30 PRINT "Counting down..." 40 i% = n% 50 PRINT i% 60 i% = i% - 1 70 IF i% > 0 THEN GOTO 50 80 PRINT "Launch!" 90 END 当他的朋友嘲笑他,说BASIC的风格很烂他就开始学C语言了。然后,第二天,他的朋友看到他的代码如下: /* Rocket launching simulator */ main() { int i, n; printf("Input a number:"); scanf("%d", &n); printf("Counting down..."); i = n; nexti: printf("%d\n", i); i--; if (i > 0) goto nexti; printf("Launch!\n") exit(0); } 朋友好奇,问:你知道C语言有for循环吗?比goto好看多了,你明明可以这样写的: for (i=n; i>=0; i--) { printf("%d\n", i); } 他回答:这……for循环太不直观了,还是goto好,习惯了。 =========== 一个c程序员如此写冒泡排序程序: void bubble_sort(int ar[], int sz) { int rbound, cur; for (rbound = sz-2; rbound >= 0; rbound--) { for (cur = 0; cur < rbound; cur++) { if (ar[cur] > ar[cur+1]) { int tmp = ar[cur]; ar[cur] = ar[cur+1]; ar[cur+1] = tmp; } } } } 后来,他的朋友向他介绍了优雅的Python语言,他高兴得写了一个Python程序: def bubble_sort(lst): for rbound in range(len(lst)-2, -1, -1): for cur in range(rbound): if lst[cur] > lst[cur+1]: tmp = lst[cur] lst[cur] = lst[cur+1] lst[cur+1] = tmp 他的朋友对他说:你知道Python有“多重赋值”吗?有人跟你展示过a,b=b,a这样的写法吗?你的程序可以这样写的: ... lst[cur], lst[cur+1] = lst[cur+1], lst[cur] ... 他说:这……习惯了。 好孩子不要学哦。Python的list有sort方法的。是稳定的O(n*log(n))的算法。 ==== 有一个Haskell程序员,习惯于写没有副作用的函数式数据结构。比如,这是他写的斐波那契数列程序: fibs = 0:1:zipWith (+) fibs (tail fibs) -- Comment: fibs == [0,1,1,2,3,5,8,13,21,34,55,...] 后来他的同事让他用C++写一个。他这样写: #include <iostream> struct StreamNode { virtual int eval()=0; virtual StreamNode* next()=0; }; struct InitNode : public StreamNode { int num; StreamNode* nxt; InitNode(int _num):num(_num){} int eval() { return num; } StreamNode* next() { return nxt; } }; struct ZipNode : public StreamNode { bool evaluated; int cacheVal; bool nexted; StreamNode *cacheNext; StreamNode *br1, *br2; ZipNode(StreamNode *_br1, StreamNode *_br2):br1(_br1),br2(_br2),evaluated(false),nexted(false) {} int eval() { if (!evaluated) { evaluated = true; cacheVal = br1->eval() + br2->eval(); } return cacheVal; } StreamNode* next() { if (!nexted) { nexted = true; cacheNext = new ZipNode(br1->next(), br2->next()); } return cacheNext; } }; using namespace std; int main() { InitNode *zeroNode = new InitNode(0); InitNode *oneNode = new InitNode(1); ZipNode *zipNode = new ZipNode(zeroNode, oneNode); zeroNode->nxt = oneNode; oneNode->nxt = zipNode; StreamNode *fibs = zeroNode; int i; StreamNode *curNode = fibs; for(i=0; i<10; i++) { int v = curNode->eval(); cout<<v<<endl; curNode = curNode->next(); } return 0; } /* 输出: 0 1 1 2 3 5 8 13 21 34 */ 朋友说:Haskell的惰性求值果然好用。(啊?你竟然看懂了?)可是,内存泄漏了啊,C++没有垃圾回收的。(好像吐槽的地方不对吧…… Haskell程序员说:习惯了……你还是用boehm gc凑合一下吧。(其实,生成的fibs就是一个单链表,从前往后按顺序删除一下就可以了) (待续)
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
huzezhong机器人#1 · 2015/1/30
暖神求不炫耀智商
WTF机器人#2 · 2015/1/30
duoe机器人#3 · 2015/1/30
是我笑点高么
Chon机器人#4 · 2015/1/31
好孩子不要学哦
zmfa机器人#5 · 2015/2/1
前排耶。
W1039766642机器人#6 · 2015/2/1
前排
perdaiz机器人#7 · 2015/2/1
哈哈哈哈。还是看不懂。 来自「北邮人论坛手机版」
Ncer机器人#8 · 2015/2/1
感觉黄瓜还是比较好笑的 通过『我邮2.0』发布
melot机器人#9 · 2015/2/2
同觉得黄瓜好笑