计算机科学导论的学习

计算机科学导论

第一章 绪论

目标:

  • 定义计算机的图灵模型;

  • 定义计算机的冯诺依曼模型;

  • 描述计算机的三大部分:硬件、数据和软件

  • 列举与计算机硬件相关的话题;

  • 列举与软件相关的话题;

  • 讨论与计算机使用相关的一些社会问题和职业道德问题;

  • 说出计算机的简单历史;

图灵模型

Alan Turing在1937年首次提出一个通用计算设备的设想。所有计算都可能在一种特殊的机器上执行,这就是现在所说的图灵机。他对这样一种机器进行了数学上的描述,但他更关注计算的哲学定义,而不是建造一台真实的机器。他将该模型建立在人们进行计算过程的行为上,并将这些行为抽象到用于计算的机器的模型中,这才真正的改变了世界。

数据处理器

把计算机定义成一个数据处理器。计算机就可以被看作是一个接受输入数据、处理数据并产生输出的黑盒。

image-20210210155845549

尽管这个模型能够体现现代计算机的功能,但是它的定义还是太宽泛。(计算器也符合定义的模型)

另一个问题是这个模型并没有说明它处理的类型以及是否可以处理一种以上的类型。它并没有清楚地说明基于这个模型的机器能完成操作的类型和数量。它是专用机器还是通用机器呢?

这种模型可以表示为一种设计用来完成特定任务的专用计算机(或者处理器),比如用来控制建筑物温度或汽车油料使用。尽管如此,计算机作为一个当今使用的术语,是一种通用的机器,它可以完成不同的工作。这表明我们需要将该模型改变为图灵模型来反映当今计算机的现实。

可编程数据处理器

图灵模型是一个适用于通用计算机的更好模型。该模型添加一个额外的元素--程序到不同的计算机器中。程序是用来告诉计算机对数据进行处理的指令集合。

image-20210210162844175

在这个图灵模型中,输出数据是依赖两方面因素的结合作用:输入数据和程序。对于不同的数据输入,如果改变程序,则可以产生不同的输出。类似地,对于同样的程序,如果改变输入数据,其 输出结果也将不同。最后,如果输入数据和程序保持不变,输出结果也将保持不变。三个示例:

  • 相同的程序,不同的输入数据

    image-20210210163657247

    显示了对于同样的程序输入不同的数据时,尽管程序相同,但因为处理的输入数据不同,输出也就不同。

  • 相同的输入数据,不同的程序

    image-20210210163854437

    显示了对于不同的程序输入相同的数据时的情形。每个程序使计算机对相同的输入数据执行不同的操作。第一个程序是使用=输入数据按大小顺序排列,第二程序是使所有的数据相加,第三个程序是找出输入数据中最小的数

    相同的输入数据,相同的程序

    我们希望无论何时对于同样的输入数据和程序,其输出结果一致。换句话说,当程序在输入相同的数据运行时,我们希望有相同的输出。

    通用图灵机

    通用图灵机是对现代计算机的首次描述,该机器只要提供了合适的程序就能做任何运算。

    可以证明,一台很强大的计算机和通用图灵机一样能进行同样的运算。我们所需要的仅仅是为这两者提供数据以及用于描述如何做运算的程序。实际上,通用图灵机能做到任何可计算的运算。

冯诺依曼模型

基于通用图灵机建造的计算机都是在存储器中储存数据。在1944~1945年期间,冯诺依曼指出,鉴于程序和数据在逻辑上是相同的,因此,程序也能存储在计算机的存储器中。

4个子系统

基于冯诺依曼模型建造的计算机分为4个子系统:存储器、算数逻辑单元、控制单元和输入/输出单元

