语言设计问题.pptx课件.pptx
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《语言设计问题.pptx课件.pptx》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 设计 问题 pptx 课件
- 资源描述:
-
1、1第二章 语言设计问题感谢你的观看2019年6月302语言设计考虑的因素n早期的语言设计的目标是希望程序能高效地运行于昂贵的硬件上,因此,早期语言总是以翻译成高效的机器码为目标,即使程序难以书写。 n现在,硬件价格下降、软件价格上升,更强调程序容易书写,即使慢点也可。 例如,ML的类型特性、C+的类、Ada的包(Package)均以降低执行速度为代价,但对保证程序正确性有帮助。n开发语言时,有三个影响语言设计的主要因素:n计算机本身 n在计算机上支持语言的执行模型,即虚拟计算机n语言所实现的计算模型感谢你的观看2019年6月303主要内容n计算机结构与程序设计语言的关系n结构上的对应关系n对应
2、关系的实现手段n程序的执行模型:虚拟计算机n虚拟机与程序语言实现的关系n程序语言与虚拟机的绑定nC/C+概述感谢你的观看2019年6月3042.1 计算机的结构和操作n一个计算机是能够存储和执行程序的数据结构和算法的集成集合。n计算机可通过用电线、集成电路、电路板等构造为实际的物理设备,此即实际计算机或称硬件计算机硬件计算机。n计算机也可以用运行于其他计算机上的程序(或软件)来构造,此即软件仿真计算机软件仿真计算机。n程序设计语言的实现是通过一个翻译器,将以语言书写的程序翻译为机器语言程序(可被某计算机直接执行,该计算机可以是硬件计算机,也可以为软硬参杂的虚拟机虚拟机)。感谢你的观看2019年
3、6月305计算机结构与程序设计语言n一个计算机包含6个主要部件,它们与程序设计语言的主要方面有着非常密切的对应关系。1、数据:提供各种可供操作的基本数据项和数据结构。2、基本操作:提供对操作数据有用的基本操作集。3、顺序控制:提供控制基本操作执行顺序的机制。4、数据访问:提供控制向操作的执行供给数据的机制。5、存储管理:提供控制程序和数据存储分配的机制。6、操作环境:提供与包围程序和被处理数据的外部环境通讯的机制。感谢你的观看2019年6月306计算机硬件包括程序和被处理的数据操作主存和高速缓存中的数据在主存和外部环境间传递程序或数据完成处理工作取机器指令解码调用指定的基本操作,以指定的操作数
4、作为输入返回感谢你的观看2019年6月307翻译器和软件仿真计算机n尽管理论上有可能直接构造硬件或固件计算机,来运行任何特殊的程序设计语言,但构造这样的计算机并不经济。n现实的考虑是实际计算机采用低级机器语言(基于速度、灵活性和价格考虑),编程仍以高级语言进行。语言实现者面临的任务是如何使高级语言程序执行在实际计算机上,而不必关心其机器语言是什么。n这个实现问题有两个基本方案。1、翻译(编译)2、软件仿真(软件解释)感谢你的观看2019年6月308翻译(编译)n翻译过程:n高级语言程序翻译器等价的机器语言程序硬件直接执行n翻译器:n源语言等价的目标语言 感谢你的观看2019年6月309翻译(编
5、译)n几种特殊类型的翻译器:A、汇编器n目标语言:实际计算机的机器语言n源 语 言:汇编语言,机器语言的符号表示n大多数指令是一对一的翻译B、编译器n目标语言:汇编和机器语言n源 语 言:高级语言C、装配器或连接编辑器(loader/link editor)n目标语言:实际的机器代码n源 语 言:几乎与机器代码相同,通常包含可重定位的机器语言程序和数据表(刻划可重定位代码为变成真正可执行所必须修改的地方)D、预处理器或宏处理器n源 语 言:某种高级语言的扩展形式n目标语言:同样语言的标准形式。n通常进行宏替换。 感谢你的观看2019年6月3010翻译(编译)n高级源语言到可执行机器语言的翻译通
6、常涉及多个翻译步骤,有时,编译的某些步骤本身也涉及多遍,如:多遍扫描。感谢你的观看2019年6月3011软件仿真(软件解释)n我们可以通过运行在一台宿主机上的程序仿真另一台以高级语言为机器语言的计算机。n用宿主机的机器语言构造一个程序集(表达高级语言执行必需的算法和数据结构),即用软件构造运行于宿主机上的高级语言计算机,称为高级语言计算机在宿主机上的软件仿真(或软件解释)。n仿真计算机接受高级语言程序作为输入,主仿真器程序完成解释算法(解码并执行语言),最后从程序产生输出。感谢你的观看2019年6月3012软件仿真和翻译n软件仿真和翻译的不同:n均以高级语言程序为输入,但是,n翻译为目标码后再
7、运行于实际计算机上n仿真计算机直接执行输入程序n翻译器以物理输入顺序处理程序语句,每个语句只处理一次。n仿真器以逻辑控制流处理程序,可能重复处理某些语句而完全忽略其他语句。n纯粹的翻译和纯粹的仿真形成两个极端n全翻译是很少的,除了输入语言和输出语言非常相似,如汇编语言。n全仿真也非常少,除了操作系统控制语言或交互式语言情形。感谢你的观看2019年6月3013软件仿真和翻译n通常,语言实现是二者的结合:感谢你的观看2019年6月3014软件仿真和翻译n翻译和仿真各有不同优点n有的程序结构最好翻译成更简单的形式,如循环中语句多次执行,翻译可省去解码时间。有的方面最好保持原有形式,在执行时根据需要处
8、理。n翻译的主要缺点是失去了关于程序的一些信息。n单个的高级语言语句比单条机器语言指令含有更多信息。n仿真的优缺点基本正好相反。n不需要太多的空间来存储代码序列的多份拷贝。但解码代价高。n通常,如源语言结构在目标语言中有直接表示,则代码扩展不太严重,可采用翻译。其他情形,可采用仿真。感谢你的观看2019年6月3015软件仿真和翻译 语言划分n程序执行时的基本表示是否为实际机器的机器语言,成了语言划分的基础。n1、编译型语言。如:C、C+、Fortran、Ada等n源语言翻成机器码,仿真仅限于一些运行支持例程(用于仿真源语言中和机器语言没有紧密类似的基本操作)。n通过硬件解释器,可实现更快的程序
9、执行。n当然,也可能有的部分仍采用软件仿真,如数据控制结构和存储管理。n2、解释型语言。如:LISP、ML、Prolog、Smalltalk等n翻译器不是产生机器代码,而是产生某种中间形式,比源语言更易执行。n然后使用软件解释器对中间代码进行执行。通常执行慢,也需要对基本操作、存储管理和其他语言特性的仿真,n这类语言翻译器很简单,更多的复杂性在软件仿真。返回感谢你的观看2019年6月30162.2 虚拟计算机和绑定时间n计算机的构造方式1、通过硬件实现,直接使用物理设备2、固件实现,在合适的硬件计算机上使用微程序设计3、软件仿真,在宿主机上用某种语言实现4、上述技术的组合,各自选择合适的实现方
10、式n当一个程序设计语言被实现后,程序执行时所程序执行时所使用的运行时数据结构和算法定义了一个计算使用的运行时数据结构和算法定义了一个计算机机。我们称其为由语言实现定义的虚拟计算机。感谢你的观看2019年6月3017虚拟计算机n虚拟机的机器语言是该语言的翻译器产生的可执行程序(形式:对编译是实际的机器码形式;对解释是某种任意结构);n其数据结构是程序运行时使用的运行时数据结构;n基本操作是那些运行时实际可执行的;n顺序控制、数据控制和存贮管理结构也是那些运行时使用的,不管其是用软件、硬件、还是用微程序表示的。 感谢你的观看2019年6月3018虚拟机和语言实现 (1/3)n语言定义隐含地刻划了一
11、个虚拟机。n如果语言用它们的虚拟机来定义,使得每个语言和一个共同理解的虚拟机相关联,则使用虚拟机来描述语言的语义是直接的。n语言在不同计算机上的每次实现,实现者都会从语言定义中看到略微(或非常)不同的虚拟机。同一语言的两个不同实现,可能使用不同的数据结构和操作集合(特别是在语法中隐藏的部分)。n每个实现者有很大自由度确定自己的虚拟机结构,这些是他的语言实现的基础。 感谢你的观看2019年6月3019虚拟机和语言实现 (2/3)n当语言在一特定计算机上实现时,实现者首先确定表示语言的语义解释的虚拟机,然后通过基本计算机提供的软、硬件元素来构造虚拟机。n语言实现的组织和结构由实现者的许多细微决策确
12、定,需考虑计算机各种软、硬件设施和使用代价。n例:虚拟机如有整数加和平方根操作,则整数加可直接用硬件提供的整数加来实现,平方根可用软件仿真,使用一个子程序。感谢你的观看2019年6月3020虚拟机和语言实现 (3/3)n三个因素导致相同语言的不同实现1、实现者虚拟机概念的不同(隐含在语言定义中)2、宿主机提供的设施的不同3、实现者如何用宿主机提供的设施仿真虚拟机元素的选择和如何去构造翻译器支持这些虚拟机选择的不同。n实现者还需确定什么通过翻译处理?什么在执行中解决?返回感谢你的观看2019年6月3021绑定和绑定时间n不严格地说,一个程序元素到某特定特征或性质的绑定,仅是从一个可能性质的集合中
13、性质的简单选择。决定这个选择的程序陈述或处理的时间称为性质对元素的绑定时间。n语言中有不同的绑定和不同的绑定时间。n绑定时间的类型n对绑定类型没有简单的分类,但可区分出一些主要的绑定时间。这里,我们基于一个基本假设:程序的处理总是先翻译,后执行。感谢你的观看2019年6月3022绑定时间 (1/4)1、执行时(运行时)n很多绑定是在程序执行过程中完成的。如:变量到值的绑定,变量到特定存储位置的绑定(在很多语言中)。n进一步可分为:a. 进入子程序或块时。n大多数语言中,重要的绑定只限制发生在执行中进入子程序或块时,如C、Fortran中形参到实参、以及形参到特定存储位置的绑定。b.在执行中的任
14、意点。n某些绑定可以发生在程序执行中的任意点,如:变量通过赋值到值的绑定,以及在LISP、ML中,名字到存储位置的绑定。感谢你的观看2019年6月3023绑定时间 (2/4)2、翻译时(编译时)绑定,可进而分为三种:a. 程序员选定的绑定n写程序时,程序员有很多关于变量名、变量类型、程序语句结构等选择的决定,这些决定代表了翻译的绑定,语言翻译器使用这些绑定确定目标程序的最终形式。b. 翻译器选择的绑定n有些绑定由翻译器决定,没有直接的程序员规约。如:数据对象在为某过程分配的存储区域中的相对位置(程序员不知道也不关心),数组如何存储,数组描述子如何创建等。不同的语言实现可能以不同方式提供这些特性
15、。c. 装配器选定的绑定(链接时)n程序通常包含几个子程序,这些子程序被合并为一个可执行程序。翻译器决定变量到每个子程序中存储地址的绑定,这些存储必须被分配物理机中的实际地址。 感谢你的观看2019年6月3024绑定时间 (3/4)3、语言实现时n语言定义的某些方面可能对所有运行于同一语言实现上的程序均是相同的,但可能由于语言实现不同而不相同。n如:通常和数的表示以及算术操作的表示相关的细节由底层硬件机进行算术的方式确定。n以某语言编写的程序,如果使用了在实现时固定的特性,则不一定可以在该语言的另一种实现上运行,即使运行也可能有不同执行结果。感谢你的观看2019年6月3025绑定时间 (4/4
展开阅读全文