王晓峰 合肥学院计算机科学与技术系 230601 合肥 xfwang@iim.ac.cn 2009-10 计算机科学与技术 导 论 王晓峰 合肥学院计算机科学与技术系 230601 合肥 xfwang@iim.ac.cn 2009-10
内 容 简 介 第一部分 引论 第二部分 计算机科学的概念和基本知识 第三部分 计算机科学的意义、内容和方法 内 容 简 介 第一部分 引论 第二部分 计算机科学的概念和基本知识 第三部分 计算机科学的意义、内容和方法 第四部分 如何学习计算机科学和健康成长 结束
教学要求 目标:本课程是计算机科学与技术专业学生与所学专业相关的第一门课程。课程将系统性地阐述计算机科学与技术学科中的主要基本概念和问题,引导刚进入大学学习的学生对计算机科学与技术专业有一个概括而准确地了解,从而为系统地学习计算机科学与技术专业的后续课程打下一个良好的基础,树立学习专业的责任感和自豪感。 目的:要求学生掌握计算机科学与技术学科及其相关专业中的基本概念,基本方法和基本专业术语,了解本学科的基本内容、基本理论和基本技术。 结束
考核方式 课程论文:40% 单元学习体会(2次): 40% 课堂笔记: 10% 课堂表现: 10% 结束
第一章 引论 1.1 计算机发展史 1.2 计算机科学的来历 1.3 学科方法简介 1.4 一般的科学思想方法 第一章 引论 1.1 计算机发展史 1.2 计算机科学的来历 1.3 学科方法简介 1.4 一般的科学思想方法 1.5 计算机科学初学者的正确选择 返回 结束
1.1 计算机发展史 第一代计算机(1946~1956):电子管时代 第二代计算机(1957~1963):晶体管时代 1.1 计算机发展史 第一代计算机(1946~1956):电子管时代 第二代计算机(1957~1963):晶体管时代 第三代电子计算机(1964~1975):集成电路时代 第四代电子计算机(1976~至今):大规模和超大规模集成电路时代 第五代计算机(正在研制):光子、生物芯片技术 第六代计算机(未来):神经集成电路
第一代计算机(1946~1956) 世界上第一台电子计算机1946年诞生于美国宾夕法尼亚大学,即ENIAC(The Electronic Numerical Integrator and Computer) ,重30吨,占地170平方米,使用了18000个电子管,70000个电阻器,有5百万个焊接点,耗电160千瓦。 1959年9月,我国第一台每秒钟运算10000次的快速通用电子数字计算机在北京试制成功。 返回
第二代计算机(1957~1963) 用晶体管代替电子管,出现了现代计算机的一些部件:打印机、磁带、磁盘、内存、操作系统等。 出现了较为高级的COBOL(Common Business-Oriented Language)和FORTRAN(Formula Translator)等语言,以单词、语句和数学公式代替了二进制机器码。 我国第一台晶体管大型通用数字计算机1967年10月在中国科学院计算技术研究所试制成功。 美国IBM公司1959年生产的IBM 7090型晶体管电子计算机
第三代电子计算机(1964~1975) 开始使用集成电路,计算机变得更小,功耗更低,速度更快。这一时期的发展还包括使用了操作系统,使得计算机在中心程序的控制协调下可以同时运行许多不同的程序。 1973年8月,我国第一台每秒钟运算100万次的集成电路电子计算机在北京试制成功。 1964年,世界上第一个采用集成电路的通用计算机IBM 360 返回
第四代电子计算机(1976~至今) 大规模集成电路(LSI)可以在一个芯片上容纳几百个元件,超大规模集成电路(VLSI)在芯片上容纳了几十万个元件,后来的ULSI将数字扩充到百万级。 1981年,IBM推出个人计算机(PC)用于家庭、办公室和学校。苹果公司的Apple Macintosh系列于1984年推出。 IBM-PC机 苹果机 笔记本电脑 返回
第五代计算机(正在研制) 超导计算机:使用超导体元器件,耗电量仅为半导体器件制造的电脑的几千分之一,执行一个指令只需十亿分之一秒。 光计算机:利用光作为载体进行信息处理,运算速度比普通的电子计算机快1000倍 生物计算机:蛋白质分子作元件制成集成电路,称为生物芯片,存储量可以达到普通电脑的10亿倍,传递信息的速度也比人脑思维的速度快100万倍。 量子计算机:某个装置处理和计算的是量子信息,运行的是量子算法时,它就是量子计算机。 返回 超导芯片 生物芯片
第六代计算机(未来) 第六代电子计算机是模仿人的大脑判断能力和适应能力,并具有可并行处理多种数据功能的神经网络计算机。 人的大脑却具有能处理支离破碎、含糊不清信息的灵活性,第六代电子计算机将类似人脑的智慧和灵活性。 神经电子计算机的信息不是存在存储器中,而是存储在神经元之间的联络网中。若有节点断裂,电脑仍有重建资料的能力,它还具有联想记忆、视觉和声音识别能力。 返回 大规模神经集成电路,它模仿人脑的神经细胞结构
1.2 计算机科学一词的来历 由于图灵和冯.诺伊曼等人的贡献,使得存储程序式通用电子计算机在40年代诞生,实现了人类使用自动计算装置代替人工计算和手工劳动的梦。 狭义的计算机科学其研究内容覆盖了对计算机问题的一般研究。 广义的计算机科学包括的内容不仅覆盖了计算机科学与技术的研究范畴,而且还包含更多的内涵。
学科类形态 所谓学科类形态是指从事一类学科研究与发展工作且具有共性的文化方式。 历史上一共有两大学科类形态,即理论与实验。 不同的学科类形态支持按照自己特有的方式方法和科学发展轨道开展学科的研究与发展,由此产生了理论科学与实验科学两个学科类。 随着计算机科学与技术学科研究就和应用的深化,一些学者开始认识到“计算”已经最为理论与实验之外的第三种学科形态出现。
1.3 学科方法简介 科学认识事物方式方法的三步曲: 一个科学的认识:建立在对于事物性质、特点和发展变化规律的深入的认识基础之上; 1.3 学科方法简介 科学认识事物方式方法的三步曲: 一个科学的认识:建立在对于事物性质、特点和发展变化规律的深入的认识基础之上; 一套科学的方法:基于科学的认识,通过寻找、建立,改进或引用,发展解决这个问题的一套科学的方法; 一套科学的程序:着眼于具体解决这个问题,在科学认识的基础之上,依据确定的一套科学的方法,制定实际解决问题的一个严密的、科学的程序,确定第一步做什么,怎么做,第二步做什么,怎么做,确定每一步怎么检验,出了问题怎么处理,等等。
1.4 一般的科学思想方法 在通才教育观下,第一流的人才应该具备三个条件: ⑴ 具有高尚的品德和良好的人文素养; 1.4 一般的科学思想方法 在通才教育观下,第一流的人才应该具备三个条件: ⑴ 具有高尚的品德和良好的人文素养; ⑵ 具有坚实的专业基础和深厚的专业功底; ⑶ 富有创新意识,具有科学的思想方法。 所谓通才教育观在大学教育阶段是指教学内容的重点立足于一级学科的范围内开展工作,在此基础之上,根据学生的兴趣适当拓展其他学科的知识,以学科方法论和科学的思想方法作为重要的工具逐步扩大自己的学科知识结构和领域,形成良好的科学素养。
1.5 计算机科学初学者的正确选择 学习中我们不要求低年级的同学广泛借阅图书资料,因为一个初学者不具备同时掌握几个体系的能力和知识基础。 1.5 计算机科学初学者的正确选择 学习中我们不要求低年级的同学广泛借阅图书资料,因为一个初学者不具备同时掌握几个体系的能力和知识基础。 一本好的教材完全能够帮助同学们正确理解书本知识的含义,关键是要多读几遍,多思考! 如果条件允许,在理解的基础上可以多上机操作和练习,从而产生更为感性的认识。 本章结束,按下键返回本章总目录
第二章 计算机科学的基本概念 2.1 计算模型与二进制 2.2 存储程序式计算机的基本结构与工作原理 2.3 数字逻辑与集成电路 2.1 计算模型与二进制 2.2 存储程序式计算机的基本结构与工作原理 2.3 数字逻辑与集成电路 2.4 机器指令与汇编语言 2.5 算法、程序与数据组织 2.6 高级语言与程序设计技术和方法 2.7 系统软件与应用软件、软件工程方法 2.8 计算机组织与体系结构 2.9 计算机网络与通信 2.10 数据库系统 返回 结束
2.1 计算模型与二进制 什么是计算模型? 所谓计算模型是刻划计算这一概念的一种抽象的形式系统或数学系统,而算法是对计算过程步骤(或状态)的一种刻划,是计算方法的一种能行实现方式。 在计算机科学中,我们通常所说的计算模型,并不是指在其静态或动态数学描述基础上建立求解某一(类)问题计算方法的数学模型,而是指具有状态转换特征,能够对所处理的对象的数据或信息进行表示、加工、变换、输出的数学机器。
图灵机(Turing Machine ) 图灵机是英国人阿兰·图灵(Alan Turing),在1936年提出的一种理想的计算模型,其基本思想是用机器来模拟人们用纸笔进行数学运算的过程,他把这样的过程看作下列两种简单的动作: A.在纸上写上或擦除某个符号; B.把注意力从纸的一个位置移动到另一个位置。
“图灵(Turing)奖” 图灵(Turing)奖是美国计算机协会(ACM,Association for Computer Machinery)干 1966年设立的,专门奖励那些对计算机科学研究与推动计算机技术发展有卓越贡献的杰出科学家,被公认为计算机界的“诺贝尔”奖。 图灵奖对获奖者的要求极高,评奖程序也极严,一般每年只奖励一名计算机科学家,目前图灵奖由英特尔公司赞助,奖金为100,000美元。 目前为止,获此殊荣的华人仅有一位,2000年图灵奖得主姚期智(Andrew Chi-Chih Yao)。
2.1 计算模型与二进制 进位计数制:就是按进位方式实现计数的一种规则。 基数:它表示某种进位制所具有的数学符号的个数。 权:它表示某种进位制的数中不同位置上数字的单位数值。 十进制:基数为10,r的取值范围0-9。
2.1 计算模型与二进制 二进制:基数为2,r的取值范围0和1。 在早期研制计算机时,在当时的技术条件下,从便于元器件的设计和制造考虑,计算机的研制很自然地选择了二进制,而后来的实践也证明了这种选择具有极大的优点。 二进制数与十进制数的对应关系如下: 十进制数 1 2 3 4 5 6 7 8 9 二进制数 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001
二进制数四则运算 加法运算 ,采用“逢二进一”的法则 0+0=0 0+1=1 1+0=1 1+1=10 减法运算,采用“借一当二”的法则 0+0=0 0+1=1 1+0=1 1+1=10 减法运算,采用“借一当二”的法则 0-0=0 1-0=1 1-1=0 10-1=1 乘法运算 0×0=0 1×0=0 0×1=0 1×1=1 除法运算
二进制数运算示例
十进制与二进制之间的转换 二进制数转换成十进制数 十进制数转换成二进制数:整数部分除2取余;小数部分乘2取整。 例:将(286.8125)10转换成二进制数。 (1) 286/2=143(0) 143/2=71(1) 71/2=35(1) 35/2=17(1) 17/2=8(1) 8/2=4(0) 4/2=2(0) 2/2=1(0) 1/2= 0(1) 从后往前取出余数100011110 (2) 0.8125×2=1.625 0.625×2=1.25 0.25×2=0.5 0.5×2=1.0 从前往后取出整数数1101 (3) (286.8125)10=(100011110.1101)2
2.2存储程序式计算机的 基本结构与工作原理 冯·诺伊曼原理(“存贮程序控制”原理) 采用二进制形式表示数据和指令; 将程序(数据和指令序列)预先存放在主存贮器中,使计算机在工作时能够自动高速地从存贮器中取出指令,并加以执行; 由运算器 、存贮器、控制器、输入设备、输出设备五大基本部件组成计算机系统,并规定了这五大部件的基本功能。 现代计算机的工作原理基本上遵循着冯·诺伊曼原理,而按照该原理所构造的体系结构也称为“冯·诺伊曼”体系结构。
“冯·诺伊曼体系结构” 数据流程 信号流程 运算器(ALU):算术逻辑单元(Arithmetic Logic Unit),主要完成算术运算和逻辑运算以及移位、比较、传送等运算。 控制器:根据指令需要完成的功能,向各部件发出执行各种操作的命令,从而指挥计算机的各个部件进行工作。 中央处理单元(CPU):通常把运算器、控制器合在一起称为CPU。
存储器:计算机中存储数据和程序的装置,也称计算机的记忆部件。 输入设备:把程序、数据等信息,通过输入接口转换成电信号。 输出设备:输出设备能把计算机运行结果或过程,通过输出接口转换成人们所要求的直观形式。
总线(bus):在两个以上数字设备之间提供传送信息的公共通路。
冯·诺伊曼体系结构主要特点 单处理机结构,以运算器为中心; 存储程序工作方式,数据和程序以二进制代码形式存储在单元是定长的一维空间存储器中,存储器按线性编址结构进行地址访问; 通过控制器进行集中控制; 指令的串行执行,控制器根据存放在存储器中的指令序列(程序)进行工作,并由一个程序计数器控制指令的执行; 使用低级机器语言,指令由操作码和地址码组成。
计算机硬件方向 在学科的发展历程中,习惯上,人们将不带有软件系统的存储程序式电子数字计算机系统称为硬件裸机; 将硬件裸机、参与构成硬件裸机的各类部件及其研究范畴统称为硬件(方向)。
2.3 数字逻辑与集成电路 数字电路的基本知识: 模拟信号,即连续变化的物理量;数字信号,即离散的物理量。 2.3 数字逻辑与集成电路 数字电路的基本知识: 模拟信号,即连续变化的物理量;数字信号,即离散的物理量。 数字电路:对数字信号进行传输、控制或变换的电子电路。 数字系统:是用数字逻辑电路构成的,并由成千上万个电子器件来组成,由它们控制电路中电流的流向和程序的执行,完成各种算术和逻辑运算。
数字电路的特点 工作信号是二进制的数字信号,在时间上和数值上是离散的,反映在电路上就是只有低电平和高电平两种状态,表示0和1两个逻辑值。 组成数字电路的元器件对精度要求不高,只要在工作时能够可靠地区分0和1两种状态即可。
数字电路的分类 按集成度的不同: 小规模(SSI,每片数十器件)、中规模(MSI,每片数百器件)、大规模(LSI,每片数千器件)和超大规模(VLSI,每片器件数目大于1万) LSI VLSI
数字逻辑 数字逻辑是数字电路逻辑设计的简称,其内容是应用数字电路进行数字系统的逻辑设计。 电子数字计算机是由具有各种逻辑功能的逻辑部件组成的,这些逻辑部件按其结构和工作原理不同可分为组合逻辑电路和时序逻辑电路。 组合逻辑电路是由与门、或门和非门等门电路组合形成的逻辑电路,没有记忆功能,其输出信号只与当时的输入信号有关; 时序逻辑电路是由触发器和门电路组成的具有记忆能力的逻辑电路,其输出信号不仅和当时的输入信号有关,而且与电路以前的状态有关。
门电路 布尔(逻辑)运算的操作数为是0(假)和1(真); P AND Q P OR Q NOT P 当二进制的加法、乘法等运算与布尔代数的运算建立了对应关系后,就可以用逻辑部件来实现二进制数据的加法、乘法等各种运算。 门(gate):一个当给定一个布尔运算的输入值时能够产生该布尔运算的输出值的设备。
“与”、“或”、“非”三种门电路示意图 P P P ↑ ↑ ↑ ┌──┻──┓ ┌──┻──┓ ┌──┻──┓ ↑ ↑ ↑ ┌──┻──┓ ┌──┻──┓ ┌──┻──┓ │ · │ │ + │ │ ~ │ └┳─┳─┳┛ └┳─┳─┳┛ └──┳──┛ ↑ ↑ ↑ ↑ ↑ ↑ ↑ A B C A B C A (a)“与”门电路 (b)“或”门电路 (c)”非“门电路
“与”门电路 “与”门电路一般有两个以上的输入和一个输出。图(a)表示了一个“与”门电路,其输出P和输入A、B、C之间的逻辑关系可用下面的式子表示: P=A·B·C 电路设计中,用高电平信号表示1,低电平信号表示0。那么,“与”门电路只有当输入A、B、C同时为1时,输出P才为1,否则,P为0。
“或”门电路 “或”门电路可以用图(b)表示。一般地说,其是一种具有逻辑加法功能的电路,它有两个以上的输入和一个输出,其输出P和输入A、B、C之间的逻辑关系可用下面的式子表示: P=A+B+C “或”门电路仅当输入A、B、C中有一个为1时,输出P就为1,否则,P为0。
“非”门电路 “非”门电路可以用图(c)表示。一般地说,其是一种具有逻辑取反功能的电路,它只有一个输入和一个输出,其输出P和输入A之间的逻辑关系可用下面的式子表示: P=~A “非”门电路当输入A为0时,输出P就为1,否则,当输入A为1时,输出P为0。
将布尔代数和前面谈到的二进制联系起来,我们可以看到,“与”、“或”、“非”门电路的作用与集合运算“交”、“并”、“补”是一致的。 一旦门电路中仅使用两个电平信号0和1,引入二进制及其运算规则,那么,用门电路及其组合就可以实现二进制的各种运算,而对复杂电路的计算,如电路的化简就有可能通过布尔代数的方法进行,事实上也正是如此。
2.4 机器指令与汇编语言 用计算机求解一个问题,必须事先编制好程序。程序是由指令组成的。每一台计算机都设计规定了一组指令集合,称为机器指令系统。 机器指令的格式一般分为两部分,如下所示: ┌───┬──────┐ 指令格式: │操作码│ 地址部分 │ └───┴──────┘ 其中,操作码指出运算的种类,如+,-,×,÷,跳转等,地址部分用来指示参与运算的数据保存在什么地方,如存储器的某个地址或某个寄存器等。操作码和地址部分都用二进制代码表示。
机器指令的分类 算术运算指令:实现基本的算术运算操作,如:加(ADD)、减(SUB)、乘(MUL)、除(DIV)等指令; 逻辑运算指令:实现基本的逻辑运算操作,如 :与(AND)、或(OR)、非(NOT)、异或(XOR)等指令; 移位指令:实现对操作数进行移位、比较等操作。如:逻辑左移(SHL)、逻辑右移(SHR)、算术左移(SAL)、算术右移(SAR) 等指令; 数据传送指令:实现CPU的寄存器之间及寄存器和存储器之间的数据传送,如:传送 (MOV)、入栈(PUSH)和出栈(POP)等指令;
程序控制指令: 改变程序计数器的值,使计算机执行指令的顺序按要求改变。如转移 (JMP),子程序调用 (CALL),返回 (RET)等指令; 输入输出指令:实现计算机主机通过I/O接口和外部设备之间数据传送,如:端口输入指令(IN),端口输出指令(OUT); CPU控制指令:如停机指令(HLT)等。
应当注意的是,机器指令可以被机器直接理解和执行,因此对于不同的机器,其指令系统是不同的。 指令系统的日渐增大虽然给用户的程序设计带来了方便,但也带来了硬件设计复杂性的增加和因译码、存储、寻址等开销的增大而使运算速度下降。 研究发现,指令系统存在着改进的必要和可能。
机器语言 机器语言:机器指令的集合。 机器语言的优点: ①能利用机器指令精致地描述算法,编程质量高; ②所占存储空间小; ③执行速度快。 10111000 00000101 00000000 00000011 10100011 00000010 11100100 机器语言的优点: ①能利用机器指令精致地描述算法,编程质量高; ②所占存储空间小; ③执行速度快。 机器语言的缺点: ①难记、难读、难修改; ②需要人工分配内存; ③程序通用性差 。 8086机器语言示例
汇编语言 汇编指令:用某个西文字符串的缩写来表示其所代表的操作,用符号来代表数据的二进制、八进制和十进制数字序列。 汇编语言:是由一组汇编指令构成的语言,也被称为符号语言。 优点 : ①易于理解与记忆; ② 能利用机器指令精致地描述算法, 编程质量高;③所占存储空间小;④执行速度较快。 缺点:①程序通用性也差; ②与计算机硬件直接相关,故称为低级语言。 MOV AX , 5 ADD AX , 3 MOV [200H] , AX HLT 汇编语言示例
有了汇编语言,就得编写和设计汇编语言翻译程序(简称汇编程序),专门负责把使用汇编语言书写的程序翻译成可直接执行的机器指令程序。一般说来,汇编程序被看成是系统软件的一部分。 源程序(汇编语言) 目标程序(机器语言) 汇编过程
2.5 算法、过程与程序 算法:为解决一个特定问题而采取的确定的有限的步骤,在计算机科学中,算法是指令的有限序列,是一个可终止的、有序的、无歧义的、可执行的指令的集合。 例子:判断一个大于或等于3的正整数是不是一个素数。 对于该问题的求解过程可用文字描述如下: Step 1: 给出需要判断的正整数x; Step 2: 给一个变量i,令i=2; Step 3: 让x除以i,得余数r; Step 4: 若r=0,则表示x不是素数,算法结束,否则执行 下一步 ; Step 5 : 将i+1的值再次赋给i,若这时i的值等于x,则表示x 是素数,算法结束,否则回到Step 3重新开始。
算法与问题求解 用计算机进行问题的求解,大致需要经过以下几个步骤: 分析问题->建立模型->设计算法->编写程序->上机调试 其中算法的设计是问题求解过程中最具有挑战性的步骤。 问题求解的几个阶段: 阶段1:理解问题; 阶段2:提出解决这个问题的算法思想; 阶段3:形式地描述这个算法,将它表示为程序; 阶段4:评价这个程序的精确度。
算法复杂性 使用计算机计算各种问题,需要存储空间、计算时间。不同的算法计算所需要的时间和空间是不同的。所谓算法的复杂性就是对算法计算所需要的时间和空间的一种度量。 不言而喻,对于任意给定的问题,设计出复杂性尽可能地低的算法是我们在设计算法是追求的一个重要目标;另一方面,当给定的问题已有多种算法时,选择其中复杂性最低者,是我们在选用算法适应遵循的一个重要准则。
算法的复杂性可以看作是算法运行所需要的计算机资源的量,需要的时间资源的量称作时间复杂性,需要的空间资源的量称作空间复杂性。 算法的复杂性应该是只依赖于算法要解的问题的规模、算法的输入和算法本身的三元函数。 C =F(N,I,A) 其中,N表示算法要解问题的规模,I表示算法的输入,A表示算法本身,C表示算法的复杂性。
复杂性度量函数 为了简化算法复杂性分析,我们引入了复杂性度量函数,该函数表示了算法随问题规模大小变化引起的算法中抽象的基本运算执行的次数或存储空间量的变化规律。 假设某个计算问题当输入规模分别为1,2,3,…,n时,经分析算法中抽象的基本运算次数分别为1,4,9,…,n2,那么,就可以用函数n2来刻划这个算法的时间复杂性,并称这个算法的时间复杂性度量为(n2)级。 有了复杂性度量函数,一旦选定具体计算机,可以根据这台计算机对某个n值的实际运算速度比较准确地估算出对其他的n值完成计算所需要的时间。
算法的特性 有穷性:算法的执行步骤不可以无穷无尽,设计算法时应该关注算法结束的条件; 确定性:在任何情况下,算法只有唯一的一条执行路径,即对相同的操作对象只能得出相同的结果; 可行性:一个算法必须由可执行的步骤组成,即算法中的每一个步骤都应当能有效地执行,并得到确定的结果 ; 输入:一个算法有零个或多个输入,输入是算法的操作对象; 输出:一个算法有一个或多个输出,一个算法必须有输出,即操作结果,没有输出的算法是毫无意义的。
程序 程序:是一种事先编制好了具有特殊功能的指令序列。这里的指令既可以是机器指令、汇编语言指令,也可以是高级语言的语句命令,甚至还可以是用自然语言描述的运算、操作命令。 有一种程序的定义,用公式给出: 程序=数据结构+算法
2.6 高级语言与程序设计技术和方法 计算机语言:通常是一个能完整、准确和规则地表达人们的意图,并用以指挥或控制计算机工作的“符号系统”。与人类语言一样具有语言的三个基本要素:语义、语法和语序。 低级语言:机器语言、汇编语言,与计算机硬件直接相关。 高级语言:是一种由表达各种意义的“词”和“公式”,按照一定的“语法规则”来编写程序的语言,又称为程序设计语言。 高级语言的特点: ①独立于计算机硬件结构 ②用户使用面向问题的形式来描述任务 ③易学、易懂、易查错。
计算机语言的分代 第一代语言:机器语言; 第二代语言:汇编语言; 第三代语言:过程化的高级程序设计语言,如C语言,PASCAL语言; 第四代语言:面向问题的、非过程化的程序设计语言,如C++, Java, C#等; 第五代语言:更接近自然语言,更简单易用的基于人工智能的语言,仍处于概念阶段,如PROLOG、LISP。
高级语言分类 编译类:编译是指在源程序执行之前,就将源程序 “翻译”成目标代码(机器语言),因此其目标程序可以脱离其语言环境独立执行,使用比较方便、效率较高, 比如C或Pascal; 解释类:解释方式类似于 “同声翻译”,源程序一边由相应语言的解释器“翻译”成目标代码(机器语言),一边执行,因此效率比较低,而且不能生成可独立执行的可执行文件,应用程序不能脱离其解释器,比如Basic, MATLAB。 高级语言源程序“翻译”过程示意图
常见的高级语言 通用结构化计算机语言:如Basic(适用于初学者的计算机语言)、Pascal(结构化的程序设计语言,适用于教学)、C(具有高级数据结构和控制结构,亦可调用底层功能的通用语言) 专用结构化计算机语言:如Fortran(适用于科学计算的语言)、MATLAB(矩阵数学计算语言,功能强大) 适用于人工智能的计算机语言 :如Prolog(适用于人工智能的专家系统的逻辑性语言) 面向对象的计算机语言:如C++(扩展的c语言,具有了面向对象的特性)、Java(纯面向对象语言) 可视化的第四代计算机语言:如PowerBuilder(Sybase公司开发的可视化数据库应用软件开发工具)、Delphi(Borland公司开发的可视化开发工具)、Visual Foxpro(微软公司设计开发的可视化数据库开发工具)、Visual Basic(Basic语言的扩展,微软公司设计开发的可视化开发工具 )
程序设计语言的实现步骤 编译型程序设计语言的实现,大致包括了以下几步: (a)编写源程序; (b)对源程序进行编译生成目标代码; (c)连接目标代码生成可执行文件; (d)执行可执行文件完成任务。 解释性程序设计语言的实现:包括编写源程序,解释执行源程序两个过程。
程序设计方法和技术 对程序结构本质的深入研究促进了对程序质量的认识,开发程序的效率和质量取决于程序设计方法和技术,多年的研究发展了许多程序设计方法和技术。 结构化程序设计(SP)::“自顶而下,逐步求精”的设计思想,“独立功能,单出、入口”的模块仅用3种(顺序、分支、循环)基本控制结构的编码原则; 面向对象程序设计(OOP) :以对象为中心进行分析和设计,再现了人类认识事物的思维方式和解决问题的工作方式。对象是数据及对这些数据施加的操作结合在一起所构成的独立实体的总称;类是一组具有相同数据结构和相同操作的对象的描述。
2.7 系统软件与应用软件 软件是计算机程序、方法、规范及其相应的文稿以及在计算机上运行时所必须的数据。 软件 = 程序 + 数据 + 文档 程序是按事先设计的功能和性能要求执行的指令序列; 数据是使程序能适当地操纵信息的数据结构; 文档是指描述程序开发,维护和使用相关的图文材料 。
软件与硬件的不同 软件是由开发或工程化而形成的,而不是传统意义上的制造产生的,因此软件成本集中于开发和维护上面; 在软件的运行和使用期间,没有硬件那样的机械磨损,老化问题。然而在其生命期中,软件会经历修改(维护),有可能引入新的错误,最终将导致软件本身被抛弃或重新开发; 大多数软件是自定义,而不是通过已有的构件组装而来的。
软件系统 硬件 计算机系统 操作系统 支撑软件 软件系统 应用软件
系统软件 负责管理计算机系统中各种独立的硬件,使得它们可以协调工作。 系统软件使得计算机使用者和其他软件将计算机当作一个整体,而不需要顾及到底层每个硬件是如何工作的。 包括操作系统和一系列基本的工具(比如编译器,数据库管理,存储器格式化,文件系统管理,用户身份验证,驱动管理,网络连接等方面的工具)。
支撑软件 指在某一特定范围内对各种应用对象具有通用性的软件。其支撑各种软件的开发与维护的软件,又称为软件开发环境,它主要包括环境数据库、各种接口软件和工具组。 著名的软件开发环境有IBM公司的Web Sphere,微软公司的Studio.NET、Visual Studio等。
应用软件 相对于系统软件而言,应用软件是对用户在计算机系统上针对各种具体的应用问题开发的一类专用程序或软件的总称。 办公自动化软件,如Microsoft Office, WPS 图形图像处理软件,如Photoshop, Painter, CorelDraw 多媒体及动画制作软件,如3DS MAX, Authorware, Director 网页制作软件,如Dreamweaver, FrontPage, Flash 各种实用工具,这类软件主要用于辅助管理和使用电脑,如磁盘分区软件Partition Magic、磁盘复制软件Ghost、文件压缩/解压缩软件WinRAR、电子词典金山词霸、杀毒软件瑞星、卡巴斯基、图像浏览软件ACDSee 、系统测试与系统优化软件等等。
软件生命周期 软件生命周期是指软件产品从考虑其概念开始到该软件产品交付使用,直至最终退役为止的整个过程。 一般包括计划、分析、设计、编码、测试、集成、交付、维护等阶段。
软件测试 由于软件的正确性目前还不能依靠严格的数学方式进行验证,软件测试仍是软件质量保证关键元素,统计资料表明,测试的工作量约占整个项目开发工作量的 40% 左右。 软件测试目标: 测试是一个为了寻找错误而运行程序的过程; 一个好的测试用例在于能发现至今未发现的错误; 一个成功的测试是发现了迄今尚未发现的错误的测试。 设计测试的目标是想以最少的时间和人力系统地揭示软件中潜在的各种错误和缺陷,而不是试图证明软件的正确。
软件文档编制 文档是软件产品的一部分,没有文档的软件不称其为软件。 提高软件开发过程的能见度; 记录开发过程中的有关信息; 提高开发效率; 作为一定阶段的工作成果和结束标志; 便于潜在用户了解软件的功能、性能等各项指标。 整个软件开发过程需要提交如下文档: 可行性研究报告;项目开发计划;软件需要求说明书;数据要求说明书;概要设计说明书;详细设计说明书;用户手册;操作手册;测试计划;测试分析报告;开发进度月报;项目开发总结报告;维护修改建议。
软件工程师的职业道德 ACM(美国计算机协会)和IEEE(美国电气电子工程师协会)的计算机学会制定了“软件工程职业道德准则”,该准则的核心是“公众利益”,它强调了软件工程师对全体公众的义务:关心公众的健康、安全和幸福是第一位的。 流氓软件:它们既不属于正规商业软件,也不属于真正的病毒;既有一定的实用价值,也会给用户带来种种干扰。这些程序共同的特征是未经用户许可强行潜伏到用户电脑中,而且此类程序无卸载程序,无法正常卸载和删除,强行删除后还会自动生成。包括恶意广告软件、间谍软件、恶意共享软件。
2.8 计算机组织与体系结构 计算机体系结构是使用机器语言编写程序的用户可以看到的一个机器的抽象结构。 对这一结构实现的硬件组成属于计算机组成原理研究的范畴 硬件的互联结构、软件结构及相互关系形成的计算机系统的总体结构,支持这种结构的基本算法,还有以总体结构为基础的面向用户的程序设计语言等内容构成了计算机体系结构的技术范畴。
经典计算机体系结构概念的实质是计算机系统中软硬件界面的确定,其界面之上的是软件的功能,界面之下的是硬件和固件的功能。 广义的计算机体系结构的概念,既包括经典计算机体系结构的概念范畴,还包括了对计算机组成和计算机实现技术的研究。
对冯·诺依曼体系结构的改进 1. 分布的I/O处理能力
2.保护的存储器空间 是否把指令和数据放在同一存储器中,不同计算机却有不同的考虑 ,但绝大多数计算机都规定:在执行过程中不准修改程序 3.存储器组织结构的发展 按地址访问的存储器 通用寄存器 按内容访问的相联存储器CAM 高速缓冲存储器Cache
4. 并行处理技术 把一个作业(程序)划分成能并行执行的多个任务(程序段),把每个任务分配给一个处理机执行,构成多机并行处理系统 5. 指令集的发展 复杂指令集计算机CISC (Complex Instruction Set Computer) 精简指令集计算机RISC (Reduced Instruction Set Computer)
当今计算机体系结构的研究内容 进一步提高单个微处理器的性能; 基于微处理器的多处理器体系结构; 全面提高计算机的系统性能:可用性,可维护性,可缩放性; 新型器件的处理器:如光计算机;新原理的计算机(生物,分子,DNA计算机等)。
2.9 计算机网络与通信 计算机网络:把分布在不同地理位置上的具有独立功能的多台计算机、终端及其附属设备,通过通信设备和线路将其连接起来,通过功能完善的网络软件(网络协议、信息交换方式、控制程序和网络操作系统)来实现硬件、软件和数据资源共享的系统。 计算机网络也可定义为“自主计算机的互连集合”。 互连表示两个计算机之间有交换信息的能力; 自主表示网中计算机是独立自主的,它们之间没有明显的主从关系,即一台计算机不能控制网中的另一台计算机。
计算机网络的功能 数据通信:即数据传送,是计算机网络的最基本功能之一。 资源共享:充分利用计算机系统资源是组建计算机网络的主要目的之一,网络资源包括硬件、软件和数据资源。 提高计算机的可靠性和可用性:在计算机网络中,每种资源(尤其程序和数据)可以存放在多个地点,而用户可以通过多种途径来访问网内的某个资源,从而避免了单点失效对用户产生的影响。 提高计算性能,利于分布式处理:在计算机网络中,我们可以通过一定的算法把问题分解,把计算任务分散到不同的计算机上进行分布处理,并最终得出结果,费用和传统的大型机相比则大为降低。
计算机网络的历史 1969年,为了能在爆发核战争时保障通信联络,美国国防部高级研究计划署ARPA资助建立了世界上第一个分组交换试验网ARPANET,连接美国四个大学。 1980年,TCP/IP协议研制成功,1982年,ARPANET开始采用IP协议。 1986年美国国家科学基金会NSF资助建成了基于TCP/IP技术的主干网NSFNET,连接美国的若干超级计算中心、主要大学和研究机构,世界上第一个互联网产生。 1994年,中国建设了CERNET示范网工程,这是我国第一个全国性TCP/IP互联网。 2005年底全球互联网用户的数量已经达到了10亿。
计算机网络的分类 按网络的覆盖范围 局域网主要应用于连接校园、工厂以及机关的个人计算机或工作站; 广域网通常是公用网或专用网(如银行、军队等单位的专用网络); 多个网络相互连接构成的集合称为互联网,因特网是互联网的一种,它覆盖了全世界的范围。 分布距离 覆盖范围 网络种类 10米 房间 局域网 100米 建筑物 1公里 校园 10公里 城市 城域网 100公里 国家 广域网 1000公里 洲或洲际 互联网
数据通信的基本概念 数据:传递信息的有意义的实体,是表征事物的形式。模拟数据是指在某个区间连续变化的物理量,而数字数据是指离散的不连续的量。 信号:是数据的电编码或电磁编码。模拟信号是指一种连续变化的电信号,它用电信号模拟原有信息。数字信号是指一种离散变化的电信号,它的取值是有限多个。
模拟信号 数字信号 采样、编码 解码、平滑 模拟通信:利用模拟信号来传递消息,普通的电话、广播、电视等都属于模拟通信。 数字通信:利用数字信号来传递消息,计算机通信、数字电话以及数字电视都属于数字通信。 数据传输速率:每秒钟传输多少位数据,单位为比特/秒,记作bps。
因特网 因特网(Internet )是广域网的一种,它把遍布在全世界各个地区的人们通过网络连接在一起,实现文件传递、协同办公、信息浏览、电子商务、多媒体应用等功能。 为了保证能够正确地传输数据,需要标识网络上的每台机器和设备,因此为他们分配一个唯一的身份证即IP地址。
IP地址 IP地址(Internet Protocol Address)共有32位地址,一般以4个字节表示,每个字节的数字又用十进制表示,即每个字节的数的范围是0~255,且每个数字之间用点隔开,比如10.34.88.45、172.16.122.204、192.168.0.2 等。 网络号码 主机号码 l类型 地址结构 起始网络号 终止网络号 网络数 每个网络主机数 A 8位+24位 1 126 16777214 B 16位+16位 128.1 191.254 16382 65534 C 24位+8位 192.0.1 223.225.254 2097150 254
域名:服务名+主机所在机构标识+顶级域名。如下所示: www.sohu.com www.sina.com.cn 其中:www代表万维网服务;sohu和sina是公司的标识;com代表商业机构;cn代表中国 顶级域名常见的有两类:国家级顶级域名,如cn代表中国,kr代表韩国;通用的顶级域名,如com代表商业机构,gov代表政府,edu代表教育。 完成域名到IP地址的转换工作的计算机就是域名服务器。通过建立DNS数据库,域名服务器可以记录主机名称与IP地址的对应关系,并为所有访问Internet的客户机提供“域名解析”服务。
计算机网络的主要研究内容 网络体系结构:体系结构是计算机网络的根本,其研究目标是采用新的设计理论和设计思想,优化网络的组成结构,提高网络性能,丰富网络功能。 网络协议:协议是网络通信的灵魂,其研究包括协议设计、服务定义、协议的形式化描述、协议验证、协议测试和自动实现等多个方面。 通信技术:通信技术是计算机网络的基础,目前以3G为代表的移动通信技术是该领域的研究热点。 网络安全:主要包括数据加密及算法实现、协议的安全性、软件的安全性、攻击检测及防护、安全策略等。
2.10 数据库系统 数据库是指长期存储在计算机内,有组织的、统一管理的相关数据的集合。 数据的形式可以是数字、文字、图形、图象、声音或视频等。数据经过解释并赋予一定的意义之后,便成为信息。 信息、数据和数据处理的关系可以表示为: 信息=数据+数据处理
数据库系统(Database System,DBS):是实现有组织地、动态地存储大量关联数据,方便多用户访问的计算机硬件、软件和数据资源组成的系统,即它是基于数据库技术的计算机应用系统。 数据库管理系统(Database Management System,DBMS):是位于用户与操作系统之间的一层数据管理软件,它为用户或应用程序提供访问数据库的方法,包括数据库的建立、查询、更新和各种数据控制。 常用的关系型数据库管理系统有ORACLE、SQL Server、Sybase、DB2、INFORMIX、ACCESS、DBASE、FOXPRO等。
数据库系统的组成 数据库系统由数据库、硬件、软件和用户组成: 数据库; 硬件:特别要关注内存、外存、I/O存取速度、可支持终端数和性能稳定性等硬件指标,还需要考虑支持联网能力和配备必要的后备存储器等因素; 软件:包括数据库管理系统、操作系统、各种高级程序设计语言和应用开发支撑软件; 用户:包括数据库管理员(DataBase Administrator ,DBA) ,他负责控制数据整体结构,负责数据库系统的正常运行,负责创建、监控和维护数据库结构,用户还包括应用程序员和最终用户(使用应用程序的非计算机人员)。
SQL语言 SQL是Structrued Query Language(结构化查询语言)的缩写,包括了数据定义、数据操纵和数据控制等功能。
SQL语言示例 CREATE TABLE Students(Name char(10), Num char(10) , Age int) INSERT INTO students VALUES('John' , ‘SA2091' ,16) DELETE FROM Students WHERE Name=“Paul" SELECT Name FROM Students WHERE Age>=17 SELECT Name FROM Students ORDER BY Age DESC DROP TABLE Students
数据库的安全性 数据库的安全性是指保护数据库以防止不合法的使用所造成的数据泄露、更改或破坏。 在数据库系统中提供两种安全性控制:用户标识和鉴定与数据存取控制。 用户标识和鉴定:外层安全保护措施,由系统提供一定的方式让用户标识自己的名字或身份。每次用户要求进入系统时,由系统进行核对,通过鉴定后才提供机器使用权。 数据存取控制:(1) 定义用户权限,并将用户权限登记到数据字典中。(2) 合法权限检查,每当用户发出存取数据库的操作请求后,数据库管理系统查找数据字典,根据安全规则进行合法权限检查,若用户的操作请求超出了定义的权限,系统将拒绝执行此操作。
第三章 计算机科学的意义、内容和方法 3.1 什么是计算机科学? 3.2 学科的基本问题 3.3 计算机科学发展主线 第三章 计算机科学的意义、内容和方法 3.1 什么是计算机科学? 3.2 学科的基本问题 3.3 计算机科学发展主线 3.4 计算科学的主要研究领域 3.5 计算机科学与数学和其它相关学科的关系 3.6 计算机科学的学科形态与核心概念 3.7 计算机科学的典型方法与典型实例 3.8 计算机科学学科特点、发展规律和趋势 3.9 计算机科学知识组织结构及其演变 返回 结束
3.1 什么是计算机科学? 计算机科学是一门包含各种各样与计算和信息处理相关主题的系统学科,从抽象的算法分析、形式化语法等等,到更具体的主题如编程语言、程序设计、软件和硬件等。 定义:计算机科学是研究计算机设计、制造以及计算机信息获取、存储表示、处理控制等理论和技术的学科,是对描述和变换信息的算法,包括其理论、分析、设计、实现和应用的系统研究。 本学科来源于对数理逻辑、计算模型、算法理论和自动计算机器的研究,形成于20世纪30年代后期。
计算机科学需要研究的课题是: 计算机程序能做什么和不能做什么(可计算性); 如何使程序更高效的执行特定任务(算法和复杂性理论); 程序如何存取不同类型的数据(数据结构和数据库); 程序如何显得更具有智能(人工智能); 人类如何与程序沟通(人机互动和人机界面)。
早期,英国的剑桥大学和其他大学已经开始教授计算机科学课程,但它只被视为数学或工程学的一个分支,并非独立的学科; 世界上第一个计算机科学系是由美国的普渡大学在1962年设立; 第一个计算机学院于1980年在美国的东北大学设立; 现在,国内外绝大多数大学都把计算机科学系列为独立的部门,一部分将它与工程系、应用数学系或其他学科联合成为信息学院。
计算机科学的大部分研究是基于“冯·诺依曼计算机”和“图灵机”的 。 尽管在计算的时间,空间效率上有很大的差异,但可以说现有的各种计算设备在计算的能力上是等同的。 计算机只是一种计算的工具,著名的计算机科学家 Dijkstra 有一句名言“计算机科学之关注于计算机并不甚于天文学之关注于望远镜”。
3.2学科的基本问题 计算的平台和环境问题,它常归结为各个不同层面的计算模型问题; 计算过程的能行操作和效率问题,它常归结为某一恰当计算模型上的算法问题和计算的正确性问题。 “能行性”这个基本问题决定了计算机本身的结构和它处理的对象都是离散型的,即使是连续型的问题也必须在转化为离散型问题后才能被计算机处理。 计算机的程序正确性问题。对该问题的解决只能选择程序正确性证明或形式软件开发方法(将确保软件正确性的技术贯穿于整个软件开发的始终)。 并发程序和并行程序的动态语义定值问题一直是一个尚未彻底解决的困难问题,从而导致在并发和并行软件的开发中证明这类程序的正确性成为一个悬而未决的问题。
3.3 计算机科学的发展主线 在计算科学发展的历程中,有着不断地追求制造出各种新型计算机系统,拓展和提高计算机的应用领域和应用水平这样两个目标。 在基础研究、应用基础研究和技术开发与应用的研究三个层面上,学科逐步发展形成了三条相对独立的主线,他们是: ⑴ 计算模型与计算机系统; ⑵ 计算模型、语言与软件开发方法学; ⑶ 应用数学与计算机应用。
3.4 计算科学的主要的研究领域 形式化基础 逻辑学 谓词逻辑 模态逻辑 时序逻辑 描述逻辑 数学 谓词逻辑 模态逻辑 时序逻辑 描述逻辑 数学 泛代数 递归论 模型论 概率论和数理统计 逻辑代数 布尔代数 离散数学 组合数学 图论 网论 信息论
理论计算机科学 形式语言 自动机 可计算性 算法 计算复杂性 描述复杂性 编译器 程序设计理论 信息论 类型理论 指称语义 微程序 遗传算法 并行计算 计算方法学 人工智能 模式识别(语音识别、文字识别、签名识别、人脸识别、指纹识别) 计算机图形学 图像处理 计算机视觉 仿真与建模 数字信号处理 文档与文本处理
计算机应用 数值计算 数值分析 定理机器证明 计算机代数 金融计算 工程计算(计算机化学、计算机物理、生物信息论、计算生物学) 工厂自动化 办公室自动化 人工智能 信息存储与检索 符号语言处理 计算机辅助科学(计算机辅助设计、计算机辅助教学、计算机辅助管理、计算机辅助软件工程)、机器人学 多媒体技术 人机交互 电子商务
特定技术 测试基准 机器视觉 数据压缩 软件设计模式 文件格式 信息安全 国际互联网络 超大规模集成电路设计 网络传输协议 网络处理器技术 整数运算器 浮点运算器 矩阵运算处理器 网格
3.5 计算科学与数学和其它相关学科的关系 计算机与数学的关系一直处于一种相互依存、相互促进的良性循环之中。从计算机的发明直到它的最新的进展,无不有数学在起着关键性的作用;同时,在计算机的设计、制造、改进和使用过程中提出的大量带有挑战性的问题,又为数学理论发展注入了新鲜活力,推动着数学本身向前发展。 数学是计算机产生的基础:逻辑代数从理论上解决了电子管作为计算机的元件问题,从此为二进制计算机的产生打下了基础,布尔代数的逻辑运算可以通过继电器电路来实现。
数学是计算机发展的理论依据: 离散数学,形成于二十世纪七十年代,是现代数学的一个重要分支,主要包括数理逻辑、图论等内容。离散数学是计算机科学基础理论的核心课程。它不仅充分地描述了计算机科学的离散性特点,而且为后继课程,如数据结构、编译系统、操作系统、数据库原理和计算机网络等的学习提供必要的数学基础,培养和提高学习者的抽象思维能力。 线性代数,特别是矩阵理论,在计算机科学中的应用非常多而广泛,涉及到人工智能、模式识别、计算机图形学等多个领域。
高度抽象性,数学最大的特点在于抛开现实事物的物理、化学和生物学等特性而仅保留其量的关系和空间的形式。 数学的基本特征 高度抽象性,数学最大的特点在于抛开现实事物的物理、化学和生物学等特性而仅保留其量的关系和空间的形式。 逻辑严密性,正是以数学的逻辑严密性为出发点,在需要用数学工具解决具体问题时只有严格遵守形式逻辑的基本法则,充分保证逻辑的可靠性才能保证最终结论的正确性。 普遍适用性,数学的高度抽象性决定了它的普遍适用性,数学广泛地应用于其他科学与技术甚至人们的日常生活之中。
为了将计算机科学推向更高的层次和水平,学科的发展近年来正在更多地依赖其它学科的发展和进步、参照和利用其它学科的思想、方法和成果。 当前同本学科联系最紧密的学科是哲学中的逻辑学,数学中的构造性数学,电学中的(微)电子科学、通信系统原理、结构与安全性,在不远的将来可能是光电子科学、生物科学中的遗传学和神经生理学,物理和化学科学中的精细材料科学等。
3.6 计算机科学的学科形态 与核心概念 所谓学科形态,是指从事该领域工作的文化方式。 对计算机科学的深入研究使我们已知该学科存在三种主要的学科形态,即理论、抽象和设计。 三种不同的学科形态实际上反映了在学科领域内从事工作的三种文化方式: 理论关心的是以形式化方式揭示对象的性质和相互之间的关系,这是一种按照某种科学规律构筑人工科学的典型模式; 抽象关心的是以实验方式揭示对象的性质和相互之间的关系; 而设计关心的是以生产方式对这些性质和关系的一些特定的实现,完成具体而有用的任务。
第一种形态是理论,基于计算机科学的数学基础和计算机科学理论,广泛采用数学的研究方法。按统一的合理的理论发展过程,包含以下四个步骤: ⑴ 对研究对象的概念抽象(定义); ⑵ 假设对象的基本性质和对象之间可能存在的关系(定理); ⑶ 确定这些性质和关系是否正确(证明); ⑷ 解释结果(与计算机系统或研究对象形成对应)。 这个学科形态的基本特征是其研究内容的构造性数学特征,是区别于更广泛的数学科学学科形态的典型特征。
第二种形态是抽象,或称模型化,基于计算科学的实验科学方法,广泛采用实验物理学的研究方法。按照对客观现象和规律的实验研究过程,包含以下四个步骤: ⑴ 确定可能世界(环境)并形成假设 ⑵ 构造模型并做出预言; ⑶ 设计实验并收集数据; ⑷ 分析结果。 这个学科形态主要出现在计算科学中与硬件设计和实验有关的研究之中。当计算科学理论比较深奥,理解较为困难时,不少科研人员在大致了解理论、方法和技术的情况下,基于经验和技能常以这种学科形态方式开展工作。
第三种形态是设计,基于工程,广泛采用工程科学(如建筑工程)的研究方法。按照为解决某一个问题构作系统或装置的过程,包含以下四个步骤: ⑴ 叙述要求; ⑵ 给定技术条件; ⑶ 设计并实现该系统或装置; ⑷ 测试和分析该系统。 这个学科形态广泛出现在计算科学中与硬件、软件、应用有关的设计和实现之中。当计算科学理论(包括技术理论)已解决某一问题后,科研人员在正确理解理论、方法和技术的情况下,可以十分有效地以这种学科形态方式开展工作。
在计算机科学与技术的发展中,有一批在各个分支学科中重复出现的概念,即核心概念。它们虽然在各分支学科中的具体解释形式上有差异,但相互之间存在着重要的联系。 核心概念一般具有如下特点: ⑴ 在本学科的不少分支学科中经常出现,甚至在学科中普遍出现; ⑵ 在计算科学理论、抽象和设计这三个过程的各个层面上都有许多示例; ⑶ 在理论上具有可延展和变形的作用,在技术上具有高度的独立性。
3.7 计算机科学的典型方法 与典型实例 典型方法是属于方法论的内容,就目前我们对学科的认识,已知有下列几种典型的方法: 内涵与外延的方法 以递归、归纳和迭代技术形式为代表的构造性方法 公理化方法 快速原型方法 演化方法 展开与规约方法
内涵与外延是哲学的两个基本的概念。 内涵是指一个概念所反映的事物的本质属性的总和,也就是概念的内容。 外延是指概念所界定的所有对象的集合,即所有满足概念定义属性的对象的集合。 内涵与外延的方法广泛出现在计算科学的许多分支学科中,是一个能够对无穷对象的集合作分类处理的方法。
构造性方法是整个计算科学学科最本质的方法,是一种能够对论域为无穷的客观事物按其有限构造特征进行处理的方法。 例:谓词逻辑系统中合式公式的定义: F(a1 ,...,an )是合式公式。其中,ai是表示不空论域中个体的形式符号,即个体词; 如果A是合式公式,则 A是合式公式; 如果A和B是合式公式,则[A∧B],[A∨B],[A→B],[AB]是合式公式; 如果A(a)是合式公式,a在其中出现,x不再其中出现,则xA(x),xA(x)是合式公式。
公理化方法能帮助学生认识一个系统如何严格表述,认识到完备性和无矛盾性对一个公理系统的重要性,认识每一条公理深刻的背景,独立性和它的作用。 可惜,其深刻的哲学意义、学术深度和理解上的困难性使得它在本科的课程中较少出现。 近年来,这一方法出现在一些学科的前沿研究中。除了形式语义学的研究中使用公理化方法外,开放信息系统的思想和设计,自定义逻辑框架系统的研究,以及分布式代数系统的研究都采用了公理化方法或吸取了公理化方法的思想。
快速原型方法是计算科学的典型方法,最初,快速原型的思想出现在软件工程的研究之中。 其主要内涵是:在软件的开发中,随着程序代码量的日渐庞大,开发费用和周期的不断增长,人们迫切需要对软件开发中引入的新思想、新原理和采用的新方法、新技术的可行性进行验证,通过验证过程提出改进意见,为实际产品的工程技术开发提供原理性的指导。 快速原型方法事实上是一种低成本系统原理验证性实验方法。
演化(Evolution)方法,也叫进化方法,是一种模拟事物演进过程进而求解问题的方法。 其主要思想是,针对具体的问题,首先找到解决该问题的办法(或算法、程序、电路等),然后通过各种有效的技术方法改进解决问题的办法(或算法、程序、电路等)进而改进求解的结果。 演化方法在使用时常常与其他典型方法联系在一起。例如,与快速原型和展开方法合用,可以开发一类特殊软件的程序自动生成系统,如人机界面自动生成系统。
展开与归约是一对技术概念,是在处理实际事务的过程中对两个相向的处理活动所作的一般化的方法学概括。 展开的内涵是从一个较为抽象的目标(对象)出发,通过一系列的过程操作或变换,将抽象的目标(对象)转换为具体的细节描述。 规约方法可以视为展开过程的逆过程。
在人类社会的发展过程中,人们提出过许多具有深远意义的科学问题,其中一些对计算机学科某些分支领域的形成和发展起到了非常重要的作用;同时在计算机学科的发展过程中,人们还给出了不少反映该学科某一方面本质特征的典型问题,在这里一并归于计算机学科的典型实例。 典型实例:指那些反映学科某一方面内在规律和典型问题本质内容的实例。 典型实例往往以简化形式深入浅出地表达学科深奥的科学规律和学科典型问题的本质内容,因此,在学科研究中常常被用来辅助说明思想、原理、方法和技术,用来比较思想、理论、方法和技术的优劣。 如哲学家共餐问题、生产者与消费者问题、八皇后问题、九宫排定问题等。
生产者与消费者问题 假设一有限缓冲区,容量为n,两类线程分别是生产者和消费者。生产者首先进行产品生产,然后将产品放入缓冲区中供消费者消费;消费者则是从缓冲区中获得产品,然后释放缓冲区。 这是一个经典的进程同步问题,反映的是计算机在解决问题中如何处理互斥和同步的问题。 生产者 消费者 缓冲区 生产者 消费者 生产者 消费者
九宫排定问题 九宫问题是人工智能和算法设计领域中的一个经典问题,常用来检验各种搜索算法的效率。 3 6 5 2 8 1 7 4 1 2 3 目标状态 初始状态 中间状态 3 5 2 6 8 1 7 4 1 2 3 8 4 7 6 5
3.8 计算机科学的特点、发展规律 和趋势 计算机科学的特点 IT技术发展迅速,知识更新快; 学科知识量大,内容丰富; 交叉学科多,应用广泛; 学科的前沿性和知识普及性并重; 基础理论与实践动手并重。
计算机科学的发展规律 理论和技术是计算科学两个互为依托的侧面; 数学是计算机科学与技术学科的主要基础,以离散数学为代表的应用数学是描述学科理论、方法和技术的主要工具,而微电子技术和程序技术则是反映学科产品的主要技术形式; 计算机科学与技术学科中不仅许多理论是用数学描述的,而且许多技术也是用数学描述的,学科理论、技术与工程相互之间的界限十分模糊; 目前整体上理论研究滞后于技术开发,但随着学科研究和应用的不断深化,理论的重要性地位将愈来愈突出,而技术则渐渐退居为次要的位置。
计算机科学的发展趋势 几乎在学科各个方向和层面,随着计算机科学技术的不断发展和学科研究的深化,研究内容也变得复杂。先是发展相应的计算模型和数学工具,然后依靠计算模型和数学工具将研究工作继续深入下去; 对计算模型和各种新型计算机体系结构、人工智能的研究将不断进行下去; 围绕各种科学计算和数据处理的计算机应用问题,软件开发方法学,特别是并行与分布式软件开发方法学研究以及各种计算机基本应用技术将成为未来学科发展的主线。
3.9 计算机科学知识组织结构 及其演变 在未来的二十年或更长一点的时间里国内外重要的计算科学学术研究机构将会逐步把研究重点集中在以下几个新的综合方向上: 新一代计算机体系结构:该方向包括神经元计算、计算机设计与制造、网络与通信技术(含信息安全技术)、大容量存储设备的研究、容错理论、算法理论、计算模型内容等; 并行与分布式软件开发方法学研究:该方向包括数理逻辑、计算理论(包括算法理论)、式语义学、高级语言与程序设计理论(包括程序设计方法学)、系统软件设计、软件工程、容错理论等内容;
人工智能理论及其应用:该方向包括数理逻辑、高等逻辑、算法理论、知识工程、神经元计算、人工智能高级语言与人工智能程序设计等内容; 计算机应用的关键技术:主要将围绕计算可视化与虚拟现实,计算几何,科学计算这几个重点方向开展工作,并带动数据库技术、计算机图形学、自然语言处理与机器翻译、模式识别与图像处理等方向发展。在这一综合方向上研究内容将几乎覆盖所有计算科学应用技术方向内容。
无论计算机科学在发展中产生了多少新的研究与发展方向,推动其发展的主要动力在于社会广泛的应用需求,发展计算机科学各个分支学科方向主要的目的有两个: 一个是针对各种实际问题应用背景的特点,希望能够不断地制造出性能更好的计算机系统,包括硬件和软件; 另一个是针对计算机在各行各业中的各类具体应用,为了在计算机系统上更有效地进行科学计算和事务处理,也必须首先发展支持计算机具体应用的各种共性思想、共性理论、共性方法和共性技术。
从目前的学科的整体发展情况来看,计算模型与体系结构,软件开发方法学与计算机应用技术是学科未来发展的主要方向 对四个综合方向研究的重点内容作分析,可以看到它们共同的基础都趋向集中在数理逻辑、形式语义学、新一代计算机体系结构、算法设计与分析、计算模型与计算理论这五个专业基础之上。 从目前的学科的整体发展情况来看,计算模型与体系结构,软件开发方法学与计算机应用技术是学科未来发展的主要方向 计算理论、体系结构、数理逻辑与形式语义学是支撑学科未来主要方向发展的四大核心专业知识基础。 本章结束,按下键返回本章总目录
第四章 如何学习计算机科学和健康成长 4.1 计算机科学(专业)的培养规格和目标 4.2 专业参考教学计划与课程体系 第四章 如何学习计算机科学和健康成长 4.1 计算机科学(专业)的培养规格和目标 4.2 专业参考教学计划与课程体系 4.3 如何学好计算机科学 4.4.理解科学与科学素养 返回 结束
4.1 计算机科学(专业)的培养规格和目标 高等学校计算机科学专业本科以上教育主要是为计算机产业,重要部门的计算机应用,中、高等学校教学和研究院所的科研工作培养人才。 毕业生的主要流向应该是计算机公司,产品技术含量较高的工业企业,各行各业计算中心,中等以上学校和科研院所。
计算机科学硕士研究生教育的培养规格和目标 ⑴ 为未来从事计算机科学学科教学、研究、应用与开发提供一个深入开展工作的坚实的理论、方法和技术基础; ⑵ 毕业生应了解整个学科当前的发展现状和未来的发展趋势,了解学科发展的一般规律,掌握学科深入发展所需的研究生一级的核心基础知识和某一专业化方向的基本原理、基本技术和基本方法;
⑶ 具有在较高的起点上,即能够在阅读和正确理解相当于国际重要学术刊物,或国内“计算机学报”、“软件学报”、“中国科学”等同档次刊物一个方向上若干学术论文和技术报告的起点上,独立开展学术研究或专业技术工作的能力; ⑷ 具有对一些计算机科学技术项目所提出的思想、方法、技术和工程技术路线的能行性作出准确估计的能力; ⑸ 理论联系实际,具有运用所学专业知识分析、解决中低等难度专业技术问题的能力;
计算机科学博士研究生教育的培养规格和目标 博士研究生毕业后,除对一般毕业研究生的要求外,应达到如下培养规格和目标: ⑴ 在计算科学学科各方向的重要的基本概念、基本原理和基本技术,特别是典型方法、典型实例和学科形态方面,应具有本学科比较广博的专业基础知识,进一步掌握学科深入发展所需的核心基础知识和自己所从事的专业化方向的基本原理、基本方法和基本技术; ⑵ 具有在较高的起点上,即能够在阅读和正确理解相当于国际一流学术刊物一个方向上若干学术论文和技术报告的起点上,独立开展有创造性的学术研究或专业技术工作的能力,或主持有学术深度的专业技术工作。
计算机科学本科生教育的培养规格和目标 高等学校计算科学本科专业培养适应计算机科学学科发展,国家社会发展与进步事业实际需要,德、智、体、美全面发展,具有良好的科学素养和文化修养,系统地、较好地掌握理工科公共基础知识,较好地掌握本学科基本概念、基本原理、基本方法、基本技术等基础(理论)知识;理论联系实际,受到良好的计算科学基本实验技术与技能等实践能力的基本训练,受到科学研究与实际应用初步训练的计算科学专门人才。 毕业生适宜到科研部门和高、中等学校从事科学研究和教学工作;适宜到计算机产业、重要部门、以及相近学科的有关单位从事计算科学开发研究、应用与管理等工作;可以继续攻读计算科学及其相关学科的硕士学位。
4.2 计算机科学(专业)参考教学计划与课程体系 计算机科学专业本科生(A类)教学计划 计算机科学专业本科生(A类)选修课一览表 计算机科学专业本科生(B类)教学计划 计算机科学专业本科生(B类)选修课一览表
4.3 如何学好计算机科学 如何实现思维方式的数学化 在计算科学教育界,高等学校的教师们普遍都承认数学教育对学生学习计算科学专业知识的重要性。但重要性体现在哪里呢?我们认为:数学教育对计算科学专业人才的培养有两个目的: (1)通过教学使学生掌握进一步学习这一学科所需要的数学基础知识; (2)通过严格的数学训练,使学生实现思维方式或思维过程的数学化。
实现思维方式数学化的步骤必须分两个阶段来完成。 第一阶段,通过对空间解析几何、数学分析、高等代数、常微分方程、概率统计、计算方法等数学课程的学习,使学生熟悉和习惯于使用数学语言和符号系统对研究的数学对象进行严格的分析、表述、计算和推演,为学习后续课程打下坚实的数学基础,初步实现思维方式的数学化,初步达到数学上的某种成熟性。 第二阶段,数学学习转向以计算机科学为背景的离散数学和理论计算机科学的学习,特别是通过对数理逻辑的系统学习,使学生将思维方式由感性逐步上升为系统的理性思维方式,进一步实现思维方式的数学化,最终使学生达到良好的数学上的某种成熟性。
4.4. 理解科学与科学素养 理解科学:指一个人对多种科学知识的综合结构的了解。其中包括最基本的科学原理,科学思想之间的关系,形成这些关系的原因,如何利用这些科学知识解释和预测自然现象和各种人工实验现象,以及认识和理解发生在我们身边的事情。 理解科学同时还包括分辨科学和伪科学的能力,在前人工作的基础上探索未知世界和未知领域的能力。
科学素养:指一个人参加人类的智力活动所必须具备的科学概念、知识水平和对智力活动过程的理解能力。 在日常生活中,科学素养反映在人们对感兴趣的事情充满好奇心,能够理解事情、发现问题、提出问题、参与讨论、解决问题或找到解决问题的途径和方法。 在所从事的专业工作中,科学素养反映在人们对自己的工作具有创造性和较高的学术深度,安照科学规律办事,不满足已经取得的成就。
科学素养也包含着一个人的科学精神,表现在具有实事求是的科学态度,脚踏实地的工作作风,平常而又良好的心态与科学道德,坚持和维护真理的秉性,献身人类进步事业的精神。 我们提倡:一个对问题的正确的思想认识,一组解决问题的科学方法,一套严密的操作程序。一个人按照这样一种思想方法开展工作,实际上也就是初步具备了科学的态度和正确的思想方法,处理问题的结果也常常比较好,这也是一个人是否具有良好的科学素养的重要标志之一。