我早些年,对编程很疯狂的年级,很喜欢读一本书《doom启示录》,讲述的是上世纪90年代特别流行的游戏公司idsoftware的传记。idsoftware有两个特别重要的创始人约翰卡马克和约翰罗梅洛。约翰卡马克是公司的主要程序员,约翰罗梅洛是游戏设计师。
卡马克和罗梅洛原本都是在Softdisk公司工作,那时候他们用公司的电脑,和私下时间开发了《指挥官基恩》这款游戏,短短几个月买了3万套,这让他们对开发游戏有了信心,他们还有其他人一起辞职,成立了idsoftware公司。之后还开发了《德军司令部》《雷神竞技场》和《毁灭战士》。
约翰卡马克小时候家庭很好,上个世纪,只要是第一批接触个人计算机的一般家境都不会太差,至少是中产家庭。从他的爷爷自学成为电气工程师,他爸爸成为家里第一个大学生,并进入一家电视台工作,他母亲在研究核疗技术的同时还攻读微生物学博士,他们家一直有自学成才的传统。
小时候,他的爸爸成为当地电视台的主播,他们家也搬到了富人区,上了当地的学校,并开始接触计算机。尽管他学习很好,但是父母对他过高的期望,让他压力很大,变得越来越叛逆,厌恶学校。
在卡马克5年级的时候他妈妈把他送去了计算机培训班,从此开始自学编程。
卡马克12岁的时候,父母突然离婚,卡马克也更加叛逆。偶然的机会,阅读到了《黑客:计算机革命的英雄们》真本书,里面有比尔盖茨,有史蒂夫乔布斯。这本书倡导的黑客伦理观为卡马克打开了新世界的大门,为他以后坚持开源,热衷技术和在3D领域的贡献起到了引导的作用。
在最早的BBS上,卡马克接触了令人激动的黑客文化,也让他走上了犯罪的道路。他和朋友从BBS上学到了怎么制作能爆炸的东西,很快我们就做了出来,他们决定用自己制作的铝热剂投几台计算机,结果被逮捕。
14岁的卡马克被送去做精神评估,以便测定他的口供,面谈的人问他“如果你这次没有被抓到,你还会不会做类似的事情?”
卡马克说:“是的,我想我应该还会再做”
结果他被处一年教养,进了“少年之家”,因为乔布斯的苹果电脑进去的。
卡马克和她母亲的关系不好,他父亲18岁的时候告诉他有一笔属于他的托管基金,18岁的时候他就可以把钱取出来,当卡马克去取钱的时候,发现他母亲把钱转到另一个账户上,他母亲坚持认为卡马克应该上大学,然后进入像IBM一样的公司上班,而这笔钱只能用来上大学。
18岁的卡马克只好报了堪萨斯大学,大学的时候同时开始开发自己的游戏,然后把游戏寄到softdisk公司,每次softdisk收到他的游戏,都会邀请他去面试。然后就有了开头提到的与约翰罗梅罗的合作。
当idsoftware公司开始制作3d游戏的时候,尽管卡马克编程技巧非常厉害,但是还是遇到很多数学问题。卡马克的数学并不好,专门雇佣了数学家来解决自己的问题。
卡马克自行研制了3d游戏引擎Quake,我们熟悉的反恐精英就是Quake制作的。在《doom启示录》的书中,尽管卡马克个人编程能力非常好,但是随着时间的发展,自己开发的游戏引擎很难与专业团队开发的游戏引擎抗衡,比如虚幻游戏引擎。idsoftware也开始走下坡路,约翰罗梅罗也离开了。
讲两个小故事
故事一
卡马克一直秉持黑客自由开源的理念,开放了雷神之锤3的开源代码,在一个开平方sqrt的函数中,出现了0x5fdf这个常数,后面备注了“whatthe?”,当时大家都不理解为什么开平方会用到一个固定常数,但是用这个常数,就是能是开平方的计算速度快了4倍。
这个正式算法名称叫平方根倒数速算法,是90年代SGI所发明的,被卡马克拿来用了。卡马克在读到这里的时候也不知道为什么?所以就备注whatthe?
故事二
卡马克和罗梅洛还在开发第一款游戏的时候,一天下了非常大的雨,他们的工作室在一个河边的别墅,河水漫过了道路。罗梅洛想今天应该不会有人来上班,但是当他进到别墅的时候,卡马克已经想平时一样专心致志的坐在电脑前面了。
总结
卡马克始终是一个程序员,除了程序,很多东西他都不愿意去懂。比如卡马克也对发射火箭很有兴趣,但是与埃隆马斯克直接创建spaceX发射真实的火箭相比又超过了卡马克的能力,他只是在游戏3D发展过程中,那个努力的程序员。
“现今程序员的情况好多了,只要有一台便宜的二手电脑,一张Linux光盘和一个互联网帐户,你就已经拥有了把自己提升到任何级别的编程水平所需的全部工具。”“在信息时代,进入编程领域的壁垒完全不存在了。即使有也是自我强加的。如果你想着手去开发一些全新的东西,你不需要数百万美元的资本。你只需要足够的比萨和健怡可乐存在你的冰箱里,有一台便宜的PC用于工作,以及让你坚持下来的奉献精神。我们睡在地板上。我们跋山涉水。”--约翰·卡马克