星期日, 十二月 03, 2006

Hang 机的问题

用电脑最讨厌的问题,恐怕“hang”机是其中一项吧?尤其是 Windows,嘿嘿。或许我们会问,Windows 是不是可以在执行一个 program 之前,先检查一下它会不会 hang?答案是,没有可能。即使你那架电脑速度多快,容量多大也好,不能。

这个问题,一般称为 Halting problem,是一个被证实无法做到的难题,就像你无法把 π 写完一样。要证明这一点可不是容易的。通常用的是一个叫 diagonalization 的绝招(注:不是 matrix 的 diagonalization)。这是数学以及电脑科学界里其中最为人津津乐道的绝世好招。而这一招的创始人是19世纪数学天才 Cantor。

这招起先是用来证明为何实数(real)和分数同样无限多,却比分数多这个问题的。用分数,要多精确都行,但分数只和整数同样多。可以证明实数的确比较“多”,这本身已是数学界的一大成就了。

Cantor 这个人在世时并未过的很好。他所有的成就都是革命性的,当时批评他的数学家多得很。而他也像同时代的艺术家 Van Gogh 一样,患精神病的。晚年凄凉。这,莫非是革命的代价?

11 Comments:

Anonymous 匿名 said...

晓峰,你说来说去我还是不明白,为什么会hang机?

7:26 下午  
Blogger apalalu said...

盈盈,要了解hang机,首先要探讨是谁发明了hang这个字?不过他发明是应该没想过这个字会这么“普及化”,这么“全球化”。:)):))

8:29 下午  
Blogger SH said...

Hang 机最简单的例子是当一个程序由于逻辑问题或其他原因而进入一个 infinite loop,也就是说它将会没完没了的执行下去不能停止了。这通常也意味着它无法再正常地接受使用者的指令了。在 Windows 最常见的是 “Program Not Responding”。这种情况你可以继续等待,或把程序给“end task”掉。万一当 Windows 本身也 hang 时,那么就只好 reboot 啦 :)

3:09 上午  
Blogger zhaofu said...

但,为什么会进入 infinite loop 呢??是否每个 OS 都会这样?

9:36 上午  
Blogger SH said...

Infinite loop 只是一个例子,其它情形比如 deadlock (A等B,B等A ……)之类也很常见。这些通常是 programmer 的错,什么 OS 都会发生的。疑,照富,你不是 CS 毕业的么?

1:40 下午  
Blogger zhaofu said...

是侯!只是一时忘记而已嘛... ;p

5:32 下午  
Blogger JA said...

为何高手都要患精神病?

10:47 上午  
Blogger SH said...

为何患精神病的都是高手?

11:42 上午  
Anonymous 匿名 said...

老天,你们这些人不是太炫耀了吗?个个开口闭口全是专业术语。有点儿顶不顺喔!(︿︿)

11:56 上午  
Blogger SH said...

盈盈,怎会有这种想法呢,什么地方用词不当请指教哦……只是,看我的 LINKS 一半以上都是 IT 界人士,体谅一下啦 :)

1:35 上午  
Anonymous 匿名 said...

把一个“正常人”放到一堆“精神病患者”中,那个“正常人”还正常吗?

12:16 下午  

发表评论

<< Home