好课推荐-以计算机的思维看世界。
读史使人明智,读诗使人灵秀,数学使人周密,科学使人深刻,伦理学使人庄重,逻辑修辞之学使人善辩:凡有所学,皆成性格.——培根
又是一年开学季,可爱的小侄女已经要面临升学的压力了,老哥让我帮忙做疏导,索性在这里聊聊专业对个人的影响好了。开篇之前,先给大家安利一本书《果壳教你选专业》里面收录了师兄师姐们读专业的切身感受,也继承了果壳以往的幽默诙谐外带点小毒舌却不失专业和严谨的风格,对学校等相关信息的收集也都比较全面,打算转专业或者报考学校的朋友看看应该是不错的参考。言归正传,今天就先聊聊计算机专业的重要思维及其对个人思考模式的影响吧。
一、个人应当具备的三种思维:
1、以化学学科为代表的实验思维(观察与归纳):实验-->观察-->发现、推断与总结
2、以数学学科为代表的理论思维(推理和演绎):假设、预设-->定义、性质、定理-->证明
3、以计算学科为代表的计算思维(设计与构造):设计、构造与计算——计算思维也是一种递归的思维
二、计算思维的本质:
计算机思维:计算机是如何工作的?
利用计算机思维:现实世界的各种事物能如何利用计算机来进行控制和处理?
计算思维:本质是抽象和自动化。即运用计算机科学的基础概念去求解问题、设计系统和理解人类行为。即计算思维的学习,不仅仅是会不会用计算机的问题,而是会不会利用计算思维来解决身边的或者社会、自然问题的问题。
数学学科和计算学科的区别
数学学科研究:如何用数学方法(函数)表达一种现象,并研究出来一种计算规则将这些函数的值计算出来。主要还是人来利用规则
计算学科:利用简单计算规则求解复杂计算,主要是机器利用规则解放人。
三、计算技术的奠基性思维及对个人的影响。
0和1思维 本质:符号化--> 计算化--> 自动化
1、语义符号化(现实生活可以用0和1来表示)--> 2、符号运算化(用0和1表示后,这些符号可以进行算数与逻辑运算)-->3、运算0、1化 -->4、 0、1自动化(0和1的计算可以用电子技术如基本门电路实现)-->5、分层构造化(变简单的门电路为组合逻辑电路以完成一系列复杂操作)-->6、构造集成化
what易经:是研究自然现象及其变化规律的,从自然现象推导出人事现象及其他现象是否有规律的
how:将现象抽象为符号,进行符号组合,利用符号组合表达自然现象。
符号化的关键:区分与命名——其术语体系。
符号化的目的:基于符号的演算——符号组合
由“易经”看“符号化及符号计算”:自然、社会现象-->(通过符号化后)-->0、1及其组合-->(通过计算化后)-->0、1组合变化;基于0、1的计算-->(通过再语义化后)-->自然、社会现象变化规律
2.3、计算0、1化
转为二进制+编码,原码、反码、补码。
使用补码可以使减法变成加法,让符号也参与计算。机器可以采用移位都方法进行乘法除法运算,左移为乘。
2.5、分层构造化
低层电路已验证正确,可被封装起来,用已封装的验证的低层电路可构造更为复杂的高层电路;如此一层一层构造
3 程序思维 与递归思维
注意:程序是构造出来的!而不是编写出来的!程序构造的手段包括组合、抽象与递归
计算系统与程序——程序的作用和本质
指令:对可执行基本动作的抽象,即控制基本动作执行的命令,(外界可以通过指令来调用封装了的基本动作)
程序:由基本动作指令构造的,若干指令的一个组合或一个执行序列,用以实现复杂动作。
程序执行机构:自动解释程序中的各种组合,并按次序调用指令(基本动作)予以执行。
计算系统=基本动作+指令+程序执行机构
组合:对基本动作通过一些基本的运算,进行各种各样的构造
抽象:将经常使用的、可由低层次系统实现的一些复杂动作,进行命名,以作为高层次系统共的指令被使用。
程序的本质:组合、 抽象、构造
递归(这里有点不熟需要再加强下):不断重复的执行一些相似性表达。用递归定义,用递归构造,用递归计算或执行——算法设计分析的关键
递归计算:由后向前带入,再由前向后计算。
迭代(递推):可以自递归基础开始,由前向后依次计算或直接计算
递归:可以自递归基础开始,由前向后依次计算或直接计算;但有些,只能由后向前带入,直到递归基础,寻找一条路径,然后再由前向后计算
递归是计算技术的典型特征,是以有限的表达方式来表达无限对象实例或无限计算步骤的一种经典的计算思维
递归函数是可计算函数的精确的数学描述---计算理论的重 计算理论的重要研究内容;
图灵机本质上也是递归:图灵可计算函数 图灵机本质上也是递归:图灵可计算函数与递归函数等价,凡可计算的函数都是一般递归函数 与递归函数等价,凡可计算的函数都是一般递归函数--- 丘奇-图灵命题 图灵命题---计算理论的重要研究内容;
小结:计算学科的一个重要任务就是构造计算系统(包括软件系统和硬件系统),而构造计算系统的关键就是程序,程序是体现计算系统千变万化的重要手段。因此我们可以说计算系统就是执行程序的系统。程序就是对控制系统基本动作的指令,进行组合、抽象与构造 ,以便使系统完成一些列的功能。而组合是将一些列动作带入到另一个动作中进而构造出复杂的动作。eg一个复杂的表达式是由一系列简单的表达式组合起来构成的。函数之间的调用关系,体现的就是一种组合。抽象就是对已经构造好的组合进行命名,然后用这个名字参与新的构造。抽象是简化构造的一种手段。
几点结论 : (1) 图灵机是一种思想模型,它由一个控制 器(有限状态转换器),一条可无限延伸的带 子和一个在带子上左右移动的读写头构成。 (2) 程序是五元组 形式的指令集。其定义了机器在一个特定 状态 q下从方格中读入一个特定字符 X时所采 取的动作为在该方格中写入符号Y, 然后向右 移一格R (或向左移一格 L或不移动N), 同时 将机器状态设为 p供下一条指令使用(3)图灵机模型被认为是计算机的基本理论模型 ----计算机是使用相应的程序来完成任何设定好的任务。图灵机是一种离散的、有 穷的、构造性的问题求解思路,一个问题的求解可以通过构造其图灵机(即程 序)来解决。 (4)图灵认为:凡是能用算法方法解决的问题也一定能用图灵机解决; 凡是 图灵机解决不了的问题任何算法也解决不了----图灵可计算性问题。
4.1 冯.诺伊曼机的基本思想 :
运算 和 存储 分离:解决了程序装载在内存,如何被cpu执行的问题
存储程序 : 指令和数据以同等地位事先 存于存储器, 可按地址寻访, 连续自动执行。指令和数据用 二进制 表示,指令由操作码(执行什么样的运算)和地址码(操作中的数据来源)组成
五大部件构成: 运算器 、 控制器 、 存储器 、 输入设备 和 输出设备
以运算器为中心,控制器负责解释指令,运算器负责执行指令以运算器为中心,控制器负责解释指令,运算器负责执行指令
运算器=(数据)寄存器+算术逻辑部件
控制器=程序计数器PC(用于存储下一条要执行的指令的地址)+指令寄存器IR(用于唇齿当前指令的内容)+信号控制器+时钟与信号发生器
4.2 自动存取——存储容量与地址空间和字长有关。
5 现代计算机系统(个人计算机的本质:也是冯诺依曼计算机,解决的了程序装在外存如何被载入内存)
5.1 构成:硬件、软件、数据、网络
工作思维:存储体系-->磁盘存取-->操作系统-->作业与进程->程序执行的管理与控制;资源组合利用体系化、管理分工合作协同化、外存程序内存进程化、硬件不足功能软件化
5.2 存储体系(核心:不同性能资源的组合优化)
意义:解决存储器的永久存储问题,存储容量问题,存储速度问题及存储器价格问题。
方式:内存+外存
5.3 分工合作与协同管理思想——化解复杂问题,进行复杂问题求解的重要思想
操作系统(Operating System:OS) 是控制和管理计算机系统各种资源( 硬件资源、软件资源和信息资源) 、合理组织计算机系统工作流程、提供用户与计算机之间接口以解释用户对机器的各种操作需求并完成这些操作的一组程序集合,是最基本、最重要的系统软件。
操作系统的作用:
操作系统是用户与计算机硬件之间的接口 。
操作系统为用户提供了虚拟机(Virtual Machine)。 。
操作系统是计算机系统的资源管理者
操作系统是如何实现复杂性控制的?
1、分工:独立管理复杂环境中的每个部件 eg:磁盘管理——管理磁盘信息的读写;内存空间馆里——管理内存空间的分配与回收;cpu管理——调度cpu去执行哪一个程序
5.4 磁盘管理:化整为零,还零为整的思想——通过文件、磁盘块、文件夹、文件分配表共同完成
文件分配表FAT:存储文件在磁盘块之间的链接信息
2、合作:以任务为驱动,中心任务:让计算机(cpu)执行存储在外存上的程序。(这么些独立管理的目的),因此需要各部件合作完成任务,这就产生了任务、作业与进城管理——管理一个程序执行中的各项工作。
3、协同:当基本的合作解决以后,关键就是协同,协同体现了自动化和最优化
1、为什么需要计算机语言?
进行问题求解,首先要有解决问题的步骤(即算法),而计算机能够理解的解决问题的步骤被称为程序,而计算机语言就是算法与机器能够理解的程序的桥梁 ,他是人和计算机都能理解的语言
2、机器语言发展史(计算机能够理解并执行什么?)
指令系统(cpu中的微处理器<中央处理单元>)cpu用二进制和编码提供了可以解释并执行的命令集合
机器语言:(所有的程序都需要转换成机器语言程序计算机才能执行)用二进制和编码方式提供的指令系统所编写程序的语言
3、怎样解决机器语言编写程序所存在的困难?——高级语言产生
汇编语言(核心:助记符);执行过程:用符号编写程序(汇编语言源程序)-->翻译程序(汇编程序)-->机器语言程序
高级语言:用类似自然语言的语句编写程序(高级语言源程序)-->编译程序-->汇编语言-->机器语言程序
高级语言和汇编语言的差别:与机器的相关性
用高级语言进行问题求解的过程:(本质还是体现了自动化)
7 算法(组合优化问题是计算学科需要求解的典型问题)
算法类问题求解的一般步骤
问题抽象及数学建模:将问题抽象为一个数学问题,并给出求解该数学问题的算法模型。
算法策略设计
算法的数据结构和控制结构设计:将数学模型转换为可由计算机自动计算的算法。
数据结构设计(逻辑结构+存储结构)——如何将数学模型中的数据转为计算机可以存储和处理的数据?
控制结构设计——如何构造和表达处理的规则,以便能够按规则逐步计算出结果。
算法的实现:用程序设计语言编写算法实现的程序。
算法的分析:分析算法的正确性和复杂性,判断能行性!
基本算法——排序算法
结构化数据表的查找与统计:对数据集合需要多遍处理时,先排序,可以减小遍历次数。
非结构化数据(文档类)——倒排建立索引:一个词汇包含在哪些文档中
声明:本文部分内容节选自《大学计算机—计算思维导论 》
课程名称:《大学计算机—计算思维导论 》
授课方:哈尔滨工业大学 战德臣、张丽杰、聂兰顺、靳玉萍
个人听课感受:特别棒的一门课,不拘泥于细节,从系统和宏观的角度来帮助理解计算机学科
课程大纲:
大学计算机课程应围绕着大学计算思维教育空间-计算之树,进行内容的组织和学习。
(I)计算与程序,主要讲授计算与计算思维,符号化、计算化和自动化,计算系统与程序构造,程序构造方法:递归与迭代,这些是由社会/自然到计算的、最基本的抽象和自动化机制;
(II)计算系统,主要讲授程序是如何被执行的,包括内存环境下程序的执行和复杂环境下借助于操作系统管理的程序的执行,以及如何编写让计算系统可以执行的程序;
(III)算法思维,主要讲授算法类问题求解框架-问题与数学建模、算法策略设计、数据结构和控制结构以及算法复杂性与正确性,还将以案例形式介绍由问题到环境,再到受限资源约束下的问题求解算法,以及难解性问题、计算和算法之间的关系等;
(IV)数据化与网络化思维。数据化思维即:数据获取==>数据管理==>数据分析与运用;网络化思维即:机器网络==>信息网络==>群体互动网络==>网络化社会。