计算机技术与辩证法
2018-01-11张勇
张勇
摘要:唯物辩证法认为时时有矛盾,事事有矛盾。计算机技术的发展过程中也常常存在许多矛盾和问题。本文列举了一些运用辩证法思想有效解决这些问题的实例,说明了辩证思维存在于整个计算机科学与技术的发展历程并在其发展过程中发挥了极為重要的作用。为此,我们认为辩证法是人们认识和改造世界的有力武器。
关键词:计算机技术;矛盾;辩证法
中图分类号:TP3-4 文献标识码:A 文章编号:1007-9416(2017)11-0206-03
矛盾在所有事物中都存在,计算机科技领域也不例外。矛盾存在于整个计算机技术的发展历程。这其中,许多矛盾都是通过辩证思维的方法,得到了化解。因而,使得计算机和相关IT技术得以发展壮大,并最终对当今整个人类社会的发展产生了深远的影响。
对立统一规律又叫矛盾律是唯物辩证法的实质和核心,它揭示了事物发展的动力和源泉。计算机技术今天的成就,正是唯物辩证法真理性的又一证明。以下分别从计算机技术所涉及到的几个方面加以说明。
1 时间和空间的辩证统一
时间和空间是事物存在的两种不同形式,时间和空间是既对立又统一的。万事万物都在时空中运动。计算机程序的运行要花费时间,程序本身和它处理的数据要占用存储空间。计算机技术往往根据实际需要,以牺牲时间为代价来赢得空间,或者与之相反,以牺牲空间为代价来换取时间。
1.1 提高计算机程序执行的效率(程序的优化设计与调整)
计算机用最少的时间完成给定的任务,同时在完成该任务时耗费最小的存储空间。这正是软件设计人员在做程序优化时所追求的目标。
计算机软件开发者为了提高程序执行的效率,在设计程序和优化程序的过程中所要追求的两个目标是:(1)程序在运行时,尽可能少占用计算机资源,比如内存空间。(2)提高程序执行的速度,即在保证完成同一功能的前提下,尽力减少程序完成该功能所消耗的时间。但这两个方面常常是不能兼顾的,即不能在节约空间的同时节约时间。例如,为了完成某一任务需要将一个10M的数据装入内存中进行处理。这里有两个方案:一个是使用一个10M大小的内存空间,将10M的数据一次性全部装入内存中进行处理;另一个是采用节约内存空间的办法,仅使用1M的内存空间,将数据分10次装入,每次装入1M数据进行处理,则装入全部数据进行处理大约需要第一个方案10倍的时间。第一种方案的特点是占用的空间大,但消耗的时间短,即以空间赢得时间。第二种方案的特点则刚好相反,其占用的空间小,但消耗的时间长,即以时间换取空间。
在实际应用中,软件开发者会根据不同的需要对程序进行优化调整。在计算机发展的早期,计算机的硬件资源是有限并且昂贵的(比如在80年代,一台配置1M内存的PC可能价值近万元,所有的程序都必须在这1M空间内运行完成),这时,如何有效地节约计算机资源(比如节约内存占用空间)就成了软件设计人员进行程序设计和优化工作的重中之重。在这种种情况下,软件设计人员往往采用以时间赢得空间的办法,以节约计算机的内存资源。计算机发展到今天,计算机硬件的性能得到了很大的提高(家用PC的CPU时钟频率已从90年代初的几十兆赫兹发展到现在的几千兆赫兹,速度提高了近百倍;配置的内存也从MB级发展到现在GB级,扩大了上千倍。),而且其成本又得到很大程度的降低。这时,为了追求高性能,软件设计人员往往采用以空间换取时间的办法,从而提高程序的整体执行效率。
1.2 虚拟内存技术与虚拟磁盘技术
我们知道,磁盘和内存都是计算机中的存储设备。相比而言,内存的存取速度要比磁盘快很多。
以前人们常常使用软磁盘存储DOS操作系统,以便从软磁盘引导启动电脑。从软磁盘引导启动电脑,速度特别慢而且软磁盘容易出错。于是,为了加快DOS操作系统的引导,产生了一种叫做虚拟磁盘的技术。这种技术的实质是从计算机的内存中划分出一小块内存当成磁盘来使用,即作为虚拟磁盘,用于存取文件和数据。由于虚拟磁盘实际上是使用RAM内存快速存取数据,因而可大幅度加快文件的存取速度。在实际应用中,绝大多数CDROM启动光盘就是这样做的。它将DOS操作系统释放到虚拟盘中,然后电脑就从虚拟盘中启动操作系统,从而实现DOS操作系统的快速启动。显然,虚拟磁盘技术是以牺牲内存空间为代价而获取数据的快速存取的。
所有的计算机软件都必须装入内存中才能运行,而计算机的内存资源总是有限的,而且一般比硬盘空间小很多。为了解决内存空间不足的问题,出现了一种叫做虚拟内存的技术。虚拟内存技术与虚拟磁盘技术相反,它是从磁盘(比如硬盘)空间中划分出一部分作为内存(即虚拟内存)来使用。微软的Windows操作系统就使用了这项技术。它在硬盘上创建了一个磁盘交换文件,当内存空间不足时,它就将这个文件占用的磁盘空间当作内存来使用,从而解决了内存不足的问题。由于虚拟内存实质上是磁盘空间,因而它比真实RAM内存的访问速度慢很多。显然,在这里,虚拟内存技术以牺牲时间为代价而换取更多的程序运行空间。
1.3 程序的编译执行和解释执行
高级语言程序需要转换为二进制机器代码才能在CPU上运行。在计算机软件技术中,高级语言程序的这种转换和执行存在着两种不同的方式,即解释执行和编译执行。所谓解释执行即是对高级语言程序,边翻译边执行,翻译一条、执行一条,并不需要保留所翻译出来的全部机器指令码。作为另一种方式,编译执行则先将高级语言程序全部转换成可直接执行的机器指令代码,然后将这些机器指令代码全部装入内存中再运行。程序在解释执行时,占用的内存空间较少,但执行时消耗的时间较多;程序在编译执行时,需要消耗较多的内存空间,但程序执行的速度较快。显然,在这两种程序的执行方式中,解释执行是以时间换取了空间,而编译执行则是用空间赢得了时间。
这两种不同的程序执行方式,是人们在实践中根据问题的实际需要辩证处理所产生的结果。endprint
2 快与慢的辩证统一
缓存技术普遍存在于计算机中。电脑中有很多参与数据处理和传输的设备,它们的速度相差很大。当一个任务经由高速设备快速处理完成后传输给低速设备时,高速设备会因为长时间等待低速设备的处理而一直处于闲置状态,从而浪费了系统的资源并降低了系统的整体处理速度。缓存技术就是为了解决这一矛盾而产生的。它协调了计算机中速度差异较大的设备,提高了计算机系统的整体性能。
缓存技术的原理是在低速设备与高速设备之间引进一个速度较快的缓冲存储器(Cache)。当高速设备处理完一个任务后,它将结果数据直接快速地输入到这个缓冲存储器中。这样,当低速设备从缓冲存储器中获取数据进行处理时,高速设备就可以去处理下一个任务而不必等待,从而提高了系统资源的利用率并提高系统的整体处理速度。
在计算机的实际应用中,大量地存在着这种缓存技术。内存的存取速度比CPU慢很多。高速缓存处在CPU和总线之间,它不占用内存地址空间,而是在内存和CPU之间转存指令和数据,使CPU发挥最高效率。在硬盘和打印机中也普遍配置一定容量的缓冲存储器,用于暂时存放从内存中快速传来的数据。访问网页的浏览器也使用了这项技术。浏览器软件(如微软公司的Internet Explorer)在内存中配置了缓存,同时还在硬盘中配置了缓存。在内存中配置的缓存一般不大,而硬盘上配置的缓存则可存放较多的数据。网络的下载速度一般比较慢,因而我们可以先将用户已经浏览过的页面暂存在硬盘缓存中。如果用户后来再要访问这些页面并且该页面在网站上还没有更新,那么浏览器就不必通过网络重复下载这些资源,而是直接读取硬盘缓存中先前暂存的资源数据,从而大大地提高了访问的效率。
3 异和同的辩证统一
每个事物有它自己的个性,事物之间又有它们的共性。客观世界的各个事物在底层细节上往往是相异的,但它们可以在更高的层次上统一起来,从而实现求同存异。
3.1 用TCP/IP实现的网络互联
TCP/IP实现网络互联的成功,是它对网络底层求同存异的结果。
TCP/IP是一种网络互联协议规范。除了TCP/IP以外,还有IPX/SPX等许多其它协议实现。毋庸质疑,TCP/IP是当今使用最广泛、也是最成功的网络协议,它已经成为网络互联的标准协议。TCP/IP的最大贡献就是它实现了不同网络间的互联。
在这里,我并不想要详细讨论TCP/IP的相关理论和实现,我只是想和读者探讨TCP/IP如何实现异构网络间的互联。
要了解TCP/IP规范最好从ISO的OSI七层参考模型开始。OSI参考模型将计算机网络从下至上定义为七个层次(参见图 1)。在现实的网络世界中,存在着许多由不同厂家生产的物理通信设备(如各种不同型号的网卡、交换机、Modem、ADSL终端等)以及各种不同的通信介质(如光纤、双绞线、同轴电缆、无线通信等),实际上就形成了OSI七层模型中最下面两层(物理层和链路层)的异构。
然而,要实现网络互联,所有的网络都必须遵守统一的标准和规范。一种可能的办法就是基于这些异构的网络在更高的层次上建立标准和规范,从而统一起来。
TCP/IP的模型是一个四层结构(参见图 1)。但我们可以认为,TCP/IP模型将网络结构等效地分成了三个层次:底层(即网络接口层)、中间层(包括网络层和传输层)和高层(即应用层)。在现实环境中,由局域网实现的网络底层往往是异构的(比如光纤网络和同轴电缆网络、以太网和令牌网),因而实现网络互联的关键就是在这些异构的底层之上构建一个统一的中间层。而TCP/IP协议规范正是这么做的,它撇开了异构的底层(底层-网络接口层由局域网去实现),重点定义和实现了中间层,从而使得所有的网络从中间层以上都遵循一个统一的规范,最终实现了网络的互联。
3.2 Java的跨平台
Java的跨平台特性,是它对计算机系统底层平台求同存异的结果。
Java是美国Sun公司(后被Oracle公司收购)推出的一种程序设计语言。它广泛地使用在应用程序开发和当今的互联网上。它具有“Write Once,Run Anywhere”即写一次,可在任何机器上执行的跨平台特性。可以说,正是这种能够在不同平台(不同的硬件或操作系统)上运行的跨平台特性,使得Java应用获得了巨大的成功。
高级语言编写的程序都需要编译为目标程序(计算机的机器指令)才能在计算机硬件支持下的操作系统环境中执行。然而不幸的是,現实中的各个计算机往往采用了不同的硬件系统并且安装了不同的操作系统,实际上就造成了指令系统和操作系统软件环境的不同。这样,类似于C语言等许多高级语言程序就不能跨平台运行,即它们所编译产生的目标程序不能在这些不同的计算机系统中通用,而只能在编译它的这类特定计算机系统中运行。为了能够在其它的计算机系统上正确地运行,必须修改C语言的源程序并且重新在这个特定的计算机系统上编译,从而得到一个新的目标程序。
Java则不同,Java源程序几乎不做任何修改就可以在常见的各种操作系统和硬件平台上运行,真正实现了跨平台运行。Java源程序被编译后并不直接产生可执行的机器码,而是产生一种叫作“字节码”的中间代码。字节码的执行,需要在系统平台上安装一个Java虚拟机,Java虚拟机充当了一个解释器的作用,它将字节码再解释为各个计算机系统能够真正理解和执行的机器代码。Java的设计者充分意识到了各个计算机系统中程序运行的底层支持环境(硬件系统和操作系统) 的不同。Java源程序编译后产生的中间代码并不直接针对各个不同的特定计算机系统而是由Java虚拟机来统一解释和执行的,因而它与具体的系统平台无关。
底层细节的不同可以在更高的层次上统一起来。Java源程序通过Java虚拟机在高层得到了一个统一的运行环境而与底层的软、硬件环境无关,从而具有了跨平台运行的特性。endprint
4 軟件和硬件的辩证统一
在计算机的发展历史中曾出现过两种几乎截然相反的技术,即硬件软化技术与软件硬化技术。
计算机的许多功能既可以由硬件来实现,也可以由软件程序的执行来完成。所谓硬件软化指的是将本来由计算机硬件来实现的功能,通过执行计算机软件程序来实现;软件硬化则与之相反,它把本来由计算机软件程序完成的工作替换为由硬件来完成。一般来说,对同一种功能,用硬件来完成其优点是速度快、占用内存和CPU资源少,缺点是购买硬件的费用较高且硬件不容易配置和升级;反之,如果用软件来实现,其优点是费用低且容易配置和升级,缺点是运行速度慢、占用内存和CPU资源多。我们国家在计算机用于文字处理的早期,广泛使用一种叫做汉卡的硬件设备来辅助完成对汉字的文字处理。由于当时的计算机运行速度较慢、内存容量很小(无法装载大型的汉字字库及一些辅助软件),一些公司把汉字字库及文字处理的一些辅助程序烧录进汉卡中,作为计算机的硬件配置,从而实现正常的汉字文字处理工作。在这种情况下,要更换字库就必须更换汉卡,成本较高。使用汉卡是软件硬化的一个典型的例子。硬件软化的一个例子是使用播放器软件代替专用于播放媒体数据电影的解压卡。在计算机实现多媒体应用的初期,常常使用专用的硬件解压卡播放光碟中的电影,否则由于计算机CPU的运算速度较慢(比如486 DX 100以下的CPU),会造成图像和声音不连续的问题。随着计算机CPU运算速度的提高,那些本来由解压卡完成的对媒体数据的解压缩工作就可以由通过在CPU上运行的程序来完成。这时,如要改进功能只需对软件进行升级即可,方便且成本低廉。
在计算机技术中,“软件”和“硬件”是对立统一的。我们可以根据实际需要,选择采用“软”或“硬”的实现方法。
5 结语
从以上事例我们可以看出,在计算机技术中处处充满了辩证思维。计算机技术中所涉及的各种矛盾都可以通过辩证思维,因时因地、科学地化解。计算机和网络的出现,正深刻地改变着我们的生活方式,也极大地改变了人类的思维方式。辩证思维,是人类的一个强大工具和武器,使我们能更好地、科学地处理各种矛盾,并最终促进技术的进步和人类社会的发展。
参考文献
[1]曾国屏.科学技术进步与自然辩证法的发展,清华大学学报(哲学社会科学版),2004,19(1):79.
[2]贺清碧,论计算机、网络与人类创造现代文明的辩证关系,重庆交通学院学报(社科版),2002,2(4),45.
Abstract:Materialist dialectics thinks that contradiction is at all times and in everything. In the development of the computer technology, contradiction can be found everywhere. By giving the examples of how the dialectics works in solving those problems effectively, this article is to illustrate that dialectics not only exists in the entire process of the computer development but also plays an vital part in it. Therefore, we regard dialectics as a powerful weapon for people to recognize and reform the world.
Key Words:computer technology;contradiction;dialecticsendprint