比尔·盖茨在70岁时出版了人生首部自传《源代码》。这本书与他以往的商业叙事不同,更多聚焦于他个人的成长和创业经历,展现了他如何从一个热衷编程的“熊孩子”成长为科技领袖。
书中,盖茨讲述了自己在富有挑战的时代中如何快速融入个人电脑革命的浪潮。年轻时,他就显现出对技术的狂热:16岁时,他曾徒步数百英里,边走边编写BASIC代码。
那些年,我还和另外一帮男孩消磨了不少时光。
肯特、保罗、里克和我上的是同一所学校——湖滨中学。
在校方的安排下,学生们可以通过电话线连接到一台计算机主机。那年头,青少年居然可以接触到计算机,无论是哪种形式的,都极其罕见。我们四个人对这件事可上心了,把所有的闲暇时光都花在编写日益精密复杂的程序、摸索如何使用这台计算机上。
表面看来,徒步旅行和编程之间差了十万八千里,但从感受上说它们都是探险活动。
和这两拨朋友一道,我探索着新世界,前往那些甚至连大多数成年人都无法抵达的地方。
和徒步一样,编程也适合我,因为它允许我定义自己似乎不受限制的成功标准,成功与否不取决于我能跑多快或将球投多远。编写长而复杂的程序所需的逻辑思维、专注力和耐力,仿佛是我与生俱来的本能。
和徒步不一样,在这群朋友里,论编程,我是老大。
1971年6月,我在湖滨中学的高二学年快结束时,迈克打电话给我,告知下一次徒步旅行的计划:去奥林匹克山徒步50英里。
迈克选择的路线叫“普雷斯探险步道”,它得名于1890年在一家报社的赞助下探索该地区的探险队。那次探险之旅历经磨难,当时,队员们的食物消耗殆尽身上的衣服也都磨烂了。
迈克的意思是我们要走同一条艰难的路吗?没错,但他们的那次探险是很久以前的事了,迈克说。
可就算是在80年后,这条徒步路线依然异常艰苦。那一年降雪量很大,因此这个提议尤其令人生畏。但既然其他成员——罗基、赖利和丹尼——全都积极响应、跃跃欲试,我才不会当临阵脱逃的胆小鬼。再说,还有一个比我小几岁、名叫“奇普”的童子军也积极参与到此次冒险中。
我必须得去。
按照计划,我们要爬过低分水岭山口,下到奎纳尔特河边,然后原路返回,每天晚上在沿途的简易木屋里休整。全程需六七天。
第一天很轻松,我们在一个风景优美、被白雪覆盖的高山草地待了一晚。
接下来的一两天,在我们攀登低分水岭的过程中,积雪越来越厚。当走到计划过夜的休息点时,我们发现它已经被大雪掩埋。我有片刻的私心窃喜认为我们肯定会原路返回,回到那个当天早些时候路过的条件更好的落脚点,我们还可以生个火,暖暖身子,然后大吃一顿。
迈克提议投票决定是往回走,还是一鼓作气走到目的地。我们无论选哪一项,都意味着要继续走几个小时。迈克说:“我们在山脚下路过了一个休息点,就在我们下方1800英尺处。我们可以走回去,在那儿休息,也可以一直走到奎纳尔特河边。”
他不需要点明那个事实:走回去的话,便意味着放弃了我们行至河边的任务计划。
“你是怎么想的,丹尼?”迈克问。丹尼是我们这个小团队中非正式的二把手,他比其他人都高,是个能力很强的徒步旅行者,一双大长腿似乎永不疲惫。不管他说什么,都将对投票结果产生极大的影响。
“咱们都快到那儿了,或许应该继续走。”丹尼说。在举手表决的过程中,很明显,我是少数派。我们将继续前行。
再次出发几分钟后,我说:“丹尼,我对你可有点儿意见。你本来可以阻止这一切的。”我是在开玩笑——半真半假地。
那次旅行令我印象深刻,不仅因为那天我被冻惨了,还因为我接下来做的事:我陷入了自己的思绪。
挑战自己,为PDP-8写一个BASIC编程语言的版本
我在脑海中构想着计算机代码。
就在那段时间,有人借给了湖滨中学一台计算机,它是由美国数字设备公司(DEC)制造的PDP-8。
那是1971年,尽管我当时已经深度接触方兴未艾的计算机领域,但还从未见过可以与PDP-8相提并论的东西。
在那之前,我和朋友们一直使用的都是体量巨大、多人共享的计算机主机。我们通常借助电话线与这些主机相连,除此之外的时间,它们都会被锁在一个单独的房间里。
这台PDP-8却是设计给个人直接使用的,它的个头足够小,可以放在你面前的桌子上。尽管一台PDP-8就重达80磅,价值8500美元,但它可能是那时最接近10年后才会出现的个人计算机的设备了。
为了挑战自己,我决定试着为这台计算机编写一个BASIC编程语言的版本。
在去普雷斯探险步道前,我正编写的那部分程序会告诉计算机执行运算时的顺序,假如有人输入3(2 5)x8-3这样的算式,或是想要制作一个需要复杂数学运算的游戏,它就能派上用场。
在编程中,这个功能被称作“表达式计算”。
拖着沉重的脚步,两眼紧盯前方的地面,我琢磨着自己的计算工具,苦思冥想着执行运算所需的步骤。关键是要小,那会儿的计算机内存极其有限,这台PDP-8用来存储工作数据的内存只有6K(千字节),这意味着程序必须精简,使用尽可能少的代码才不会占用过多的内存。
我会构想出代码,然后试图追踪计算机将如何执行我给出的指令。
行走的节奏有助于我思考,就像我曾习惯于思考时原地晃动身体。在那天其余的时间里,我的头脑完全沉浸在编写代码的难题中。我们下行到谷底后,积雪路逐渐转为一条平缓的小径,我们穿过一片古老的云杉和冷杉林,直到行至河边,搭起帐篷,吃我们的午餐肉大餐,最后睡觉。
第二天一大早,大风和冻雨像鞭子一样抽打着脸颊,我们顶着风雨爬回了低分水岭。我们在一棵树下停留片刻,分食了一包乐之饼干,然后继续赶路。我们沿途找到的每一个休息点都挤满了等待暴风雨过去的露营者,所以我们只好继续前行,让这本来已经十分漫长的一天又多加了好几个小时。
穿过溪流时,奇普滑倒,摔破了膝盖。迈克为他清理伤口后,用绷带包扎好。此时,我们的行进速度只能以奇普一拐能跟上为上限。
我全程一直默不作声地在头脑里打磨着我的代码。那天在我们行走的20英里途中,我几乎一言不发。
最终,我们找到了一个有空地儿的休息点,搭起了帐篷。
有句名言说得好:“我本来可以写封短信,但我没时间。”同样,用繁复的代码写一个长达数页的程序,要比仅用一页篇幅编写同一程序容易得多。啰唆冗长的程序运行起来更慢,占用更多内存。
在这次徒步旅行的过程中,我有时间把程序写得短小精悍。在漫长旅行的最后一天,我将它进一步精简,就像是在小心翼翼地削一根树枝,直到把一头削尖。我最终呈现的成品似乎既实用高效,又简洁明快。
到那时为止,这是我编写过的最优秀的代码。
第二天下午,在我们返回起点的途中,雨终于停了,天空放晴,我们沐浴在和煦的阳光下。我感受到了那种永远只有在徒步旅行完成后所有艰苦的工作都已成为过去时才会涌上心头的喜悦。
秋天开学时,把那台PDP-8借给我们的人收回了计算机。我并未完成自己的BASIC项目,在徒步旅行中编写的那段简洁优雅的表达式计算代码却留在了我的脑海中。
三年半之后,正当我这个大二学生困惑于不知如何选择人生之路时,湖滨中学的校友保罗冲进了我的宿舍,他带来了关于一台具有突破性的计算机的消息。
我当即知道保罗和我可以为这台计算机编写一版BASIC语言,因为我们已经拥有某种先发优势。
我做的第一件事便是回想起在低分水岭艰难徒步的那一天,从记忆中提取出写好的那段表达式计算代码。
我将其敲进计算机,由此播下的种子最终成长为一家世界级的大公司,一个新的行业也随之诞生。
免责声明:本文为转载,非本网原创内容,不代表本网观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
如有疑问请发送邮件至:goldenhorseconnect@gmail.com