智游城

标题: 请问 有没有 看懂Howard 的 "一个程序员的笑话" [打印本页]

作者: mattsX    时间: 2010-12-5 07:05
标题: 请问 有没有 看懂Howard 的 "一个程序员的笑话"
Howard 在 "一道纯概率题" 说的笑话:
回复 22# Howard

"老婆问为什么晚上睡觉前要放杯水在床头,程序员老公说我半夜醒来口渴了喝,老婆又问,那为什么还要再放一个空杯子呢?
老公答:万一醒来不渴呢?"

Some of my friends who are Ph D. and programmer can't get it.
作者: xlumulx    时间: 2010-12-5 09:08
程序员的思路,不管有用没有,先设上再说,防止死循环的。
作者: wangxiaoqing    时间: 2010-12-5 09:50
不是学计算机的,不过看了也会笑
作者: wode8888    时间: 2010-12-5 10:04
哈哈.........................
作者: 半路相遇    时间: 2010-12-5 10:06
哈哈,空杯大有用处,口不渴,尿急了
作者: 沙天马士    时间: 2010-12-5 11:03
哈哈,空杯大有用处,口不渴,尿急了
半路相遇 发表于 2010-12-5 10:06



    你更有创意
作者: colin    时间: 2010-12-5 11:57

作者: tomroad    时间: 2010-12-5 13:00
笑咗thanks
作者: yluulv    时间: 2010-12-5 13:03
没见好笑。
作者: Howard    时间: 2010-12-6 14:40
程序员处理异常情况的办法跟普通人不太一样,放个空杯子而且拿起来做个喝的动作,虽然正常人觉得太傻了,但是对于计算机来说却最自然不过。比方C++有一个类,当初设计的时候就是半夜起床就直接拿杯子喝水,那你要从这个类继承一个子类,这个东东就不好改了,而且改了有违类设计者的初衷,但是放个空杯子就能完美解决。
作者: mc07361810    时间: 2010-12-6 16:44
哈哈,空杯大有用处,口不渴,尿急了
半路相遇 发表于 2010-12-5 10:06

我认为你的答案才是正解
作者: mattsX    时间: 2010-12-7 04:00
回复 10# Howard
Howard 说的是 C++ 虚拟函数

通常程序员 处理  以下问题:
if (x == a)
    b = 1/2;
else
    b  = 0;

如果 不做 "b = 0", 会导致大问题.

但是程序员 搬它到日常生活:

如果半夜醒来口渴
    杯 有水
不然
    空杯
作者: RichZhu    时间: 2010-12-7 04:21
回复  Howard
但是程序员 搬它到日常生活:

如果半夜醒来口渴
    杯 有水
不然
    空杯
mattsX 发表于 2010-12-7 04:00


应该是:半夜醒来,按预定程序拿杯。
口渴,拿有水的杯子。
不口渴,拿没有水的杯子。
完美的程序。。。
作者: idle    时间: 2010-12-7 06:07
顶五楼的兄弟。
按五楼兄弟的思路,那这位程序员对异常情况处理的不完善呀。
半夜醒来,
口渴--》有水的杯子
不口渴--》没水的杯子
尿急??
作者: linjingping7122    时间: 2010-12-8 11:55
啊啊,有意思啊,一点都不懂计算机
作者: omylove    时间: 2010-12-8 13:02
应该是:半夜醒来,按预定程序拿杯。
口渴,拿有水的杯子。
不口渴,拿没有水的杯子。
完美的程序。。。 ...
RichZhu 发表于 2010-12-7 04:21


没错。。

喝水应该是一个行为(接口),至于实际执行什么看当时需要(分派),

i = 水杯 IF 口渴
i = 空杯 IF 不口渴
i.drink()

可扩展性太高了。以后还可以果汁,茶,咖啡等等。

还有我觉得放个空杯这个应该是结构设计而不是异常设计。

完美的程序。。。
作者: omylove    时间: 2010-12-8 13:07
回复 12# mattsX

更通常的应该是:
b  = 0;
if (x == a) b = 1/2;




欢迎光临 智游城 (http://zhiyoucheng.co/) Powered by Discuz! X3.2