Thursday, December 17, 2009

/\13y3$-|-

其实我一直认为搞计算机的, 特别是那种顶级黑客, 骨子里都是有一种狂放不羁, 玩世不恭的态度的, 带着一些Hacker特有的幽默. 让我们来欣赏其中的一些吧.

0xDEADBEEF: 乍一看, 这只是一个普通的十六进制数, 但你再仔细看看那几个十六进制字母, 是否恍然大悟? 不要小看这样一个数字, 它可是有特殊用途的. 在早期的IBM RS/6000系列电脑里, 如果在内存中新分配了一块地址, 那这块地址中就全部使用"0xDEADBEEF"填充, 这样做可以很好地防止"heisenbug" (这个有趣的bug后面还会讲到) 的出现. 类似于这样的用法还有很多, 统称"Hexspeak", 也就是用十六进制来表示英语单词, 仅有的六个字母肯定不够用, 于是又用数字"0"来表示"O", "1"表示"I" (i的大写形式), "5"表示"S", "6"或者"9"表示"G"或者"g". 这种通过替换英文字母来表示的行为在网上很是流行, 术语叫做"leet", Google也有一个全部使用leet字母显示的神秘主页, 欢迎围观. 有关"0xDEADBEEF"的更多信息可以阅读Raymond的介绍.

heisenbug: 这名字很眼熟对吧? 其实从前有一个量子物理学家叫做Heisenberg... 噢, 这群人居然都敢开物理学家的玩笑了. 其实不然, 这个名字主要还是源于Heisenberg Uncertainty Principle (海森堡测不准原理), 这不禁让我想到高中时马老那闪烁着智慧光芒的眼镜. "heisenbug"用于描述那些当你试图去了解、探查时莫名消失或者改变的计算机软件bug, 在C语言中, 十有八九"heisenbug"都是由于未初始化的变量引起的.

Bohr bug: 这同样是来自于物理学, 不过这次是原子物理. "Bohr bug"是"heisenbug"的反义词, 这种bug很稳定, 不会到处乱跑, 不过通常也隐藏得比较深, 不容易被发现, 典型的是"缓冲区溢出".

schroedinbug: 还是物理学, 我几乎怀疑计算机学是否是由物理学家开创的. 这个bug源于著名的量子物理学实验: Schrödinger's cat (薛定谔的猫), 具体内容我就不细说了, 详情参见《The Big Bang Theory》第一季17集由Dr. Sheldon带来的权威解释, :) "schroedinbug"是一个神奇的bug, 它只会在你查看源代码或者在特定条件下运行程序时才会出现, 真够纠结的, 但这种bug的的确确是存在的.

还有很多这样的非常规bug, Wikipedia上有详细介绍. 无论怎样, Hacker绝对是这个世界上很有趣的一群动物之一.

No comments:

Post a Comment