授课题目:
计算机组成与软件系统(二)
教学目标:
1. 了解程序设计语言的发展,以及机器语言、汇编语言和高级语言概念;
2. 了解程序在计算机上运行前需要进行翻译,编译是语言翻译的一种基本方法。
教学重点:
高级语言需要翻译成机器语言才能为计算机识别;软件在计算机系统中的重要作用以及应用软件和系统软件的基本分类情况;操作系统软件在计算机系统中的重要作用和主流操作系统。
教学难点:
教学方式与教学安排:
讲授课 2学时
参考在线图书:
教学内容:
3.3.计算机语言的发展
计算机语言,是人与计算机交流的工具。
为了让计算机解决一个实际问题,必须事先用计算机语言编制好程序。计算机语言使人们得以和计算机之间进行交流,其种类非常多,根据程序设计语言与计算机硬件的联系程度,我们可以把它分为三类:
机器语言、汇编语言和高级语言。
机器语言:
由“0”和“1”组成的二进制码构成。
优点:速度快,不需要翻译。
特点:依赖机器,可读性差,难以掌握。
注意: 不同的机器,其指令系统是不同的,大多数现代计算机都设计了比较庞大的指令系统,以满足用户的需求。而且记不住、难理解、效率低、不易维护。
汇编语言:
机器语言命令等用符号来代表
优点:速度快,可读性较好。
特点:依赖机器,较难掌握,需要翻译。
汇编语言的抽象层次很低,与机器语言一样,是与具体的机器密切相关的。针对某一种机器编写出来的程序,不能在其它机器上执行。即可移植性较差。
高级语言:
用类英语描述机器指令。
优点:可读性好,易于掌握。
特点:不依赖机器,需要翻译。
程序设计就是寻找解决问题的方法,不需关心计算机本身的具体实现。
高级语言的出现是计算机编程语言的一大进步。它屏蔽了机器的细节,提高了语言的抽象层次,程序中可以采用具有一定含义的数据命名和容易理解的执行语句,并且不依赖于机器的结构和指令系统。目前比较流行的语言有C/C++、Visual Basic、VisualFoxPro、Delphi、Fortran、Pascal等。使用高级语言编写的程序通常能在不同型号的机器上使用,可移植性较好。
高级语言的发展也经历了从早期语言(例如FORTRAN)到结构化程序设计语言(例如PASCAL),从面向过程(例如C,VB)到非过程化程序语言(面向应用/问题,也就是说:只需要告诉程序你要干什么,程序就能自动生成算法,自动进行处理,例如数据库编程语言SQL)的过程。
相应地,软件的开发也由最初的个体手工作坊式的封闭式生产,发展为产业化、流水线式的工业化生产。
最新进展:人工智能语言(知识库语言)。
3.4.计算机程序的翻译
高级语言不再依赖CPU,通过不同的CPU上的编译器将高级语言代码转换为各自的机器语言。
面向用户,与人类自然语言相接近。便于程序员编写、阅读和维护。
计算机如何理解高级语言?
通常通过解释和编译两种手段。
解释:
利用解释器(interpreter),直接运行高级编程语言的程序(BASIC/JavaScript/Perl等)。
解释器不会一次把整个程序转译出来,它每转译一行程序叙述就立刻运行,然后再转译下一行,再运行,如此不停的进行下去。
编译:
借助编译器(compiler),将用某种编程语言写成的原始语言(源代码),转换成另一种语言(目标代码)。
输入:源代码程序(高级语言描述,C/Pascal/C++/Java等,Source code)。
输出:可执行文件(计算机能解读、运行的机器代码,目标代码,Object code)。
主要过程:
解释和编译:
3.4计算机软件;数据结构与算法、操作系统与数据库系统简介
数据结构与算法:
算法
1. 算法的概念
做任何事情都有一定的步骤。例如,你要看病,就要先挂号,然后到分号台确定诊室,到指定诊室排队等候,医生看病开药,划价,拿药等等。这些都是按一系列的顺序进行的步骤,缺一不可,次序错了也不行。因此,我们从事各种工作和活动,都必须事先想好进行的步骤,以免产生错乱。
即为解决一个问题而采取的方法和步骤,就称为“算法” (Algorithm)。
计算机中处处是算法!
例1:Word程序如何在文档中查找用户指定的词语?
例2:在Word文档的表格中如何将表格内容排序?
例3:如何把一幅彩色图片转换为灰度(黑白)图片?
例4: Windows如何在硬盘中找到用户指定的文件?
例5:媒体播放器如何把MP3文件转换成动听的音乐?
例6:搜索引擎如何在WWW网中找到用户需要的网页?
2. 算法的基本特征
l 可行性,指算法中的每一个步骤必须能够实现,且算法执行的结果要能够达到预期的目的。
l 确定性,是指算法中的每一个步骤都应当是确定的,不允许有模棱两可的解释,也不允许有多义性。
l 有穷性,是指算法应包含有限的操作步骤,必须能在有限的时间内做完。
l 有零个或多个输入。输入,是指在执行算法时需要从外界取得必要的信息。
l 有输出,算法的目的是为了求解,“解”就是输出。如没有输出的算法是没有意义的。
3. 算法的表示
为了描述算法,可以使用多种方法。
l 自然语言
l 流程图
l 伪代码(PDL)
l 计算机语言
例:将2000~2100年中每一年是否闰年打印出来。
闰年的条件是: (1)能被4整除,但不能被100整除的年份都是闰年; (2)能被4整除,又能被400整除的年份是闰年。如1989,1900年不是闰年,1992,2000年是闰年。
设Y为年份,算法可以自然语言表示如下:
① 2000 = > Y;
② 若Y不能被4整除,则打印Y“不是闰年”。然后转到⑤;
③ 若Y能被4整除,不能被100整除,则打印Y“是闰年”;
④ 若Y能被4整除,又能被400整除,打印Y“是闰年”;
⑤ Y+1 = >Y;
⑥当Y≤2100时,转②继续执行,如Y >2100,算法停止。
算法分析
1)正确性:给定有效输入后,经过有限时间的计算,产生正确的输出结果
2)简单性: 算法是否容易理解,是否容易验证其正确性,程序是否容易调试;简单的算法效率不一定高,要在保证一定效率的前提下力求算法简单
3)时间复杂性(TimeComplexity) :当问题的规模n充分大时,运行该算法所需要的时间的数量级表示
4)空间复杂性(SpaceComplexity) :除原始数据之外,额外占用的存储空间的大小
数据结构
研究如何在计算机中表示被处理的对象及对象之间的关系,即如何组织数据。
例如:
l 选择排序中,未排序整数和已排序整数如何表示?
l 排序算法中,排序的对象若不是整数而是姓名如何表示?
l Word文档中插入的表格和图片如何表示?
l Windows操作系统中菜单如何表示?对话框如何表示?
l 计算机下棋时,棋盘和棋局如何表示?
精心设计的数据结构可使算法获得更高的时间效率或空间效率。
1. 数据结构中涉及的基本概念
1)数据:是对客观事物的符号表示
2)数据元素:是数据集合中的一个实体,是计算机程序中加工处理的基本单位
3) 数据结构数据的抽象(逻辑)结构,即数据结构中包括哪些元素,相互之间有什么关系等。例如:线性数据结构、树形数据结构、图形数据结构。
2. 数据结构的分类
1)从逻辑结构划分
线性结构 非线性结构(树形、图形)
2)从存储结构划分
顺序存储 链式存储 索引存储 散列存储
3. 数据结构的抽象描述
例如线性表的抽象描述:
有了数据结构与算法的概念,程序设计就可以在此基础上展开。
程序是计算机为完成某一个任务所必须执行的一列指令的集合。
程序的经典公式:
程序=数据结构+算法
一般来说程序是算法的具体实现
程序与算法十分相似,但它们是有区别的:
l 一个程序不一定满足有穷性
l 程序中的指令必须是机器可执行的。
计算机软件:
计算机系统是由硬件和软件两部分组成。软件系统包括系统软件和应用软件,其核心是操作系统。
操作系统:
操作系统是系统软件中一个最基本的、最重要大型软件,是全面地管理计算机软件和硬件的系统程序,是用户与计算机之间的接口。对于我们日常使用的微型计算机来说,操作系统可分为两大类:
l 面向字符的操作系统,如DOS操作系统; DOS操作系统只能通过键盘输入命令来操作计算机。
l 面向图形的操作系统,如Windows操作系统。而Windows不但可以用键盘来操作计算机,还可以通过更加直观的图形界面,用鼠标来操作计算机。
总之,操作系统(Operating System,简称OS)是管理和控制计算机的软件和硬件资源,方便用户操作计算机的软件系统,是用户与计算机打交道的桥梁。购买一台计算机后,就首先必须安装操作系统。
1.操作系统的概念
操作系统是一组程序的集合,它是系统软件的主要组成部分。一方面它直接管理和控制计算机的所有硬件和软件,使计算机系统的各部件相互协调一致地工作;另一方面,它向用户提供正确地利用软硬件资源的方法和环境,使得用户能够通过操作系统充分而有效地使用计算机。
因此,操作系统是用户与计算机系统之间的接口。它好似—个不可逾越的计算机管理中心,任何用户都必须通过它才能操作和使用计算机系统的各种资源。
数据库系统:
2. 操作系统的作用
操作系统的主要作用有三个。
u 一是提高系统资源的利用。通过对计算机系统的软、硬件资源进行合理的调度与分配,改善资源的共享和利用状况,最大限度地发挥计算机系统工作效率,即提高计算机系统在单位时间内处理任务的能力(称为系统吞吐量)。
u 二是提供方便友好用户界面。通过友好的工作环境,改善用户与计算机的交互界面。有了操作系统,用户才可能方便有效的同计算机打交道。
u 三是提供软件开发的运行环境。在开发软件时需要使用操作系统管理下的计算机系统,调用有关的工具软件及其它软件资源。因为任何一种软件并不是在任何一种系统上都可以进行的,所以操作系统也称为软件平台。所以操作系统的性能在很大程度上决定了计算机系统性能的优劣。具有一定规模的计算机系统都可以配备一个或几个操作系统。
3. 操作系统的功能
从资源管理的角度来看,操作系统的功能包括:作业管理、文件管理、处理机管理、存储管理和设备管理五个方面。
1)作业管理
作业是指用户请求计算机系统完成的一个独立任务,它必须经过若干个加工步骤才能完成,其中每一个加工步骤称为作业步。作业管理包括作业的调度与控制两个方面。
2) 文件管理
文件管理又称为文件系统,文件是一组完整的信息集合。计算机中的各种程序和数据均为计算机的软件资源,它们以文件的形式存放在外存中。操作系统对文件的管理主要包括:文件目录管理,文件存储空间的分配,为用户提供灵活方便的操作命令(如文件的按名存取等)以及实现文件共享,安全、保密等措施。
3)处理机管理
中央处理器(CPU)是计算机的核心部件,它是决定计算机性能的最关键的部件,而处理机管理即为CPU管理。处理机管理要解决的问题主要有解决CPU的分配策略、实施方法等。CPU管理的另一个工作是处理中断。
4)存储管理
计算机系统的内存空间分成两个区域。一个是系统区,用于存放操作系统、标准子程序和例行程序;另一个是用于存放用户程序。操作系统的存储管理主要解决多道程序在内存中的分配,保证各道程序互不冲突,并且通过虚拟内存来扩大存储空间。
5)设备管理
现代计算机系统都配置了各种各样的I/O设备,它们的操作性能各不相同。设备管理便是用于对这类设备进行控制和管理的一组程序。
4. 操作系统的分类
按照操作系统的功能,可以将操作系统分成以下六类:
1)单用户操作系统
广泛流行的微型计算机所使用的MS-DOS是单用户单任务操作系统,而Windows98则是单用户多任务操作系统。
2)批处理操作系统
批处理操作系统可以管理多个用户的程序,操作员统一将多个用户的程序输入到计算机中,然后在批处理操作系统的管理下运行,以提高计算机系统的效率。
3)分时操作系统
分时操作系统可以支持多个终端用户同时使用计算机。它采用给每个用户固定的时间片的方式,轮流为各个用户服务。著名的UNIX操作系统就是分时操作系统。
4)实时操作系统
实时操作系统用于对时间的响应速度要求很高的控制领域,通常对最短的响应时间有严格的要求,但对于不同的应用场合,要求的响应时间是不同的。
5)网络操作系统
网络操作系统用于管理相互连接的一组具有独立功能的计算机。组成网络的计算机虽然在网络操作系统的统一管理之下,但它们同时又都在各自的操作系统下运行,并共同遵守相同的网络协议,以实现计算机之间的通信。当今流行的网络操作系统有UNIX、Netware及WindowsNT。
6)分布式操作系统
分布式操作系统是管理分布式计算机网络系统的操作系统。在分布式计算机网络中,各计算机可以相互协作共同完成任务。而在一般的计算机网络中,各计算机只是各自完成自己的任务,相互之间往往只能进行通信。
应用软件:
利用计算机的软、硬件资源为某一应用领域解决某个实际问题而专门开发的软件,称为应用软件。用户使用各种应用软件可产生相应的文档,这些文档可被修改。
应用软件一般可以分为两大类:通用应用软件和专用应用软件。
通用应用软件支持最基本的应用,广泛地应用于几乎所有的专业领域,如办公软件包、数据库管理系统软件(有的把该软件归入系统软件的范畴)、计算机辅助设计软件、各种图形图象处理软件、财务处理软件、工资管理软件等。
专用应用软件是专门是为某一个专业领域、行业、单位特定需求而专门开发的软件,如某企业的信息管理系统等。
办公自动化软件:
Office 20xx主要包括Word 20xx (文字处理软件)、Excel20xx (电子表格软件)、PowerPoint 20xx (演示文稿制作软件)、Outlook 20xx (桌面管理软件)、Access 20xx(数据库管理软件)、FrontPage 20xx(网页制作软件),还有Publisher 20xx (出版软件)、Microsoft IME(输入法)和PhotoDraw(图形图像处理软件)等应用程序或称组件。
这些软件具有Windows应用程序的共同特点,如易学易用,操作方便,有形象的图形界面和方便的联机帮助功能,提供实用的模板,支持对象连接与嵌入(OLE)技术等。Office 20xx为适应全球网络化的需要,它融合了最先进的Internet技术,具有更强大的网络功能。
图形图像处理软件:
图形软件的功能是帮助用户建立、编辑和操作图片。这些图片可以是用户计划插入一本永久性小册子的照片、一个随意的画像、一个详细的房屋设计图、或是一个卡通动画。
选择什么样的图形软件决定于你所要制作的图片类型。目前最畅销的图形软件包诸如Adobe公司的Photoshop、微软Office套件中的PhotoDraw、Corel公司的Painter、 Photo-Pain和CorelDRAW、ACD公司的ACDSee以及MicrosoftPhoto Editor,这些图像处理软件功能各有侧重,适用于不同的用户。
当用户知道自己需要的是哪一种类型的图片时,就会根据软件描述和评论找到正确的图形软件。
视频处理软件:
市场上有不少视频编辑软件可供大家选择, Movie Maker是Windows的附件,可以通过数码相机等设备获取素材,创建并观看自定义的视频影片,创建自己的家庭录像,添加自定义的音频曲目、解说和过渡效果,制作电影片段和视频光盘,还可以从CD(唱盘)、TV(电视)、VCR(录像机)等连接到计算机的设备上复制音乐,并储存到计算机中。
由于智能手机的普及应用,手机上的视频编辑软件(app)也很多。
多媒体计算机:不仅能处理文字和数字信息,而且能处理影像、声音等其它形式的信息。多媒体技术是90年代计算机发展的新领域,是计算机技术、广播技术、电视技术和通信技术等领域尖端技术相结合的产物。我们的智能手机也是属于多媒体计算机。
文本:(Text)是人类表达信息最基本的方式之一,计算机表示文字和符号信息的文本包括简单文本(txt)、格式文本(doc)和超文本(web浏览器中的超链接)。
声音:多媒体计算机以数字形式进行声音处理的技术,所以叫数字音频技术。根据奈奎斯特采样定律,只要采样频率高于信号中最高频率的两倍,就可以从采样中完全恢复出原始信号波形。人耳所能听到的频率范围为20Hz至20KHz。声音数据的压缩格式如MPEG的声音压缩标准,MP3。
图像:数字图像有三个主要来源:(1)现有图片经图像扫描仪生成数字图像;(2)使用数码相机或数字摄像机将自然景物、人物等拍摄为数字图像;(3)使用计算机绘图软件生成数字图像。图像的基本要素包括:分辨率,像素深度。图像的原始数据量很大,通常也需要进行压缩,常见的压缩:JPEG、JPEG2000.
图:分辨率分别为:130x94、260x188、520x376的三幅图片。
图像数据量=水平分辨率×垂直分辨率×像素深度
视频:视频源于电视技术,它由连续的画面组成。数字视频用三个基本参数来进行描述,即用于描述视频中每一帧图像的分辨率、颜色深度,以及描述图像变化速度的图像更替率。
计算机视频可分为以下几类。1)电影或录像剪辑2)计算机动画3)交互式视频4)网络电视与视频点播
数字视频的数据量是非常大的。
国际标准化组织和各大公司都积极参与视频压缩标准的制定,并且已推出大量实用的视频压缩格式。常见的有MPEG-1(VCD)、MPEG-2(DVD)、MPEG-4、H.263、H.264/AVC、H.265/HEVC等。
数据库系统:
信息与数据:
信息的定义:信息是关于现实世界事物的存在方式或运动状态的反映的综合,具体说是一种被加工为特定形式的数据,但这种数据形式对接收者来说是有意义的,而且对当前和将来的决策具有明显的或实际的价值。
数据的定义:数据是用来记录信息的可识别的符号,是信息的具体表现形式。
数据是信息的符号表示或载体,信息则是数据的内涵,是对数据的语义解释。
信息=数据+数据处理
计算机对数据的处理是指对将数据的组织、分类、编码、存储、检索和维护提供操作手段。
发展分为三个阶段:人工管理、文件系统、数据库系统。
数据库系统始于上世纪60年代末期,主要特点:
数据的结构化。 数据的共享性。
数据的独立性。 数据的完整性。
数据的灵活性。 数据的安全性。
数据库技术涉及到许多基本概念,主要包括数据、数据处理、
数据库、数据库管理系统以及数据库系统等。
1. 数据: 数据是数据库中存储的基本对象,是事实的反映和记录,由于描述事实有不同的方法,故描述的表达方式也多种多样。
2. 数据库: 数据库是指在计算机存储设备上合理存放的结构化的相关数据集合。
3. 数据库管理系统: 位于用户和操作系统之间的一层数据管理软件,用来操纵和管理数据库,是数据库系统的核心。
4. 数据库系统: 数据库本身不是孤立存在的,而是与其它部分一起构成数据库系统。
在实际应用中人们面对的是数据库系统。它一般由数据库、数据库管理系统(及其开发工具)、应用系统、数据库管理员和用户构成。
数据模型用来表示实体和实体之间的联系。常用的数据模型有三种:层次模型、网状模型和关系模型。
常用的数据库管理系统有:
1. 桌面数据库
1)Access关系数据库管理系统
Microsoft Access forWindows是Microsoft公司推出的面向办公自动化、功能强大的关系数据库管理系统。Access 数据文件的后缀名为.MDB。
2) XBase
XBase作为个人计算机系统中使用最广泛的小型数据库管理系统,具有方便、廉价、简单易用等优势。
2. 大型数据库
1)SQLServer数据库
SQL Server是微软公司开发和推出的大型关系数据库管理系统(DBMS),它最初是由Microsoft、Sybase和Ashton-Tate三家公司共同开发的,并于1988年推出了第一个OS/2版本。 SQLServer近年来不断更新版本,1996年,Microsoft推出了SQL Server 6.5版本;1998年,SQLServer 7.0版本和用户见面;SQL Server 2000是Microsoft公司于2000年推出的最新版本。
2)Oracle数据库
Oracle是目前世界上最流行的大型关系数据库管理系统,具有移植性好、使用方便、功能齐全、性能强大等特点,适用于各类大、中、小、微机和专用服务器环境。
3. 开源数据库
开源数据库是指开放源代码的数据库。Linux系统下最受程序员喜爱的三种数据库是MySQL、PostgreSQL和Oracle,其中MySQL、PostgreSQL就是开源数据库的优秀代表。开源数据库具有速度快、易用性好、支持SQL语言、支持各种网络环境、可移植性、开放和价格低廉(甚至免费)等特点。
1)MySQL
MySQL数据库管理系统是MySQL开放式源代码组织提供的小型关系数据库管理系统,可运行在多种操作系统平台上,是一种具有客户机/服务器体系结构的分布式数据库管理系统。
MySQL适用于网络环境,可在Internet上共享。由于它追求的是简单、跨平台、零成本和高执行效率,因此它特别适合互联网企业(例如动态网站建设),许多互联网上的办公和交易系统也采用MySQL数据库。
2)PostgreSQL
PostgreSQL是一种相对较复杂的面向对象关系型数据库管理系统(OODBMS),也是目前功能最强大、特性最丰富和最复杂的开源数据库之一,它的某些特性甚至连商业数据库都不具备。
PostgreSQL主要在UNIX或Linux平台上使用,目前也推出了Windows版本。
4. 新型Java数据库
伴随着互联网的发展,一种新型程序设计语言Java开始流行开来,使用Java语言开发的软件项目也越来越多,许多公司都试图在这一领域大显身手,在Java盛行的同时,使用Java语言编写的面向对象数据库管理系统也应运而生。下面简单介绍一下JDataStore。
JDataStore是Borland公司推出的纯Java数据库,主要用于J2EE平台,有跨平台移植性,与Borland新一代Java开发工具JBuilder结合。数据库管理员可打开JDataStoreExplorer来管理数据库。
5.国产数据库
已经获得实际应用的国产数据库主要包括:
(1)东软OpenBASE。
(2)华易数据库管理系统HYSQL。
(3)金鼎数据库管理系统。
(4)武汉华工数据库管理系统DM3。
(5)北京国信iBASE数据库。