1.2 什么是计算机科学
生活在现代世界的人对什么是计算机有所了解。然而,本书更关注的是计算机科学而非计算机实体。乍一看,计算机和科学似乎不太搭配。在传统的用法中,科学一词指的是对自然现象的研究。当人们谈论生命科学或物理科学时,我们理解那种用法并习以为常。而计算机科学似乎并非同类事务。计算机是人类制造出来的物品,这一事实使我们觉得将计算机的研究划分成为一门科学显得有些勉强。毕竟现代科技还创造了汽车,但我们并不称之为“汽车科学”,而是称之为“汽车工程”或“汽车技术”,为什么计算机就要与众不同呢?
要回答这个问题,重要的是要意识到计算机本身只是其中的一个方面。你能在商店买到的计算机只是一个硬件(hardware)。它是有形的实体。你可以拿起来,带回家,放在桌上。如果需要,还可以当它是门前的台阶,虽然贵了些。但如果这台机器除了硬件以外一无所有,如果它从生产线上下来是什么样,来到用户面前还是什么样的话,它也只能做一些像门前的台阶一样的工作。现代计算机是一种通用的机器,具备执行许多任务的潜力,但必须对其编程(programmed)才能挖掘出那份潜力。给计算机编程就是给它一组指令,即一个程序,这组指令详细指明解决问题的每一个必要步骤。这些程序通常被称为软件(software)。只有软件和硬件结合在一起,计算机才能进行指定的计算。
与硬件相比,软件是一个抽象的、无形的实体。它是用硬件能够解释的准确语言所表述的一系列简单步骤和操作过程。当我们谈论计算机科学时,我们主要关心的是计算机软件领域,更重要的是抽象的问题解决领域。解决问题是一项高挑战性的活动,需要创造力、技巧和原则。从许多方面来看,最好将计算机科学看作解决问题的科学,而解决问题正巧也离不开计算机。
这并不是说计算机本身就不重要。在发明计算机之前,人们只能解决相对简单的计算问题。近50年来,计算机的存在使人们能够及时高效地解决日益困难和复杂的问题。由于人们试图解决的问题越来越复杂,寻找有效解决方法的任务也更为艰巨,因此解决问题的科学必须随着计算机技术的发展而发展。
------出处《C语言的科学和艺术》