计算机科学导论

第一章 绪论

目标:

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

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

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

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

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

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

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

图灵模型

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

数据处理器

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

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

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

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

可编程数据处理器

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

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

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

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

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

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

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

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

    通用图灵机

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

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

冯诺依曼模型

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

4个子系统

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

  1. 存储器

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

  2. 算数逻辑单元

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

  3. 控制单元

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

  4. 输入/输出

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

    存储程序概念

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

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

    指令的顺序执行

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

    计算机组成部分

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

    计算机硬件

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

    数据

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

    1. 存储数据

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

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

    1. 组织数据

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

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

      计算机软件

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

      1. 程序必须是存储的

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

      2. 指令的序列

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

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

      3. 算法

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

      4. 语言

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

      5. 软件工程

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

      6. 操作系统

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

计算机科学导论的学习相关推荐

  1. 计算机科学导论第二章,计算机科学导论第二章.doc

    计算机科学导论第二章.doc (2页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 3.9 积分  第二次作业 2.1 数值数据1. 计算机只识别二进制编 ...

  2. 计算机科学导论第五版_五月份将开始提供438项免费在线编程和计算机科学课程

    计算机科学导论第五版 Five years ago, universities like MIT and Stanford first opened up free online courses to ...

  3. 计算机科学导论课后单词,计算机科学导论课后总结

    计算机科学导论课后总结1 老师上课给我们演示了一个迷宫的程序,然后我上网查找了一下,大致学习了一下这个程序的思想. 迷宫 这个题目和数据结构-图有关 迷宫的随机生成和路径搜索主要和图的遍历有关,一般来 ...

  4. 计算机科学文章,计算机科学导论论文范文

    论文关键字: 计算科学 计算学科 计算机语言 计算机软件 网络和病毒 论文摘要:计算科学主要讲述了一种科学的思想方法,计算科学的基本概念.基本知识它的发展主线.学科分支.还有计算科学的特点.发展规律和 ...

  5. 《计算机科学导论》百度云,【麻省理工学院】Python编程和计算机科学导论公开课(中英字幕)...

    声明&链接 『[麻省理工学院]Python编程和计算机科学导论公开课(中英字幕)』资源内容来源于 52搜盘. 请认真阅读以下说明,您只有在了解并同意该说明后,才可继续访问本站. 1. 请认准罗 ...

  6. 美国计算机科学公司的全球化发展历程,计算机科学导论第1章 概述.ppt

    计算机科学导论第1章 概述 本章小结 计算机科学是以计算机为研究对象的一门科学,它是一门研究范畴十分广泛.发展非常迅速的新兴学科.全面地了解计算机科学技术的学科内涵和研究范畴,对于读者而言是十分必要的 ...

  7. 计算机科学导论专业理解,浅析计算机专业_计算机科学导论_课程的现状及思考.doc...

    浅析计算机专业_计算机科学导论_课程的现状及思考 傅勇 1,张琳 2 (1.南昌大学 人民武装学院 计算机系,江西 南昌 330043:2.南昌陆军指挥学院,江西 南昌 330043)摘要:<计 ...

  8. 计算机组成和导论,计算机科学导论五第章计算机组成

    计算机科学导论五第章计算机组成 (58页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 14.90 积分 第5章 计算机组成 计算机导论 计算机硬件系统的组 ...

  9. 计算机科学导论(5):计算机网络

    原文链接:计算机科学导论(5):计算机网络 | 远行的舟 参考:① 纪录片 <互联网时代> ② <计算机科学导论> ③ <TCP/IP 入门经典> ④ 维基百科 ⑤ ...

  10. 计算机科学导论的探讨论文,计算机科学导论论文.doc

    计算机科学概论 计算机科学是研究计算机及其周围各种现象和规律的科学,亦即研究计算机系统结构.程序系统(即软件).人工智能以及计算本身的性质和问题的学科. 计算机的发展 算盘时代: 这一阶段出现了表示语 ...

最新文章

  1. HSV RGB颜色空间互转
  2. Jenkins deploy to container部署war到tomcat(学习笔记十六)
  3. 《多核与GPU编程:工具、方法及实践》----1.5 并行程序性能的预测与测量
  4. 12种主要的Dropout方法:如何应用于DNNs,CNNs,RNNs中的数学和可视化解释
  5. node.js 安装使用http-server
  6. iOS - UITextField
  7. android build.time,Android SDK中的恒定Build.TIME
  8. Android XML解析器– XMLPullParser
  9. 伽玛校正(Gamma Correction)
  10. 系统日志查看journalctl命令详解
  11. wifi的html页面,WiFi
  12. 人流量统计管理平台汇总显示方案_实现在场人数管控
  13. openwrt 锐捷 单线多拨
  14. TouchDesigner学习 颜色控制模块
  15. 简单的LED交替闪烁程序
  16. 如何在VMware虚拟机中查看Linux的IP地址
  17. 你不知道的css——4. 基线、中线、x-height、单位ex(含文本与图标对齐技巧)
  18. 【机器人学】机器人开源项目KDL源码学习:(4)机械臂逆动力学的牛顿欧拉算法
  19. ORA-00054 资源正忙
  20. java8 access_Java语言8 连接Access数据库UCanAccess的操作介绍

热门文章

  1. SQL Prompt教程:使用SQL提示代码分析避免T-SQL技术债务
  2. flask之--钩子,异常,上下文,flask-script,模板,过滤器,csrf_token
  3. 2021年安徽全椒中学高考成绩查询,全椒中学2020届高考记录是这样的!
  4. 怎样使用计算机定时关机,如何设置电脑定时关机
  5. Android大牛博客集
  6. google搜索从入门到精通。
  7. Linux 下制作虚拟软盘镜像
  8. 【直接下载】x86_64-6.3.0-release-win32-seh-rt_v5-rev2
  9. SQL Server2012安装教程
  10. 58 集团面向亿级用户 IM 长连接服务设计与实践