当前课程知识点:计算思维导论 >  第七单元 >  7.9 技术层面的其他方法学 >  Video

返回《计算思维导论》慕课在线视频课程列表

Video在线视频

Video

下一节:Video

返回《计算思维导论》慕课在线视频列表

Video课程教案、知识点、字幕

大家好

这一节我们介绍

技术层面的其他方法学

首先我们讲

串行与并行

所谓串行

简单地说

就是事情要一件一件地做

饭要一口一口地吃

一件事情还没有做完之前

不会开始做第二件事情

所谓并行

就是人多力量大

三个臭皮匠

顶个诸葛亮的朴素思想

简单地说就是几件事情同时做

同时做的几件事情可以相关

也可以无关

我们先看一个童话故事

从前一个年轻的国王

向邻国一位聪明美丽的公主求婚

公主给他出了一道题

如果国王

能够在规定的时间内给出答案

便接受他的求婚

这道题

是求这么一个17位数的

一个真因子

国王回去后

立即开始逐个数的进行计算

他从早到晚

共计算了三万多个数

最终还是没有结果

国王向公主求情

公主告诉了他一个答案

并且说我再给你一个机会

再求一个17位数的真因子

如果还求不出

将来您只好做我的证婚人了

国王立即回国

并向时任宰相的数学家请教

宰相仔细思考后认为

一个17位数的最小的一个真因子

不会超过9位

于是他给国王出了一个主意

按自然数的顺序

给全国的老百姓每人编一个号

等公主给出题目后

立即通报全国

让每个老百姓用自己的编号

去除这个数

除尽了立即上报

赏金万两

最后

国王用这个办法求婚成功

在这个童话故事中

国王最先使用的是串行计算

依靠个人的能力

逐个数进行演算

即便最终能找到答案

也是一个十分漫长的过程

而宰相

提出的是一种并行计算

它依靠大量的人力资源

在短时间内

就能获得想要的计算结果

现实生活中

我们每天

都在串行 并行地工作和思考

比如

张山病了

去医院看医生

先挂号

再就诊

发现门诊部很多人在排队

医生看病

得按顺序一个一个的来

他需要等

这换谁都不会傻等

张山就从包里找出一本书

和一个MP3的随身听来

一边看书

一边听音乐

时不时还跟周围的人说几句话

计算机世界中的串行和并行

主要体现在两个方面

一是数据通信

分为串行通信和并行通信

二是计算

分为串行计算和并行计算

在数据通信方面

我们知道

计算机的网口

RS232

USB接口等等都是串口

打印机接口多半都是并口

机器内部的数据总线也是并行的

并行数据传输

通常是以计算机的字长为单位

字长可以是

8位

16位

32位等等

一次传送一个字长的数据

适合于外部设备

与CPU之间近距离信息交换

而串行通信则不然

数据是一位一位地传送

传送的距离可以很长

因此串行适用于

长距离而速度要求不高的场合

传输速率

用每秒中传送的位数来表示

称之为波特率(bps)

在计算方面

所谓串行计算

就是单处理器的机器上

按照计算任务的先后顺序

一个一个地进行计算

一个计算任务完成后

才能执行另一个计算任务

所谓并行计算

就是用多个处理机

来协同求解一个问题

即将被求解的问题

分解成若干个部分

各部分均由一个独立的处理机

来并行计算

显然

并行是相当自然的思维方式

我们假设

某个程序由5个子任务组成

并且每个子任务

运行时间均需要100秒

则整个计算任务需要500秒

如果我们通过

右边这样的并行计算方式

加速其中的第二个和第四个子任务

那么程序运行的总时间

将由原来的500秒分别缩减至

400秒和350秒

并行计算系统

既可以是专门设计的

含有多个处理器的高性能计算机

也可以是以某种方式互连的

若干台独立计算机构成的集群

当然

也包括多核CPU

在同时处理多个任务的时候

多核处理器

可以自然地将不同的任务

分解给不同的核

显然

并行计算基于一个简单的理论

N台计算机

