我们的世界并不是为我们创造的。我们仍然非常奇怪。
硅谷里到处都是精英,但大部分人并不是很有钱,他们给人的印象基本上都是邋里邋遢、十分压抑。美国的所有地方都保留了20世纪70年代那种脏兮兮的感觉,硅谷也不例外。就在门罗帕克的北部,没了彩灯的招牌已经生锈,店里提供现场色情表演,进退两难的行人挤在街角。
这就是我们的聚会场所。我们需要保持紧密的联系,当时没有互联网,但我们需要网络效应。
我记得在主干道埃尔卡密诺里尔上有一个简陋的廉价酒吧,里面有一个桌球台,我认为帕洛阿尔托的黑客就像是一个母球,在把另一个球撞得远远的之后,它自己也旋转着掉进了球袋。我们在新家里旋转,而我们的动量被转移到外面,重组着世界的其他地方。
你日日夜夜地编程,直到大脑吸收了一个大的抽象结构并将之完善。这与今天的程序员体验不同,因为在那个时候,你是直接用芯片工作,以此得到足够的性能。这就意味着,你无法借助其他程序员的语言、工具或库。
一切重要的东西都是新鲜的,都完全是你自己的想法。你是一个抽象的探险家,面对的只有荒芜。如果你想要一个圆圈出现在屏幕上,你必须想办法编出圆圈的代码,以足够快的速度形成圆圈。我记得有一次,我和最初的麦金塔计算机图形的编写者比尔·阿特金森(Bill Atkinson)一起去斯坦福大学见传奇的算法大师高德纳(Don Knuth),向他展示圆圈的新画法,那就像是去见一个代码教皇。
将任何事物推到极致状态后,它都会发生转变,这个原则同样适用于计算机。在编程体验的核心,当你以最高水平写代码时,会再次感受到一种不同于代码世界的神秘感。
当代码正确时,你的肠道里就会有一种奇妙的感觉,至少在当时是这样。这是一种令人难以置信的、几乎是救世主一般的感觉。我们曾经有点尴尬地讨论过这个问题,这是在我们的合理性堡垒下埋藏的神秘主义。
每当我有这种感觉时,手头存疑的代码就会被证明是无懈可击的。这是一个几近圣洁的奇特时刻,你很难得才会产生这种感觉。
编程的顶峰体验越来越难以捉摸,因为编程不再是单独一个人的工作,但凡有点重要的新程序都会由团队完成。当程序运行时,就会像青苔一样蔓延在之前已经存在的无数软件结构上,而这些软件结构甚至不会在同一台可识别的计算机上运行,而是在世界上未知的互联计算机之间秘密运行。人们再也不能真正了解一个软件了,人们只能测试它,好像它是一个刚被发现的自然界。我们与旧的直观世界之间的联系已经断了。
不管怎样,结束了夜以继日的专注工作,你常常会穿着衣服睡觉,就像睡在天鹅绒一般的大海里,然后,你会斗胆去看看别人,但所有人都在做同样的事。你们相互看起来都像代码一样。你口中的世界,就像一个你正在创造的不完整的谜题。
我真希望自己还记得最开始在硅谷认识的所有朋友的名字,不过至少我还记得我们的对话。“我已经保存了关于所有寿司店的数据,这样,我们就可以选出最好的寿司店。”“我也是。”“你有没有给你的数据打上时间戳?我们可以用贝叶斯方法进行关联。”
这种遇见世界的方法仍然是在纸上完成的!我们随身带着迷你笔记本和铅笔。黑客会将他们的笔记本固定在一个仿金属的壳子里,有点像之后的便携式数字设备。我们还有很多漂亮的皮带固定设备、腕部固定设备和背心固定设备。做完计算后,我们就会吃寿司,再继续写代码。
在花了一整天的时间编程之后,连你的梦里都全是代码,整个世界也成了代码。斯科特·罗森伯格(Scott Rosenberg)写了一本书,其中有一部分描述了我梦到代码的体验,这本书当然就是《梦断代码》(Dreaming in Code)。你会突然醒来,意识到你刚才在睡梦中编程,在梦中将你经历的事情编写成代码。这是一个人的心跳循环。
[1] 囚徒困境是最著名的游戏理论思想实验之一。它已经被改编为游戏节目和电影情节。我不在这里多做解释,读者可以自己查一查。从数学的角度来看,这种观念很有趣,但一想到把它应用到现实生活中,你就会觉得很恐怖,因为现实生活并非这样被清晰地割裂的。一旦人们在游戏节目或其他现实生活中应用囚徒困境理论,就会变得对彼此十分残忍,相互欺骗,我对此感到十分痛心。我怀疑这种邪恶的数学应用是否应该被禁止,因为很多孩子可能会因为糟糕的老师和课本,以这种方式爱上数学。
[2] 数十年后,计算机早就联网了,之前意为“骇客”的“cracker”一词作为一个贬义词再次出现,意思是“穷白人”。在20世纪80年代,几乎所有的“cracker”都是这个意思。