当前课程知识点:计算思维导论 > 第七单元 > 7.7 计算学科中的抽象 > Video
大家好
这一节我们介绍
计算学科中的抽象
借助于计算机求解客观世界的问题
本质上就是
把客观世界中与问题相关的对象
及其求解问题的方法
映射成计算机世界中的对象
及其机器的动作序列
毫无疑问
这种映射就是抽象
事实上
计算学科领域到处都是抽象
鉴于本课程的定位
我们只打算就
语言
数据
控制
以及问题求解等方面
介绍计算学科中的
抽象方法及其应用与意义
一 抽象与计算机语言
人与人打交道
主要通过自然语言
像汉语 英语 法语等等
那么
人与计算机如何打交道呢
这得靠计算机语言
计算机语言有下面这么一些特点
一 它是人为设计的语言
二 计算机语言的语法简单
却非常严格
错一个标点符号都不行
三 计算机语言的文法是
上下文无关文法
四 语言的种类很多
表达能力互不相同
五 根据抽象层次不同
可分为低级
高级
甚高级语言等等
语言从低级到高级的发展
其核心思想是抽象
抽象层次越低
掌握起来越难
反之 抽象层次越高
越远离机器的特性
越接近数学或人类的习惯
自然也就越容易使用
我们首先看机器语言
最早的程序设计语言是机器语言
它是由二进制数的序列组成
不需要翻译
是计算机真正理解并能运行的唯一语言
因此 不同机型的机器语言是不同的
我们不妨看个例子
下面是一段IBMPC机的
机器语言小程序
它是用来计算
十八乘二十六加五十
这个表达式的
你们看 它看起来真像天书
难以让人接受
后来人们意识到
可用十六进制数来表示
这样至少看起来简洁方便一些
这是用十六进制代码表示的结果
即便是这样
程序也是非常难以掌握的
第二种汇编语言
就是后来
人们发现用简易的英文单词
代替约定的指令
读写程序就容易多了
这就导致了汇编语言的诞生
汇编语言是对机器语言的抽象
指令码代之以记忆符号
地址码代之以符号地址
指令的含义是显性的
因此更利于程序的
设计
阅读
和理解
但是
计算机并不能直接识别
和执行汇编语言的指令
必须翻译成机器语言指令
计算机才能执行
例如 同样计算
十八乘二十六加五十 它的值
用IBMPC机汇编语言编写的结果
就是这样的
只要有一点英语基础
大概都可以猜出这个程序是做什么的了
我们为了有个整体的印象
下面给个完整的实例
这是一个符号函数
用微软公司宏汇编语言
MASM编写的汇编程序就是这样的
这个程序我们不要求大家掌握
长点见识就可以了
我们需要知道的是
汇编语言是面向机器的
运行速度快
但因机器而异
汇编程序深奥难懂
而且编出的程序可移植性差
对于大多数非专业的人员来说
是不容易掌握和使用的
最后我们看看高级语言
一般来说
它是用类似英语的简洁方式来表达的
抽象层次较高
机器不能直接执行
因此
每种高级语言
都有相应的编译或解释程序
它把高级语言翻译成
计算机能执行的机器语言
高级语言不依赖于具体的计算机
是一种通用的计算机语言
例如 对于表达式
十八乘二十六加五十
用高级语言表示
你看形式上基本上是一样的
再比如符号函数
如果用C语言来描述
程序就是这样的
大家很容易看懂
你看 高级语言接近人们习惯使用的
自然语言和数学语言
容易学习和使用
特别地 高级语言
与具体的计算机硬件无关
所以写出来的程序可移植性好
重用率高
我们再看数据抽象
利用计算机求解问题
本质上就是对数据进行加工或处理
这里的数据既包括原始数据
也包括中间结果以及最终的计算结果
面对这些数据
我们可以从两个不同的抽象层面去理解
一是机器内部的数据表示
计算机内部最底层
是物理上的两个不同的状态
也就是晶体管的截止和导通
可以把它们抽象成“0”和“1”
然后再把二进制形式的“0”和“1”
抽象成十进制的“数”和“符号”
最后得到“抽象数据类型”乃至“对象”
从低级到高级的抽象过程
可用这么一个图来表示
数据抽象使我们能在更高的层次上操作数据
而不需关注底层的操作细节
这对程序员来说是一种解放
可以让程序员们有更多的精力
考虑问题层面如何解决的方案
二是客观对象的抽象表示
要解决客观世界的问题
必须恰当地表示客观世界的对象
也就是把客观世界的对象
如何抽象成计算机世界的对象
例如 当我们利用计算机技术
做一个公司职员的信息管理系统时
就要把被管理每一个的职员
映射成计算机世界里的一个个实体
这个过程就是一种抽象
因为我们关心的是
要管理的职员的信息
比如姓名
性别
年龄
专业等等
对于不需要关心的信息就忽略了
比如职员有多少根眉毛
发型怎么样
皮肤黑不黑等等
就像这样
第三流程控制抽象
程序是按照某种特定的方法
对数据进行加工和处理
这里就有一个加工或处理的
流程控制问题
早期
程序流程除了隐含的自上而下
从左到右外
就用GOTO语句来控制程序的转移
例如这是一个典型的实例
后来理论上已经证明
任何可计算问题的求解程序
都可以用顺序
条件和循环这三种控制结构来描述
顺序结构是一种线性的
有序的结构
计算机就按先后顺序执行各语句
一个复杂的计算任务
可以分解成若干个小的计算任务
直至每个小的计算任务
可以用一个语句来表达
顺序结构就是这么一种结构
条件选择结构是
根据条件成立与否
有选择地执行某个计算任务
这个不难理解
比如家长对你说
如果明天下雨
你就坐公交车去上学
否则你就骑自行车去学校
对你来说
明天要么坐公交车去学校
要么骑自行车去
根据天气情况
二者选择其一
我们再看一个例子
如果明天天气很好
我们就去爬山
那么天气不好
自然就不能去了
这两种情况都可以用
这样的流程结构来表示
循环控制结构能控制
一个计算任务重复执行多次
直到满足某一条件为止
通常有三种不同的语句
比如while循环语句
for循环语句
和do…while循环语句
其实这三种看似不同的循环结构
可以相互转换
让我们以while循环为例
它首先判断条件
条件成立时
就执行一次循环体
然后再判断条件
如果条件还成立
再执行一次循环体
然后再判断条件是否成立
以此类推
直到条件不成立为止
就像这个图所表示的
第四我们看看抽象与问题求解
抽象的意义不只是抽象出数据
控制流程或语言
更主要的目的
是利用抽象使我们设计的程序
能正确地映射客观事物
程序设计就是把客观世界
问题的求解过程映射为
计算机的一系列动作
用计算机能接受的形式符号
记录我们的设计
然后运行实施
动作完成了
得出的数据往往也不是问题解的形式
而是解的映射
例如在交通信号控制系统中
程序多半是输出
1
2
3
这样的数字
来表示红 绿 黄等信号
我们看这个图就是
利用计算机求解问题的示意图
我们知道
程序设计从问题开始
直到用某种语言编写出源程序
通过编译或者解释软件
可将源程序变为
可执行的机器指令程序
源程序一方面是机器动作的抽象
也就是它是面向机器的
另一方面是问题求解步骤的抽象
也就是面向问题的
程序执行后得到的结果
这些数据通过人们的解释
或者通过环境工具变换为解
也就是说
运行结果数据只是解的映射
例如三次方程求根
我们得到六个数
这六个数我们可以解释为一个实根
和两个共轭复根等等
可见
计算机求解问题从程序设计
到最后的解到处都是抽象
我们没有用机器码编写程序
机器却能够按我们的想法求解问题
其根本原理就在于抽象
好 这一节我们就介绍(到)这
谢谢大家
-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
-期末考试--作业