《计算机科学概论》—第1章1.节全景图-阿里云开发者社区

开发者社区> 华章出版社> 正文

《计算机科学概论》—第1章1.节全景图

简介:

本节书摘来自华章出版社《计算机科学概论》一书中的第1章,第1.1节全景图,作者[美]内尔·黛尔(Nell Dale)约翰·路易斯(John Lewis),更多章节内容可以访问云栖社区“华章计算机”公众号查看。

第1章Computer Science Illuminated, Fifth Edition全景图
这本书将带你游历计算世界,采用自底向上、由内到外的方式探讨计算机如何运作——它们可以做什么以及如何做。计算机系统就像一个交响乐团,把许多不同的元素组织在一起,构成了一个整体,但这个整体的功能却远远大于各个部件功能的总和。这一章综述了我们要在书中慢慢剖析的各个部件,从历史的角度来观察它们,提供了一幅计算机系统的全景图。
硬件、软件、程序设计、网上冲浪和电子邮件这些术语都是你耳熟能详的。虽然有些人能够精确地定义这些与计算机相关的术语,但是其他人则对它们只有一个模糊的、直觉的概念。这一章则一视同仁,列出了通用的计算机术语,而且为我们深入探讨的计算领域搭建了平台。
目标
学完本章之后,你应该能够:
描述计算机系统的分层。
描述抽象的概念以及它与计算的关系。
描述计算机硬件和软件的历史。
描述计算机用户转换的角色。
区分系统程序员和应用程序员。
区分计算工具和计算学科。
1.1 计算系统
在本书中,我们将探讨计算系统的方方面面。注意,我们使用的术语是“计算系统”,而不是“计算机系统”。计算机是一种设备,而计算系统则是一种动态实体,用于解决问题以及与它所处的环境进行交互。计算系统由硬件、软件和它们管理的数据构成。计算机硬件是构成机器及其附件(包括机箱、电路板、芯片、电线、硬盘驱动器、键盘、显示器、打印机等)的物理元件集合。计算机软件是提供计算机执行的指令的程序集合。计算机系统的核心是它管理的信息。如果没有数据,硬件和软件都毫无用处。
本书的基本目标有三个:
让你扎实、概括地理解计算系统是如何运作的。
让你理解与欣赏现代计算系统的进化。
给你足够的关于计算的信息,以决定是否深入探讨这个主题。
这一节剩余的部分解释了如何把计算机系统分成几个抽象层以及每一层扮演的角色。接下来的一节把计算硬件和软件的开发置于历史背景中。本章的结尾讨论了计算工具和计算学科。
计算系统(computing system):通过交互解决问题的计算机硬件、软件和数据。
计算机硬件(computer hardware):计算系统的物理元件。
计算机软件(computer software):提供计算机执行的指令的程序。
1.1.1 计算系统的分层
计算系统就像一个洋葱,由许多层构成,每个分层在整个系统设计中都扮演一个特定的角色。计算系统的分层如图1-1所示,它们构成了本书的基本结构。在探讨计算系统的各个方面时,我们将不时地回顾这个“全景图”。


69741a699d3b38994b400793a4c859f53e705259