应该能够提供N倍计算能力

不论当前计算机的速度如何

都可以期望

被求解的问题

在N分之一的时间内完成

但这只是一个理想的情况

因为被求解的问题

在通常情况下

都不可能被分解为

完全独立的各个部分

而是需要

进行必要的数据交换和同步

尽管如此

并行计算仍然可以使

计算系统的性能

得到实质性的改进

而改进的程度取决于

欲求解问题自身的并行程度

接下来我们看一看

局部化和信息隐藏

辩证唯物主义认为

正确处理好全局与局部

也就是整体与部分的关系

对于科学地认识世界和改造世界

具有重要的意义

整体是指事物的各内在要素

相互联系构成的有机统一体

及发展的全过程

部分

是指组成有机统一体的各个方面

要素及发展过程的某一个阶段

全局是由局部构成的

但是

全局并不是

局部的简单相加和组合

它统率局部

高于局部

程序中的局部化

强调的是把

某些数据

以及处理这些数据的程序代码

尽量放在一起

形成一个模块

这样

即便这一部分

需要变更或者出现问题

也容易管理和解决

这样的理念生活中处处都有

比如

从整个国家的管理来说

国务院下辖

外交部

国防部

发改委

教育部

科技部

公安部

(国家)安全部

监察部

民政部

司法部

财政部

国土资源部

铁道部

文化部

卫生部等等几十个部委

各部委的职责分明

自己的问题自己解决

那么教学质量的提升

应该由教育部负责

而不至于让外交部或者国防部插手

局部化最好的办法是分成模块

形式上分出显式的模块

自然就把问题局部化了

每个模块只在规定的渠道

与其他模块通信

模块内部定义的许多量

只和本模块有关

外界无法访问

在这个意义上

这些量就被模块屏蔽了

达到了数据隐藏的目的

例如

这是一个求组合数的C语言程序

在这里

k是与外部通信的量

f L是局部量

主程序无法访问

函数Fact()屏蔽了f和L

因而

在函数过程中因某种原因修改L

只局限于函数Fact()

对主程序没有影响

为了减少

模块间的耦合要多使用局部量

少用全局量

全局量还会引起

函数副作用之类的问题

局部化

是程序设计中的一个普遍原则

我们早已接受这种思想

例如

语言中

循环控制变量的定义

只在本循环内有效

每个程序段中

声明的数据

只对本程序段有效等等

这里只是说

要有意识地使程序

模块化 局部化

从而达到可读性好

容易修改和维护的目的

越是大程序越要重视这一点

模块化的概念

给每个程序设计者

提出了一个基本的问题

我们怎么样分解一个计算任务

以获得最好的模块组合

信息隐藏

就很好地回答了这个问题

直观地理解

信息隐藏就是把某些信息隐藏起来

不让他人了解

传统的信息隐藏

起源于古老的隐写术

在古希腊战争中

为了安全地传送军事情报

奴隶主剃光奴隶的头发

将情报纹在奴隶的头皮上

待头发长起来后

再派出去传送消息

我国古代也早已有

以藏头诗 藏尾诗 漏格诗

以及绘画等形式

将要表达的意思

和密语隐藏在诗文

或画卷中的特定位置

一般人只注意诗

或画的表面意境

而不会去

关注或者破解隐藏其中的密语

程序设计中的信息隐藏原理

认为模块设计决策的特征

彼此是隐藏的

换句话说

模块应当有这样的规定和设计

就是包含在模块内的信息

对于其他不需要这些信息的模块

是不可访问的

即通过信息隐藏

可以定义和实施

对模块的过程细节

和局部数据结构的存取限制

信息隐藏的目的

不仅仅是彼此是否可见的问题

更重要的是

彼此是否可操作的问题

就像两个不同的单位

如果内部的所有情况

都可以相互了解

而且一个单位可以随意

曝光或者插手

另一个单位的内部事务

那将是一个什么样的情形

现实世界显然是不可能的

别说随意插手

就连单位周围都立起围墙

增设门卫

外人不得随意进入

有效的模块化

