预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共89页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

C语言程序设计参考书 K&R“CPROGRAMMINGLANGUAGE” 课时安排 理论课:32学时 上机训练:16学时 考核成绩 平时考勤10%,上机报告20%,期末考试70%课程要求第一章C语言概述1.1C语言发展历史 程序设计语言的发展高级语言C语言的发展史C语言的前生一切从一个叫“SpaceTravel”的电子游戏开始……1963年,美国麻省理工学院MIT、贝尔实验室和通用电器公司决定联合开发一个操作系统MULTICS,其设计目标是“公用计算服务系统”。 那时,计算机还很昂贵,主要是安装在一些政府部门、企业和科研机构,一般的家庭买不起,但有时人们又想使用计算机来完成一些计算任务。所以该项目的出发点是想提供一种计算服务, 在城市里布置一台计算机主机,然后用户在自己的家里,使用终端并且通过电话线来接入这台主机。终端很便宜,只有显示器、键盘和通信模块,每个家庭都买得起,他们使用终端来连接计算机,然后像使用水、电、煤气等生活资源那样来使用这台计算机的计算资源,并缴纳相应的费用。 这样一来,在主机上必须运行一个操作系统,来对整个系统的资源进行管理。MULTICS系统非常庞大、复杂,它的研制难度远远超出了人们的预料,因此,贝尔实验室和通用电器公司先后退出了这个项目。 1969年,当贝尔实验室退出该项目后,它的一个研究员KenThompson在MULTICS操作系统上编写了一个名为“太空旅行”(spacetravel)的游戏,模拟了一个飞行员驾驶着一艘宇宙飞船在太阳系中遨游,并在各个星体上着陆。后来,由于无法继续访问MULTICS操作系统,他就在贝尔实验室里找了一台没有人使用的PDP-7计算机,想把游戏程序移植到这台机器上。 但是,当时计算机硬件所能执行的都是用机器语言来描述的指令,而对于不同类型的计算机来说,它们的机器语言是不一样的,所以在MULTICS系统上运行的程序,不能直接把它搬到PDP-7这种类型的计算机上去运行。因此,Thompson就和贝尔实验室的另外一名研究员DennisRitchie,他们两个人一起,在另外一台GE-635计算机上,利用它的操作系统,即GECOS所提供的一个交叉汇编器,把空间旅行游戏用PDP-7的汇编语言重新编写了一遍,并且生成PDP-7的机器语言指令,然后用穿孔纸带的形式把它转移到了PDP-7上面,这样,就可以玩了。Question:为什么不直接在PDP-7这台计算机上编程呢,而需要使用第三台机器GE635呢? 原因很简单,这台PDP-7计算机之所以没人来用,是因为它是一台光秃秃的计算机,只有硬件而没有任何软件,连汇编程序都没有,这样,人们就没有办法在上面编程,如果实在想编程的话,只能直接使用机器语言。但机器语言都是一些0、1字符串,太难懂了,所以没有人愿意使用它。 Question:为什么PDP-7计算机只是硬件没有软件? 当时,计算机水平还很落后,很多研究小组申请项目研制计算机,仅仅是针对硬件架构,当计算机做好后,测试性能后项目组的任务就完成了,然后再研制更新的计算机。 如果有需要,则用机器语言编写程序,然后在纸带上打上孔,让计算机读入(有孔、无孔,分别代表1、0)。后来,Thompson觉得这台PDP-7计算机空在那里有点可惜,所以就和Ritchie等人开始为它编写一个新的操作系统,也就是说,在硬件的基础上,再给它增加一些软,这样,这台机器就能够用起来,就能做更多的事情。 他们先是写好了这个操作系统的文件系统和一组基本的软件工具,然后再编写了一个PDP-7汇编语言的编译器。有了这些软件工具后,就能直接在PDP-7上编程了。 到了1970年,这个操作系统的基本元素都已经完成了,他们给系统起了一个名字,也就是UNIX。到了1970年的夏季,研究小组得到了一台新的、功能更强大的机器PDP-11,因此需要把UNIX系统从PDP-7移植到PDP-11上面去 这项工作非常的烦琐,因为整个系统都是用汇编语言来编写的,需要把每一条PDP-7汇编语言指令都转换为相应的PDP-11汇编语言指令,工作量非常大。 更重要的是,这种移植工作是一次性的,如果以后又来了一台新的机器,那么整个移植工作又得重新来过,所以这是一个很大的问题。 为解决这个问题呢?研究小组就开始考虑用某种高级语言来重写整个系统,以提高系统的可移植性和可懂性。Thompson为了提高UNIX操作系统的可移植性,想要用某种高级语言来重写整个系统。但是采用哪一种高级语言来做这件事呢?他的想法是自己去设计一种高级语言。 他以BCPL语言为基础,又作了进一步的简化,设计出很简单而且很接近硬件的B语言,这个名称取自于BCPL的第一个字母。 但是B语言过于简单,是一种没有数据类型的语言,功能很有限。因此,当他试图用B语言来重写UNIX操作系统时,效果并不太