吴国林
计算机(Computer)是一种能接收和存储信息,并按照存储在其内部的程序对输入的信息进行加工、处理,然后把处理结果输出的高度自动化的电子设备。计算机主要由一定结构的物理器件硬件和特定逻辑的软件程序组成,计算机的发展也就是一方面使得硬件的小型化和计算的高速化以及软件的多功能化和人性化方面发展。电子计算机主要由运算器、存贮器、控制器、输入和输出等装置组成。
从层次结构来看,计算机可以分为四层:第一层为硬件,为最底层,负责执行具体运算和操作;第二层是硬件之上直接控制硬件的软件,一般被固化在只读存储器ROM中,称之为BIOS;第三层为系统软件,位于BIOS上面,是操作系统和各种设备的驱动软件;第四层是各种应用软件。
计算机的硬件是由中央处理器CPU、主存储器(即内存)、输入输出电路和系统总线等组成。仅有内存是不够的,还需要有外存储设备(即外存),主要有硬盘驱动器、软盘驱动器、光盘和磁带存储器。内存和外存的功能在于利用一定的物理载体的磁性或极性来表示数字信号0和1,其保存原理象录音磁带的保存方法。内存或外存都用来存储有关信息和知识,都是通过物理地址来保存的,即保存在内存或外存的物理空间中。物理地址是唯一的。存储器的物理空间体现为一种物理表面或物理介质,通过磁头把信息读/写在物理介质上,使物理介质的磁性或极性发生变化,即有相应的物理变化(磁性或极性的变化)相联系。
计算机软件包括系统软件和应用软件。没有相应的硬件,软件没有应用的物理基础。有了硬件,软件才在此基础上,进行变化。但是,每一次硬件的更新,往往随之有软件的更新(如DOS,windows之于计算机的硬件),或者说,到一定程度软件也会更新。即硬件与软件之间是相互促进、相互适应的。比如现在的windows是不能与原有286或386相配合的。这就是说,硬件与软件不是无条件相互适应的。
计算机的数学原理是程序与存储的思想。这一思想是于20世纪40年代由数学家冯·诺依曼提出的。现在的计算机也被称为冯·诺依曼机。冯·诺依曼在关于电子计算装置逻辑结构的初步探讨的报告中所提出的建议包括:机器要处理的程序和数据,都要写成二进制码;程序应当放在机器的一个部件(即存储器)中。
计算机对于“关于现实世界”的事是一无所知的。[i] 在计算机的所有信息处理活动中,它实际上只是作为工具存在。计算机处理的是代表这种信息的数据。计算机中的所有计算都使用二进制进行的。任何信息,在计算机内都只是“0”和“1”,这是计算机唯一能够识别的符号(在量子计算机中,则由量子态|0>和|1>组成)。计算机之所以采用二进制,一方面由于二进制本身固有的一些优点,另一方面是由于硬件的原因(一个二进制的电路是比较容易做的,并且就计算机的主要存储部件的性质来说也最适合采用二进制)。二极管的单向导电性,使得它只有两种状态:一种是通,另一种是不通。这就决定了由二极管造出的计算机只能采用二进制。如用“1”表示通,“0”表示不通,“0”和“1”就表示出了电路的全部两种状态,也是二进制的全部数码。
现代计算机的原理可以这样解释:计算机由许多个微小的晶体管组成。在任一时刻,晶体管有的导通,有的不导通。由这大量的或为导通或为不导通的晶体管共同构成一个复杂的状态。不同的状态有各自不同的意义。计算机的时钟电路提供电脉冲,每一个电脉冲引起晶体管的一次状态改变。当过来一个电脉冲,计算机中一些原来导通的晶体管会变为不导通,而一些原来不导通的晶体管会变为导通。这样经过变化的所有晶体管就构成了一个新的状态。如此经过若干次状态的变化,最终完成计算任务,晶体管处于目标状态。如此繁多的晶体管哪个导通、哪个不导通如何得到控制呢?这就要利用程序。计算机程序是能够被计算机接受并直接或间接产生某种结果的一系列的指令。程序中每一条指令叫一条语句。人们首先设计好计算机每次该进行的动作并将其事先编成程序,计算机完成各种工作的过程就是逐句执行语句的过程。
因为计算机只能识别“0”和“1”两种状态,那么,要使用计算机处理某种信息,就必须将这种信息表示成计算机能够识别的形式。现在人们在使用计算机时感觉不到计算机在使用二进制进行计算,是因为计算机会把人们输入的数据转换成二进制。早期的计算机不能实现这样的转换,在向计算机输入数据前,人们必须自己将所要输入的数据转换成二进制。人与计算机交流所用的“语言”是逐步由低级向高级发展的。最早的计算机程序是由二进制数“0”和“1”组成的的机器代码。这些代码能够被机器识别而很难被一般人读懂。那时的程序员必须记住每个代码的意义。现在人们编制程序所使用的高级语言,已经与自然语言颇为类似。现在的计算机之所以能够读懂高级语言,是由于它们有了一个特定的程序,这个程序的功能是把高级语言翻译成计算机所认识的机器码。而这一翻译的工作在最早的时候是由人来完成的。
计算机本身也并不具有计算能力,它只能识别电脉冲,如0或1。这种脉冲串的意义需要人通过程序加以赋予相应的值。或者说,计算机的意义是通过软件来赋予的,软件给予了计算机的意义所在。不论计算机多么先进,计算机硬件是不能编写出软件或程序的,软件或程序都需要人来编写。可见,计算机的意义的根源在于人,在于人的给予。硬件体现的是物理世界,而软件体现的是知识世界,计算机则体现的是物理世界与知识世界的相互结合,即波普尔所说的第一世界与第三世界的结合。
[i] D. C. 丹尼特,《人之子论:人工智能的框架问题》,引自《心灵、机器及进化:哲学研究》,1984,剑桥大学出版社。