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