书城计算机黑客
2816200000009

第9章 黑客道德(2)

十进制打印程序就是如此。这是一个子例程(是程序中的一个小程序,你可以在某些情况下将其集成至许多不同的程序中),用来把计算机生成的二进制数字转换成常规的十进制数字。用桑德斯的话来说,这个问题“在编程中不值一提——如果你可以编写能够正常工作的十进制打印例程,只能说明你对计算机有了一些了解,勉强称得上是程序员”。而如果你编写出了非常棒的十进制打印例程,那么你也许可以称自己为黑客。十进制打印例程的终极压缩版则不仅仅带有竞争的意味,它更是黑客心目中的圣杯。

各个版本的十进制打印例程已经出现了好几个月了。如果你故意装作不知道,或者你真的是一个笨蛋(不折不扣的“失败者”),那么你可能要用100条指令让计算机将机器语言转换为十进制。但是,任何级别的黑客都会用更少的指令来实现,最终,通过充分利用各种程序、在各个地方压缩指令,这个例程会缩减到50条左右的指令。

在这之后,黑客们越来越苛求这种优化。他们会花费很多时间来寻求一种用更少的代码来实现同一个功能的途径。这不仅仅是竞赛了,它是一种追求。不管付出了多少努力,似乎没有人能够突破50行的瓶颈。问题开始产生了,用更少的代码实现这个功能是否真的可行呢?是不是程序到一个点之后就无法再继续压缩了呢?

深受这一难题困扰的包括一个名叫简森的高个小伙子,他是来自缅因州的黑客,沉默寡言,可以安静地坐在Kluge Room中,拿着打印材料写写画画。简森总是寻找各种方式来提高自己程序的运行速度并压缩占用空间——他的代码完全是混合着布尔和算术函数的奇怪序列组合,通常可以在同一个18位“字”的不同部分运行若干个不同的计算。这令人吃惊,就像是神奇的特技。

在简森出现之前,黑客们曾普遍认为,十进制打印例程的唯一逻辑算法是让计算机重复进行减法,并使用一个10的乘方表将数字存储在适当的数字列中。而简森则发现,10的乘方表其实并不是必需的。他想出了一个算法,可以按倒序转换数字,但能够通过一些数字技巧将它们按正确的顺序打印出来。这里面包含了复杂的数学论证,直到简森将程序公布在布告板上,其他黑客才明白其中的道理。简森这一举动是在告诉大家他已经将十进制打印例程压缩至极致了——46条指令。人们会张大嘴巴,目不转睛地看着这段代码。玛吉。桑德斯回忆说,黑客们在之后的几天内都异常沉默。

“我们知道这是终点了,”鲍勃.桑德斯之后说道,“这就是涅槃。”

计算机可以让你的生活更美好。

这是黑客的信念,他们的行为微妙地体现出了这一信念。黑客很少试图将“计算机具有神奇力量”这种观点强加给外行人。但是,这个信念主导了TX-0黑客以及在他们之后各代黑客的日常行为。

计算机显然改变了他们的生活,丰富了他们的生活,并且成为他们生活的重心,令他们的生活充满冒险。计算机让他们主宰了自己的一部分命运。彼得.萨姆森后来说:“我们做黑客有25%~30%是因为我们想这么做,因为这是我们能做且能做好的事情,而有60%是为了给我们的子孙后代留下一些在我们离开后依然可以独立存在的东西。这就是编程的美妙之处,它有着神奇的吸引力……一旦你修复了某个(计算机或程序的)行为问题,它就会永远处于修复完成的状态,这恰恰反映出了你的意思。”

就像阿拉丁神灯,你可以让它听从你的召唤。

毫无疑问,每个人都可以体验这种能量并从中受益。毫无疑问,每个人都可以生活在构建于黑客道德之上的世界中并从中受益。这是黑客绝对的信念,他们坚定地扩展了传统观点对于计算机可以做什么和应该做什么的看法——引导整个世界以一种新的方式看待计算机并与其交互。

这并不容易实现。即使是在MIT这样的高等学府中,仍然会有一些教授认为对计算机近乎疯狂的迷恋是愚蠢的,甚至是精神错乱的。TMRC的黑客鲍勃。瓦格纳曾经不得不向一位工程教授解释计算机是何方神圣。瓦格纳还更为生动地体验到了计算机与反计算机之间的冲突,他修了一门叫做“数值分析”的课程,授课教授要求每位学生使用咔咔作响的笨重机电计算器来做作业。考托克也上了这门课程,他们两个一想到要使用这种技术含量极低的机器就非常不情愿。“我们为什么那样做?”他们问道,“我们不是有这台计算机吗?”

于是,瓦格纳开始编写可以模拟计算器行为的计算机程序。这种想法挺荒谬的。对某些人来说,这是在滥用宝贵的机器时间。按照人们对计算机的一般看法,计算机的时间非常珍贵,所以应该只尝试那些能够最大限度地充分利用计算机的事情,这些事情如果不用计算机实现,则会让满屋子的数学家盲目地计算好多天。黑客们则不这么认为:任何看起来有趣或好玩的东西都可以是计算的来源,并且使用交互式计算机,没有人严密监视你并要求你提供具体项目的许可,你可以按照这个信念行动。瓦格纳用了两三个月的时间研究在一台没有简单方法可以执行基本乘法的机器上进行浮点型计算的各个复杂方面(程序要知道在哪里放置小数点,这是必须的),然后编写了3000行代码来实现这种功能。他让这台超级昂贵的计算机执行仅值其千分之一价格的计算器的功能。为了纪念这个具有讽刺意味的程序,他称其为“昂贵的桌面计算器”,并自豪地用这个程序完成了他的课堂作业。

