2 第1章 在进入Fotn程序设计之前,先带给读者一些很基础的计算机概论课程,希望i让大家 了解计算机软硬件的基本运行原理。明白这些原理,对于实际编写程序会很有帮助。本章 会顺序地从计算机开发的简史开始介绍,到二进制系统、微处理器(CPU)、硬件结构 (Architecture)、低级语言(Assembly)、编译器(Compiler)、高级语言(Fortran/C/Java)、 操作系统(OS)、应用程序(Application). 1-1 计算机简史 开始介绍计算机的历史之前,先给大家一个概念,计算机不一定是一块屏幕、一台主 机、再加上键盘队标的组合,这只是现在一般大众所使用的C个人计算机的典型外观, 计算机的英文是Computer,广义地来说,用来帮助人类做数学运算的机器及工具都 可以叫做“计算机”,中国古老的算盘,就称得上是历史上早期的计算机(如图1.1所示)。 图11 欧洲在17世纪发明了计算尺(如图12所示),它有效地利用对数的原理,可以快速地 做出乘除法等等的计算。在差不多相同的时间,法国人Pas©l发明了可以敏加法计算的加 法机(如图13所示),这算是第一个机械式的计算工具。 计算尺 图1.2 Pascal发明的加法权Pascaline 图13 工业革命后,科学家一直在尝试制造功能更强大的计算机,在19世纪末到20世纪初 这段时间,终于出现了一些可以实际使用,并且公开在市场上销售的机械式计算机(如图1.4 和15所示) 现代计算机与过去简单的计算机最大的不同在于现代计算机不仅仅能做加减乘除的数 学计算,现代计算机的概念可以追溯到19世纪中,是由一位英国数学教授Charles Babbage 提出的。他设计了一台以蒸汽为动力,大小和火车头差不多的机器,叫做D面erence Engine. 后来又进一步设计了一台叫作Analytical Engine的机器。它们都有保存程序和输出结果的能 力,而且在功能上并不只限于数字的加减乘除运算,还可以通过程序来规划机器的运行, 但可惜的是全都没有完工
计算机柳论 3 图14 图15 左图是9世纪末发明的机械式计算机右图是197年网世的历史上的第一台机城式零上型计算机 在第二次世界大战中,应战争需要而开发出的电子式计算机在破解敌方密码、计算 大炮弹道、飞机辅助设计等许多方面得到了应用。大战期间所发明的计算机有英国的 Colosus、.美国的MakI(如图1.6所示)和ENAC(如图1.7所示)、德国的Z3等等。 早期的计算机大都使用真空管来进行运算,体积非常庞大,而且编写程序时要使用机器 语言,也就是程序员必须使用数字命令及开关来指挥计算机。学术界把它们归纳为第 代计算机。 图16 图1.7 左围是巨无有Mak:右图是ENIAC 1946年发明的品体管和真空管其备同样的功能,但是体积、用电,以及散发的热量都 比真空管少,改用品体管的第二代计算机,体积比第一代计算机小得多,而且执行起来较 为可靠。软件业也在此时期开始萌芽,这段期间开发出了编译器,可以把机器语言改用文 本来表示(也就是汇编语言),然后再把这些文本翻译成机器语言,下otmn及C0BOL等高 级语言也在同时期问世。 集成电路发明后,可以把好几个品体管放在一小块芯片上,开创了半导体时代,这也 让计算机进入了所谓的第三代计算机时代。现在大家所使用的个人计算机,算是第四代计 算机,它的一小块芯片中可以放入上百万个组件。今天在市场上大家都可以买到的掌上型
4 第1章 计算机,例如PDA和HPC(如图1.8所示),它们所拥有的计算能力及存储容量都远远超过 了数十年前和房间一样大的超级计算机。 掌上型计算机 图1.8 1-2 数字化 数字媒体已经不知不觉地进入每个人的生活,我们儿乎每天都会接触到它们,例如CD 唱片、DVD电影、数字相机等等。这些电子数字媒体都是使用二进制的方法来保存数字数 据的,那么为什么要使用二进制呢? 以电视遥控器为例,只要按下按钮,电视机就会有反应,这样说来按钮其实就是一个 开关,按下按钮就会让这个开关通电。有没有通电,是电子设备接受信息最简单的方法。 遥控馨的按钮,没有所谓按一半、或是按下三分之一个按钮的操作方法,因为一个开关如 果不是正在通电,就是关闭着不通电。而且在操作电视时,只有换台或不换台,没有换半 个台的需要。 二进制中只有0和1这两种数字,正好可以用来形容一个开关的情况,0代表关,1代 表开。记录一个二进制数所需要的容量大小,称为一个位(b)。遥常在使用时,并不是以 个位为最小的单位,而是组合8个位为一个字节(byte),1024个字节为1KB,1024KB 为1MB,1024MB为1GB。 1 byte=8 bits 1 KB=1024 bytes=2 bytes 1MB=1024 KB=1024*1024 bytes=22 bytes 1GB=1024MB=1024*1024*1024 bytes=20 bytes 个字节中有名个位,也就是有8位数的二进制数。由二进制转换为十进制的方法很 简单,我们来看一看下面的实例(下标的数字代表目前是用几进制的方式来显示数字,没 有特别标示时是使用十进制)。 十进制的100(0)=1*103,因为十进制的基数为10. 二进制的100(2=1*23,因为二进制的基数为2,把上一行中使用的110的10改成用 2来计算就可以了
计算机舰论 5 十进制的13,01=1043=110+3*109 二进制的11012,=10002+100(2+0021+121=1*2+1*22+0*2+1*213(0 本书不想仔细说明如何把十进制数字转换成二进制数字,因为Windows中的计算器就 可以完成这个工作,以下为实例演示(如图1.9至1.12所示)。 计 区 0 c 2 3 -ia 请先把计算器转换成“科学型 图1.9 请注意近左上角的地方,计 器认使用十透制 图1.10 在十进制格式下入字 图1
67 第1* 查看0帮助0 101 X'Y 用真标选择“二进制”的选项就可 以直提数字特换成二进制显示 图1.12 数字化的多媒体信息,都是先把声音、图像等信息转换成数字后,再以二进制方法来 保存这些数字。那么声音是怎么转换成数字的呢?我们把声音在空气中的振动情况制做成 声波图, 会出现类似如图1.13的图形。 时间轴 图1.13 只要在水平的时间轴跟垂直的音量轴上等分切出许多小等分,就可以用数字的方法来描 述这一段声音,如图1.14。 t=l 时间袖t 图1.14