可以定义一组独立的模块来达到

这些独立的模块彼此之间

仅仅交换那些

为了完成系统功能所必需的信息

在测试以及以后的维护期间

当需要对软件进行修改时

这样规定和设计的模块会带来

极大的好处

因为绝大多数的数据和过程

是软件其他部分不可访问的

因此

在修改中由于疏忽

而引起的错误传播

到其他部分的可能性极小

信息隐藏原理

在人与人之间相处时

也有相同的意义

每个人都有自己的隐私

比如美女的年龄

家庭的财产

身体的健康状况等等

这些隐私是不愿意让别人了解的

如果你由于好奇去打探别人的隐私

恐怕会使人家尴尬

也会给自己带来不便

严重时

就会影响人与人之间的关系

原来也许是好朋友

之后恐怕都不愿意在一起相处了

这一节就讲到这

谢谢大家

计算思维导论课程列表:

第一单元

-1.1 计算思维及其教育

--Video

第二单元

-2.1 计算是什么

--Video

-2.2 计算与自动计算

--Video

-2.3 计算机及其计算本质特征(I)

--Video

-2.4 计算机及计算的本质特征(II)

--Video

第三单元

-3.1 数的表示与模拟计算

--Video

-3.2 数的表示与数字计算

--Video

-3.3 二进制加法运算的机器化

--Video

-3.4 “九九归一”的加法运算

--Video

-3.5 二进制之优越性及问题与代价

--Video

第四单元

-4.1 从数学危机到图灵机

--Video

-4.2 图灵机的计算能力

--Video

-4.3 什么问题都能计算吗?

--Video

-4.4 冯•诺依曼机及其发展与演化

--Video

-4.5 从算盘到图灵机——机械计算的本质

--Video

-4.6 电子计算机——透过现象看本质

--Video

第五单元

-5.1 思维可机械计算吗(I)

--Video

-5.2 思维可机械计算吗(II)

--Video

第六单元

-6.1 量子理论

--Video

-6.2 量子计算机

--Video

第七单元

-7.1 人类求解问题之过程

--Video

-7.2 基于计算(机)的问题求解过程

--Video

-7.3 面向过程的结构化设计方法学

--Video

-7.4 面向对象之方法学

--Video

-7.5 面向对象技术

--Video

-7.6 抽象

--Video

-7.7 计算学科中的抽象

--Video

-7.8 时间与空间及其相互转换

--Video

-7.9 技术层面的其他方法学

--Video

-7.10 认知层面的其他方法学

--Video

第八单元

-8.1 算法与程序

--Video

-8.2 算法设计方法——枚举

--Video

-8.3 算法设计方法——递推

--Video

-8.4 算法设计方法——递归

--Video

-8.5 算法设计方法——分治

--Video

-8.6 算法设计方法——仿生

--Video

第九单元

-9.1 机器间的通信方式

--Video

-9.2 数据转发方法

--Video

-9.3 网络分层体系结构

--Video

-9.4 有趣的对称加密技术

--Video

-9.5 难解的非对称加密技术

--Video

-9.6 数字签名及其应用

--Video

-9.7 从自然智能到人工智能

--Video

-9.8 符号主义的基本思想

--Video

-9.9 连接主义Ⅰ

--Video

-9.10 连接主义Ⅱ

--Video

-9.11 行为主义的基本思想

--Video

-9.12 机器翻译的愿景与困难

--Video

-9.13 峰回路转的自然语言处理

--Video

-9.14 信息传输中的问题与挑战

--Video

-9.15 重复传输与冗余编码

--Video

-9.16 校验与校验和

--Video

-9.18 自纠错技术及应用

--Video

-9.19 两种简单的数据压缩方法

--Video

-9.20 哈夫曼编码

--Video

-9.21 数据压缩极限与LZ压缩方法

--Video

-9.22 大海捞针的搜索引擎

--Video

-9.23 网页排序方法(PageRank)

--Video

第十单元

-10.1 计算文化

--Video

期末考试

-期末考试--作业

Video笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。