image-20210210195813111

  1. 存储器

    存储器 是用来存储的区域,在计算机的处理过程中存储器用来存储数据和程序,我们将在一章后边讨论存储数据和程序的原因。

  2. 算数逻辑单元

    算数逻辑单元 (ALU)是用来进行计算和逻辑运算的地方。如果是一台数据处理计算机,它应该能够对数据进行算术运算(例如进行一系列的数字相加运算)。当然它也应该可以对数据进行一系列逻辑运算。(第四章)

  3. 控制单元

    控制单元 是对存储器、算术逻辑单元、输入/输出等子系统进行控制操作的单元。

  4. 输入/输出

    输入子系统负责从计算机外部接收输入数据和程序;输出子系统负责将计算机的处理结果输出到计算机外部。输入/输出子系统的定义相当广泛,它们还包括辅助存储设备,例如。用来存储处理所需的程序和数据的磁盘和磁带等。当一个磁盘用于存储处理后的输出结果,我们一般就可以认为它是输出设备,如果从磁盘上读取数据,则该磁盘就被认为是输入设备。

    存储程序概念

    冯诺依曼模型中要求程序必须存储在内存中。这和早期中只有数据才能存储在存储器中的计算机结构完全不同。完成某一任务的程序是通过操作一系列的开关或改变其配线来实现的。

    现代计算机的存储单元用来存储程序及其相应数据。这意味着数据和程序应该具有相同的格式,这是因为它们都存储在存储器中。实际上它们都是以位模式(0和1)存储在内存中的。

    指令的顺序执行

    冯诺依曼模型中的一段程序是由一组数量有限的指令组成。按照这个模型,控制单元从内存中提取一条指令,解释指令,接着执行单元。换句话说,指令就一条接着一条地顺序执行,当然,一条指令可能会请求控制单元以便跳转到其前面或者后面的指令执行,但是,这并不意味着指令没有按照顺序来执行。指令的顺序执行是基于冯诺依曼模型的计算机的初始条件。当今的计算机以最高效的顺序来执行程序。

    计算机组成部分

    我们可以认为计算机由三大部分组成:计算机硬件、数据和计算机软件。

    计算机硬件

    当今的计算机硬件基于冯诺依曼模型,且包含四个部分,尽管可以有不同类型的存储单元,不同类型的输入/输出子系统等。

    数据

    冯诺依曼模型清楚地将一台计算机定义为一台数据处理机。它接收输入数据,处理并输出相应的结果。

    1. 存储数据

    冯诺依曼模型并没有定义数据如何存储在计算机中。如果一台计算机是一台电子设备,最好的数据存储方式应该是电子信号,例如以电子信号,例如以电子信号的出现和消失的特定方式来存储数据,这意味着一台计算机可以以两种状态之一的形式来存储数据。

    显然,在日常使用的数据并不是以两种状态之一的形式存在,例如,我们在数字系统中使用的数字可以是0~9十种状态中的任何一个。但是你不能(至少是目前为止)将这类信息存储到计算机内部,除非将这类信息变换成另一种只使用两种状态(0-1)的系统。同样,你也需要处理其他类型的数据(例如文本、图像、声音、视频),它们同样也不能直接存储到计算机中,除非将它们转变成合适的形式(0和1序列)。

    1. 组织数据

      尽管数据只能以一种形式(位模式)存储在计算机内部,但在计算机外部却可以表现为不同的形式。另外,计算机(以及数据处理表示法)开创了一门新兴的研究领域--数据组织。在将数据存储到计算机中之前,能否有效地将数据组织成不同的实体或格式?

      如今,数据并不是按照杂乱无章的次序来组织信息的。数据被组织成许多小的单元,再由这些小的单元组成更大的单元。

      计算机软件

      图灵或冯诺依曼模型的主要特征是程序的概念。尽管早期的计算机并没有在计算机的存储器中存储程序,但它们还是使用了程序的概念。编程在早期的计算机中体现为系统开关的打开或闭合以及配线的改变。编程在数据实际开始处理之前是由操作员或工程师完成的一项工作。

      1. 程序必须是存储的

        在冯诺依曼模型中,这些程序被存储在计算机得到存储器中,存储器中不仅要存储数据,还要存储程序。

        image-20210210213639400

      2. 指令的序列

        这个模型还要求程序必须是有序的指令集。每一条指令操作一个或者多个数据项。因此,一条指令操作一个或者多个数据项。因此,一条指令可以改变它前面指令的作用。图中显示了一个输入两个数据,将它们相加,最后打印出结果的程序。这段程序包含4个独立的指令集。

        也许我们会问为什么程序必须由不同的指令集组成,答案是重用性。如今,计算机完成成千上万的任务,如果每一项任务的程序都是相对独立而且和其他程序之间没有任何的公用段,编程将会变成一件很困难得事情。图灵模型和冯诺依曼模型通过仔细地定义计算机可以使用的不同指令集,从而使得编程变得相对简单。程序员通过组合这些不同的指令来创建任意数量的程序。每个程序可以是不同指令的不同的组合。

         

        image-20210210213715143

      3. 算法

        要求程序包含一系列指令使得编程变得可能,但也带来了另外一些使用计算机方面的问题。程序员不仅要了解每条指令所完成的任务,还要知道怎样将这些指令结合起来完成一些特定的任务。对于一些不同的问题,程序员首先应该以循序渐进的方式来解决问题,接着尽量找到合适的指令(指令序列)来解决问题。这种按步骤解决问题的方法就是所谓的算法。

      4. 语言

        在计算机时代的早期,只要一种称为机器语言的计算机语言。程序员依靠写指令的方式(使用位模式)来解决问题。但是随着程序越来越大,采用这种模式来编写很长的程序变得单调乏味。计算机科学家们研究出利用符号来代表位模式,就像人们在日常中用符号(单词)来替代一些常用的指令一样。当然,人们在日常生活中所用的一些符号与计算机中所用的符号不同。这样计算机语言的概念就诞生了。自然语言(例如英语)是丰富的语言,并有许多正确组合单词的规则;相对而言,计算机语言只有比较有限的符号和单词。

      5. 软件工程

        在冯诺依曼模型中没有定义软件工程,软件工程是指结构化程序的设计和编写。今天,它不仅仅是用来描述完成某一任务的应用程序,还包括程序设计中所要严格遵循的原理和规则。

      6. 操作系统

        在计算机发展演变过程中,科学家们发现有一系列指令对所有程序来说是公用的。例如。一条告诉计算机在哪接收和发送数据的指令在几乎所用的程序中都要用到。如果这些指令只编写一次就可以用于所有程序,那么效率将会大大提高。这样,就出现操作系统的概念。计算机操作系统最初是为程序访问计算机部件提供方便的一种管理程序。今天,操作系统所完成的工作远不止这些。

         

 

 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值