他的分数是:零分。“你用了计算机!”教授这么跟他说。“这不可能是正确的。”

瓦格纳甚至懒得去解释。他怎么可能让他的老师明白计算机正在把曾经不可能的事情转变为现实呢?另一个黑客甚至编写了一个叫做“昂贵的打字机”的程序,将TX-0变成了可以用来编写文本的机器,它能够以字符串的形式处理文字,并在电传打字机上将其打印出来。你能想象到教授会接受在计算机上写的课堂作业报告吗?

那位教授(事实上,还有那些没有沉浸在这未知的人机互动世界里的人)怎么可能明白瓦格纳和他的黑客伙伴们天天使用这台计算机来模拟(用瓦格纳的话来说)

“人们几乎无法想象的奇怪事情”?这位教授迟早会明白,每个人也都会明白,由计算机打开的世界是没有边界的。

如果有人还需要进一步的证明,你可以引用考托克在计算中心正在做的项目:国际象棋程序。大胡子人工智能教授约翰.麦卡锡大叔已在IBM 704上开始了这个研究,他在黑客学生当中颇为出名。尽管考托克和帮助他完成该程序的其他几个黑客非常反对仅仅把IBM当做一台批处理机器来用,但他们设法获取了夜晚的一些时间,来交互使用IBM机器,并与704的系统程序员们展开了一场非正式的战斗,看哪组人会是计算机时间的最大消耗者。两组人难分高下,这给穿着白衬衫打着黑领带的704工作人员留下了足够深刻的印象,他们真的让考托克及其小组摸到了704的按键和开关:要知道,能够这样亲密接触IBM机器的人并不多。

在实现国际象棋程序的过程中,考托克所扮演的角色可以代表着黑客在人工智能领域将要扮演的角色:像麦卡锡或他的同事马文.明斯基这样的重要角色会启动一个项目,或者大声问自己某些事情是否可能实现,然后如果对这些事情感兴趣,黑客们会着手实现。

这个国际象棋程序最开始是使用最早的一种计算机语言FORTRAN编写的。计算机语言比汇编语言看起来更像英文,也更容易编写,并且可以用更少的指令实现更多的功能。但是,在像FORTRAN之类的计算机语言中,每下达一条指令,计算机必须首先将该命令转换成自己的二进制语言。这个过程由一个叫做“编译器”的程序来实现,而编译器要完成工作也需花费时间,而且也会占用计算机宝贵的空间。实际上,使用计算机语言,你离与计算机进行直接交互又远了一步,黑客们通常更喜欢汇编语言,他们称之为“机器”语言,他们不喜欢如FORTRAN一类不够优雅的“更高级”的语言。

但是考托克意识到,由于国际象棋程序中需要处理大量的数字,因此部分程序不得不由FORTRAN完成,而另一部分则可用汇编语言实现。他们一部分一部分地实现它,尝试了“移动生成器”、基本数据结构以及所有类型的创新策略算法。在向计算机灌输了移动每个棋子的规则后,他们为其提供了一些参数,用来计算棋子位置、考虑各种走法并且这种走法要对自己最为有利。考托克几年来一直在坚持完善这个程序,随着MIT不断地升级IBM计算机,这个程序也在不断发展。在一个难忘的夜晚,几个黑客围坐在一起,看着程序在真实的比赛中走出前几步。它的开局相当不错,但是大约走了八步左右,计算机便陷入了真正的麻烦中,它要被将死了。

所有人都在好奇计算机将作何反应。它用了一些时间(在场的所有人都知道,在这些停顿中,计算机实际上是在“思考”,计算机的思考过程就是机械地考虑各种走法、进行评估、排除大部分走法并使用预定义的一套参数来最终做出决定)。最后,计算机将兵向前移动了两格,不合规则地跳过了另一个棋子。这是Bug!但也是非常聪明的一招——这让计算机走出了死局。也许程序正在计算能够征服国际象棋的新算法呢!

在其他的大学里,教授们都公开宣称,计算机在国际象棋比赛中永远下不过人类。

但黑客们则知道得更多。他们是那些赋予计算机超常能力的人。同时,通过与计算机进行有效且有意义的交流,黑客将会是最主要的受益者。

但他们不会是唯一的受益者。在智能的自动化世界里,使用会思考的计算机能够让每个人获益。而且,如果所有人都像遵循黑客道德的黑客那样怀着强烈的好奇心去探索世界,同样渴望平等,欢迎创新,无私地分享成果,渴望进步和创造,那么每个人从中获得的好处不会更多吗?如果我们都能在不带偏见的基础上接受其他人,就像计算机接受给电传打字机输入代码的任何人一样,那么每个人的受益不也会更多吗?如果我们向计算机学习创建完美系统的方法,并且开始在人类体系中模仿这种完美制度,我们难道不会从中受益吗?如果每个与计算机进行交互的人能够像黑客一样具有同样单纯、有效且充满创造性的动力,那么黑客道德也许可以像慈善事业一样在社会中传播,而计算机将确实能够让世界变得更美好。

在MIT的院墙内,人们拥有实现这个梦想的自由——黑客的梦想。没有人敢设想这个梦想会广泛传播。相反,就在MIT,人们开始着手打造黑客的世外桃源,这可能是永远也无法复制的天堂。