你可能不会像咬苹果那样咬洋葱,但是可以把它分割成同心环。同样,在这本书中,我们把计算分层逐个地从计算系统中剥离出来,每次只探讨一个分层,这样,每个分层自身就不那么复杂了。事实上,计算机真正所做的只是非常简单的任务,它盲目快速地执行这些任务,根本不知道可以把许多简单的任务组织成较大的复杂任务。当把各个计算机分层组织在一起时,让它们各自扮演自己的角色,这种简单组合产生的结果却是惊人的。
让我们简单地讨论一下每个分层,并且说明在本书的什么地方会详细讨论它们。我们讨论的顺序是从内到外,也称为自底向上方法。
最内层的信息层反映了在计算机上表示信息的方式,它是一个纯概念层。计算机上的信息采用二进制数字1和0管理。所以,要理解计算机处理技术,首先必须理解二进制数制以及它与其他数制(如人们日常使用的十进制数制)的关系。然后介绍了如何获取多种类型(如数字、文本、图像、音频和视频)的信息以及如何用二进制格式表示它们。第2章和第3章探讨了这些问题。
接下来的硬件层由计算机系统的物理硬件组成。计算机硬件包括的设备有门和电路,它们都按照基本原理控制电流。正是这些核心电路使专用的硬件元件(如计算机的中央处理器CPU和存储器)得以运转。第4章和第5章详细讨论了这些论题。
程序设计层负责处理软件、用于实现计算的指令以及管理数据。程序有多种形式,可以在许多层面上执行,由各种语言实现。尽管程序设计问题多种多样,但是它们的目的是相同的,即解决问题。第6~9章探讨了许多与程序设计和数据管理相关的问题。
每台计算机都用操作系统(OS)管理计算机的资源。诸如Windows XP、Linux或Mac OS这样的操作系统可以使我们与计算机系统进行交互,管理硬件设备、程序和数据间的交互方式。了解操作系统为我们做了什么通常是理解计算机的关键。第10章和第11章讨论了这些问题。
前面(内部)的分层重点在于使计算机系统运转,而应用层的重点则是用计算机解决真实世界的问题。我们通过运行应用程序在其他领域利用计算机的能力,例如设计一个建筑或打游戏。领域专用的计算机软件工具范围广大,涉及计算学的几个子学科,如信息系统、人工智能和仿真。第12章、第13章和第14章讨论了应用程序系统。
计算机不再只是某个人桌面上的孤立系统。我们使用计算机技术进行通信,通信层是计算系统操作的基础层。计算机被连接到网络上,以共享信息和资源。Internet逐渐演化成了全球性的网络,所以利用计算技术,可以与地球上的任何地方通信。World Wide Web使通信变得相对容易,它从根本上改变了计算机的使用价值,这样一般大众也能使用它。第15章和第16章讨论了这些有关计算通信的重要论题。
计算技术的使用可能会导致安全隐患的增加。目前来说,计算机系统对一些安全问题的处理还处于较低水平,而这些问题大多涉及我们的个人信息安全。第17章将讨论这些问题。
本书的大部分章节都是介绍计算机能够做什么以及如何做的。我们最终讨论了计算机不能做什么,或者至少不能做得很好。计算机在表示信息方面有固有的缺陷,程序设计只能尽可能地改善这一点。此外,还有一些问题是根本不能解决的。第18章分析了计算机的这些缺陷。
有时,我们很容易掌握细节,但却失去了全局观念。在阅读本书的过程中,请记住计算系统的全景图。每一章的首页都会提醒你目前处于计算系统的哪一个分层。所有的细节都只是为了给一个大整体贡献一个特定部分。每前进一步,你都会为它们如此精妙而吃惊不已。
1.1.2 抽象
我们刚才分析的计算系统的层次是抽象的一种例子。所谓抽象,是一种心理模型,是一种思考事情的方式,它删除或隐藏了复杂的细节。抽象只保留实现目标所必需的信息。当我们与计算机的一个分层打交道时,没有必要考虑其他分层的细节。例如,在编写程序时,我们不必关心硬件是如何执行指令的。同样,在运行应用程序时,我们也不必关心程序是如何编写的。
抽象(abstraction):删除了复杂细节的心理模型。
大量的实验表明,人在短期记忆中可以同时管理大约7条(根据个人情况,增加或减少2条)信息,这称为Miller定律,是Miller这位心理学家的第一个研究[1]。(注:此处的上角标数字表明有相应的参考文献,具体信息见书末的“参考文献”部分,全书同。)当我们需要其他信息时,可以得到它,但当我们集中于一条新信息时,其他信息就会退回二级状态。
这个概念与变戏法的人能够同时在空中保持的球数是相似的。人的智力只能同时玩7个球,当拾起一个新球时,必须抛掉另一个球。虽然7看起来是个小的数字,但关键在于每个球可以表示一种抽象,或者一大块信息。也就是说,我们抛的每个球都可以表示一个复杂的论题,只要将它看作一种想法即可。
我们的日常生活中充满了抽象。例如,要把一辆车开到商店去,我们不需要知道车是如何运转的。也就是说,我们根本不必详细地知道引擎是如何工作的,只需要知道一些基础知识,即如何与车互动以及如何操作踏板、手柄和方向盘,甚至不必同时考虑这几个方面。请参阅图1-2。
即使我们知道引擎是如何工作的,在开车时也不必考虑它。请想象一下,如果在开车时,我们必须不断地想着火花塞是如何点燃燃料从而驱动活塞推动曲柄轴的,那么就哪儿也去不了。一部汽车太复杂,我们不能同时关注它的所有方面。这些技术细节就像变戏法时抛起的球,同时抛起所有技术细节就太多了。但是,如果能够把汽车抽象成较小的规模,使我们能与之交互,那么就可以将它作为一个实体处理。此时,无关的细节将被忽略。

91cfd495261808203ba5170bf26147efd76078d6

图1-2 汽车引擎和它的抽象
顾名思义,抽象艺术是另一种抽象的例子。一幅抽象画确实表示某些东西,但绝不会陷于事实细节的泥淖。看看图1-3所示的抽象画,标题为Nude Descending a Staircase(下楼梯的裸女)。你只能看到一个女人或楼梯的迹象,因为画家对这个女人或这个楼梯的精确细节并不感兴趣。这些细节与画家的创作意图无关。事实上,现实的细节反而会妨碍那些画家认为重要的主题。

a9c721e7bbacec647699c3cbaa27ba350c76b8cd

抽象是计算的关键。计算系统的分层表现了抽象的概念。此外,抽象还以各种形式出现在各个分层中。事实上,在我们接下来要探讨的计算系统的整个进化过程中,都有抽象的影子。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:

华章出版社

官方博客
官网链接