首页 理论教育C语言游戏设计与发展:KenThompson和UNIX的故事

C语言游戏设计与发展:KenThompson和UNIX的故事

【摘要】:有一个叫Ken Thompson的工程师,当时26岁,看到阿波罗11号载人飞船登月成功,觉得挺酷,于是设计了一款叫“Space Travel”的游戏。如图1.1所示,从左至右分别为ken和dmr。图1.1ken和dmrUNIX起初是用汇编语言编写的,那是一种更接近机器而不是人的语言。那一年是1972年,ken继续完善UNIX,dmr设计新语言,两人一起开发编译器。1983年,因为UNIX和C语言的巨大成功,ken和dmr共同获得了计算机界的最高奖——图灵奖。

1969年的美国贝尔实验室是当时科技界的梦工厂,集结着世界上最富创造力科学家和工程师,其中包括数位诺贝尔奖获得者。他们一起创造了无数影响着全人类的发明,如数码相机的核心——电荷耦合器件(Charge-Coupled Device,CCD)。

这些人的成就貌似高不可攀,但其实他们也都是凡人,在某些方面和我们也是非常相似的。例如,当他们见到一台功能强大的计算机时,心里最先想到的也可能是用它来玩游戏。那个时代,计算机是大型机构才能拥有的奢侈品,在这上面玩游戏确实是奢侈的。

那时候是没有商业游戏的,想玩游戏,首先要发挥DIY(Do It Yourself)精神,自己编写游戏。自己编的游戏被别人喜欢,是当时最有面子的事情。有一个叫Ken Thompson(以下尊称为ken)的工程师,当时26岁,看到阿波罗11号载人飞船登月成功,觉得挺酷,于是设计了一款叫“Space Travel”的游戏。在游戏中,玩家驾驶着宇宙飞船,在虚拟的太阳系里穿梭,欣赏美景的同时,还可以在各个行星、卫星表面降落。这个游戏先是在Multics系统上编写,后来又在GECOS系统上重写。能运行这两个系统的机器都是笨重的大型机,虽然运算能力出众,但显示效果很差,而且机时费非常高,玩一次需要支付75美元(当时美国人均月收入大约200美元)。这实在是太贵了。于是他与同事Dennis M.Ritchie(以下尊称为dmr)一起寻找免费的“游戏机”,后来他们找到了一台由DEC公司制造的PDP-7小型机,它拥有当时最先进的图形处理能力。那时计算机的主要用途是数据处理,图形处理能力并不太受重视,所以PDP-7很少被使用。ken和dmr决定使用它来玩游戏。

然而,游戏的运行需要操作系统的支持。PDP-7当时还是“裸机”,没有能在其上运行的操作系统。于是,他们开始为PDP-7编写操作系统,并给这个系统起了一个名字——UNIX。直到今天,UNIX仍然是最受信任的操作系统,它既支撑着军队、政府、电力公司、电信公司和银行等大型机构的关键业务,也是苹果Mac系列计算机的动力之源,甚至iPhone的魅力也部分拜其所赐。如图1.1所示,从左至右分别为ken和dmr。

图1.1 ken和dmr

UNIX起初是用汇编语言编写的,那是一种更接近机器而不是人的语言。计算机能直接读懂的语言称为机器语言,它所有的语句都是由“0”和“1”两个数字构成的,人很难读懂和记忆,而人的自然语言机器又很难理解,于是人们开始琢磨怎么让计算机读懂自然语言。基本思路是设计一个翻译程序,直接把自然语言翻译成机器语言,这种翻译程序被命名为“编译器”。但是直接理解自然语言太难了,折中的办法是设计一种尽量接近自然语言,且还能被精确翻译为机器语言的语言,这种语言就是人们常说的编程语言。学编程的过程,其实就是学习怎样用编程语言说话并让编译器听懂的过程。第一种编程语言肯定是最接近机器而远离人类的,它就是汇编语言。虽然看上去有点像自然语言,如加法叫“ADD”,减法叫“SUB”,但它的语法完全是为机器服务的,每一行语句都和一条机器指令严格对应。不同计算机的机器指令是不一样的,所以针对一种计算机编写的汇编程序不能在另一种计算机上直接使用,必须重写(Space Travel就被重写过很多次)。用专业术语来说,汇编语言缺少可移植性。

因为Space Travel的吸引力,使得很多人都希望他们的计算机上也能安装UNIX。于是ken和dmr决定改用高级语言编写UNIX,这样它就可以在更多类型的计算机上运行。(www.chuimin.cn)

除了机器语言和汇编语言以外,几乎所有编程语言都被统称为高级语言。它的特点是更接近自然语言,而与机器语言联系不紧密。不同的高级语言编译器可以把同样的高级语言程序翻译成适应不同机器的指令,因而高级语言大多具有较好的可移植性。

在高级语言的选择上,ken和dmr遇到了麻烦,虽然可供选择的高级语言有很多,如现在还在被使用的有Basic和Fortran等,但这些语言都是面向应用程序编写而设计的,层次太高,使机器能理解太困难,都假想其是在一个操作系统上运行,所以不适合用来开发操作系统。所以他们最后决定自己设计一种适合编写UNIX的高级语言。那一年是1972年,ken继续完善UNIX,dmr设计新语言,两人一起开发编译器。因为该语言以ken早年设计的B语言为基础,所以就自然而然地被命名为C语言。

1983年,因为UNIX和C语言的巨大成功,ken和dmr共同获得了计算机界的最高奖——图灵奖。

UNIX和C其实是可以为ken和dmr带来大量财富的。然而,他们从一开始就没有想去申请专利、商标、软件著作权等法律保护,而是把所有的一切,包括最宝贵的源代码,都全部公开发布。对他们来说,自己写的程序有人使用,就是最大的快乐,也是最大的财富。这恰好使得很多机构和个人都具有了自如地为UNIX和C添加代码、做各种贡献的条件,因而又极大地促进了它们的发展。