编程语言详细课程-课件1.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《编程语言详细课程-课件1.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编程 语言 详细 课程 课件
- 资源描述:
-
1、第五章第五章 类类 型型 检检 查查 本章内容本章内容 静态检查中最典型的部分静态检查中最典型的部分 类型检查:类型检查:类型系统、类型检查、多态函数、重载类型系统、类型检查、多态函数、重载 忽略其它的静态检查:忽略其它的静态检查:控制流检查、唯一性控制流检查、唯一性检查、关联名字检查检查、关联名字检查分析分析器器类型类型检查检查器器中间中间代码代码生成生成器器语 法语 法树树语 法语 法树树中间中间表示表示记号记号流流5.1 类型在编程语言中的作用类型在编程语言中的作用5.1.1 执行错误和安全语言执行错误和安全语言介绍一些和程序运行有联系的概念介绍一些和程序运行有联系的概念5.1 类型在编
2、程语言中的作用类型在编程语言中的作用5.1.1 执行错误和安全语言执行错误和安全语言程序运行时的执行错误分成两类程序运行时的执行错误分成两类 会被捕获的错误会被捕获的错误(trapped error)5.1 类型在编程语言中的作用类型在编程语言中的作用5.1.1 执行错误和安全语言执行错误和安全语言程序运行时的执行错误分成两类程序运行时的执行错误分成两类 会被捕获的错误会被捕获的错误(trapped error)例:例:非法指令错误非法指令错误5.1 类型在编程语言中的作用类型在编程语言中的作用5.1.1 执行错误和安全语言执行错误和安全语言程序运行时的执行错误分成两类程序运行时的执行错误分成
3、两类 会被捕获的错误会被捕获的错误(trapped error)例:例:非法指令错误、非法内存访问非法指令错误、非法内存访问5.1 类型在编程语言中的作用类型在编程语言中的作用5.1.1 执行错误和安全语言执行错误和安全语言程序运行时的执行错误分成两类程序运行时的执行错误分成两类 会被捕获的错误会被捕获的错误(trapped error)例:例:非法指令错误、非法内存访问非法指令错误、非法内存访问、除数为零除数为零5.1 类型在编程语言中的作用类型在编程语言中的作用5.1.1 执行错误和安全语言执行错误和安全语言程序运行时的执行错误分成两类程序运行时的执行错误分成两类 会被捕获的错误会被捕获的
4、错误(trapped error)例:例:非法指令错误、非法内存访问非法指令错误、非法内存访问、除数为零除数为零 引起计算立即停止引起计算立即停止5.1 类型在编程语言中的作用类型在编程语言中的作用5.1.1 执行错误和安全语言执行错误和安全语言程序运行时的执行错误分成两类程序运行时的执行错误分成两类 会被捕获的错误会被捕获的错误(trapped error)例:例:非法指令错误、非法内存访问非法指令错误、非法内存访问、除数为零除数为零 引起计算立即停止引起计算立即停止 不会被捕获的错误不会被捕获的错误(untrapped error)5.1 类型在编程语言中的作用类型在编程语言中的作用5.1
5、.1 执行错误和安全语言执行错误和安全语言程序运行时的执行错误分成两类程序运行时的执行错误分成两类 会被捕获的错误会被捕获的错误(trapped error)例:例:非法指令错误、非法内存访问非法指令错误、非法内存访问、除数为零除数为零 引起计算立即停止引起计算立即停止 不会被捕获的错误不会被捕获的错误(untrapped error)例:下标变量的例:下标变量的访问越过了数组的末端访问越过了数组的末端5.1 类型在编程语言中的作用类型在编程语言中的作用5.1.1 执行错误和安全语言执行错误和安全语言程序运行时的执行错误分成两类程序运行时的执行错误分成两类 会被捕获的错误会被捕获的错误(tra
6、pped error)例:例:非法指令错误、非法内存访问非法指令错误、非法内存访问、除数为零除数为零 引起计算立即停止引起计算立即停止 不会被捕获的错误不会被捕获的错误(untrapped error)例:下标变量的例:下标变量的访问越过了数组的末端访问越过了数组的末端 例:例:跳到一个错误的地址,该地址开始的内存正跳到一个错误的地址,该地址开始的内存正好代表一个指令序列好代表一个指令序列 5.1 类型在编程语言中的作用类型在编程语言中的作用5.1.1 执行错误和安全语言执行错误和安全语言程序运行时的执行错误分成两类程序运行时的执行错误分成两类 会被捕获的错误会被捕获的错误(trapped e
7、rror)例:例:非法指令错误、非法内存访问非法指令错误、非法内存访问、除数为零除数为零 引起计算立即停止引起计算立即停止 不会被捕获的错误不会被捕获的错误(untrapped error)例:下标变量的例:下标变量的访问越过了数组的末端访问越过了数组的末端 例:例:跳到一个错误的地址,该地址开始的内存正跳到一个错误的地址,该地址开始的内存正好代表一个指令序列好代表一个指令序列 错误可能会有一段时间未引起注意错误可能会有一段时间未引起注意 5.1 类型在编程语言中的作用类型在编程语言中的作用5.1.1 执行错误和安全语言执行错误和安全语言良行为的程序良行为的程序 不同场合对良行为的定义略有区别
8、不同场合对良行为的定义略有区别 例如,没有任何不会被捕获错误的程序例如,没有任何不会被捕获错误的程序5.1 类型在编程语言中的作用类型在编程语言中的作用5.1.1 执行错误和安全语言执行错误和安全语言良行为的程序良行为的程序 不同场合对良行为的定义略有区别不同场合对良行为的定义略有区别 例如,没有任何不会被捕获错误的程序例如,没有任何不会被捕获错误的程序安全语言安全语言任何合法程序都是良行为的任何合法程序都是良行为的5.1 类型在编程语言中的作用类型在编程语言中的作用5.1.1 执行错误和安全语言执行错误和安全语言良行为的程序良行为的程序 不同场合对良行为的定义略有区别不同场合对良行为的定义略
9、有区别 例如,没有任何不会被捕获错误的程序例如,没有任何不会被捕获错误的程序安全语言安全语言任何合法程序都是良行为的任何合法程序都是良行为的 通常是设计一个类型系统,通过静态的类型检查通常是设计一个类型系统,通过静态的类型检查来拒绝不会被捕获错误来拒绝不会被捕获错误5.1 类型在编程语言中的作用类型在编程语言中的作用5.1.1 执行错误和安全语言执行错误和安全语言良行为的程序良行为的程序 不同场合对良行为的定义略有区别不同场合对良行为的定义略有区别 例如,没有任何不会被捕获错误的程序例如,没有任何不会被捕获错误的程序安全语言安全语言任何合法程序都是良行为的任何合法程序都是良行为的 通常是设计一
10、个类型系统,通过静态的类型检查通常是设计一个类型系统,通过静态的类型检查来拒绝不会被捕获错误来拒绝不会被捕获错误 但是,设计一个类型系统,它正好只拒绝不会被但是,设计一个类型系统,它正好只拒绝不会被捕获错误是非常困难的捕获错误是非常困难的5.1 类型在编程语言中的作用类型在编程语言中的作用5.1.1 执行错误和安全语言执行错误和安全语言禁止错误禁止错误(forbidden error)不会被捕获错误不会被捕获错误集合集合+会被捕获错误的一个子集会被捕获错误的一个子集5.1 类型在编程语言中的作用类型在编程语言中的作用5.1.1 执行错误和安全语言执行错误和安全语言禁止错误禁止错误(forbid
11、den error)不会被捕获错误不会被捕获错误集合集合+会被捕获错误的一个子集会被捕获错误的一个子集 为语言设计类型系统的目标是在排除为语言设计类型系统的目标是在排除禁止错误禁止错误5.1 类型在编程语言中的作用类型在编程语言中的作用5.1.1 执行错误和安全语言执行错误和安全语言禁止错误禁止错误(forbidden error)不会被捕获错误不会被捕获错误集合集合+会被捕获错误的一个子集会被捕获错误的一个子集 为语言设计类型系统的目标是在排除为语言设计类型系统的目标是在排除禁止错误禁止错误良行为程序和安全语言也可基于禁止错误来定义良行为程序和安全语言也可基于禁止错误来定义5.1 类型在编程
12、语言中的作用类型在编程语言中的作用5.1.2 类型化语言和类型系统类型化语言和类型系统类型化的语言类型化的语言 变量的类型变量的类型 变量在程序执行期间的取值范围变量在程序执行期间的取值范围5.1 类型在编程语言中的作用类型在编程语言中的作用5.1.2 类型化语言和类型系统类型化语言和类型系统类型化的语言类型化的语言 变量的类型变量的类型 类型化的语言类型化的语言变量都被给定类型的语言变量都被给定类型的语言并且表达式、语句等语法构造的类型都是可以静态确定并且表达式、语句等语法构造的类型都是可以静态确定的的例如,类型例如,类型boolean的变量的变量x在程序每次运行时的值只能是在程序每次运行时
13、的值只能是布尔值布尔值,not(x)总总有意义有意义5.1 类型在编程语言中的作用类型在编程语言中的作用5.1.2 类型化语言和类型系统类型化语言和类型系统类型化的语言类型化的语言 变量的类型变量的类型 类型化的语言类型化的语言 未类型化的语言未类型化的语言不限制变量值范围的语言:不限制变量值范围的语言:一个运算可以作用到任意的运算对象,其结果可能是一一个运算可以作用到任意的运算对象,其结果可能是一个有意义的值、一个错误、一个异常或一个语言未加定义的个有意义的值、一个错误、一个异常或一个语言未加定义的结果结果例如:例如:LISP语言语言5.1 类型在编程语言中的作用类型在编程语言中的作用5.1
14、.2 类型化语言和类型系统类型化语言和类型系统类型化的语言类型化的语言 变量的类型变量的类型 类型化的语言类型化的语言 未类型化的语言未类型化的语言 显式类型化语言显式类型化语言类型是语法的一部分类型是语法的一部分5.1 类型在编程语言中的作用类型在编程语言中的作用5.1.2 类型化语言和类型系统类型化语言和类型系统类型化的语言类型化的语言 变量的类型变量的类型 类型化的语言类型化的语言 未类型化的语言未类型化的语言 显式类型化语言显式类型化语言 隐式类型化的隐式类型化的语言语言不存在隐式不存在隐式类型化的类型化的主流语言,但可能存在忽略类型信主流语言,但可能存在忽略类型信息的程序片段,例如不
15、需要程序员声明函数的参数类型息的程序片段,例如不需要程序员声明函数的参数类型5.1 类型在编程语言中的作用类型在编程语言中的作用5.1.2 类型化语言和类型系统类型化语言和类型系统类型系统类型系统 语言的组成部分语言的组成部分,由一组由一组定型规则定型规则(typing rule)构构成,这组规则用来给各种语言构造指派类型成,这组规则用来给各种语言构造指派类型5.1 类型在编程语言中的作用类型在编程语言中的作用5.1.2 类型化语言和类型系统类型化语言和类型系统类型系统类型系统 语言的组成部分语言的组成部分,由一组由一组定型规则定型规则(typing rule)构构成,这组规则用来给各种语言构
16、造指派类型成,这组规则用来给各种语言构造指派类型 设计类型系统设计类型系统的根本目的是用静态检查的方式来保的根本目的是用静态检查的方式来保证合法程序运行时的良行为证合法程序运行时的良行为5.1 类型在编程语言中的作用类型在编程语言中的作用5.1.2 类型化语言和类型系统类型化语言和类型系统类型系统类型系统 语言的组成部分语言的组成部分,由一组由一组定型规则定型规则(typing rule)构构成,这组规则用来给各种语言构造指派类型成,这组规则用来给各种语言构造指派类型 设计类型系统设计类型系统的根本目的是用静态检查的方式来保的根本目的是用静态检查的方式来保证合法程序运行时的良行为证合法程序运行
17、时的良行为 类型系统的形式化类型系统的形式化类型表达式、定型断言、定型规则类型表达式、定型断言、定型规则5.1 类型在编程语言中的作用类型在编程语言中的作用5.1.2 类型化语言和类型系统类型化语言和类型系统类型系统类型系统 语言的组成部分语言的组成部分,由一组由一组定型规则定型规则(typing rule)构构成,这组规则用来给各种语言构造指派类型成,这组规则用来给各种语言构造指派类型 设计类型系统设计类型系统的根本目的是用静态检查的方式来保的根本目的是用静态检查的方式来保证合法程序运行时的良行为证合法程序运行时的良行为 类型系统的形式化类型系统的形式化类型表达式、定型断言、定型规则类型表达
18、式、定型断言、定型规则 类型检查算法类型检查算法通常是静态地完成类型检查通常是静态地完成类型检查5.1 类型在编程语言中的作用类型在编程语言中的作用5.1.2 类型化语言和类型系统类型化语言和类型系统良类型的程序良类型的程序 没有类型错误的程序没有类型错误的程序5.1 类型在编程语言中的作用类型在编程语言中的作用5.1.2 类型化语言和类型系统类型化语言和类型系统良类型的程序良类型的程序 没有类型错误的程序没有类型错误的程序合法程序合法程序 良类型程序(若语言定义中无其它方式表示的约良类型程序(若语言定义中无其它方式表示的约束)束)5.1 类型在编程语言中的作用类型在编程语言中的作用5.1.2
19、 类型化语言和类型系统类型化语言和类型系统良类型的程序良类型的程序 没有类型错误的程序没有类型错误的程序合法程序合法程序 良类型程序(若语言定义中无其它方式表示的约良类型程序(若语言定义中无其它方式表示的约束)束)类型可靠(类型可靠(type sound)的)的语言语言 所有良类型程序(合法程序)都是良行为的所有良类型程序(合法程序)都是良行为的 类型可靠的类型可靠的语言一定是安全的语言语言一定是安全的语言5.1 类型在编程语言中的作用类型在编程语言中的作用5.1.2 类型化语言和类型系统类型化语言和类型系统语法的和静态的概念语法的和静态的概念动态的概念动态的概念类型化语言类型化语言安全语言安
20、全语言良类型程序良类型程序良行为的程序良行为的程序5.1 类型在编程语言中的作用类型在编程语言中的作用5.1.2 类型化语言和类型系统类型化语言和类型系统未类型化语言未类型化语言 可以通过彻底的运行时详细检查来排除所有的禁止可以通过彻底的运行时详细检查来排除所有的禁止错误错误如如LISP语言语言5.1 类型在编程语言中的作用类型在编程语言中的作用5.1.2 类型化语言和类型系统类型化语言和类型系统未类型化语言未类型化语言 可以通过彻底的运行时详细检查来排除所有的禁止可以通过彻底的运行时详细检查来排除所有的禁止错误错误如如LISP语言语言类型化语言类型化语言 类型检查也可以放在运行时完成,但影响
21、效率类型检查也可以放在运行时完成,但影响效率 一般都是静态检查,类型系统被用来支持静态检查一般都是静态检查,类型系统被用来支持静态检查 静态检查语言通常也需要一些运行时的检查静态检查语言通常也需要一些运行时的检查数组访问越界检查数组访问越界检查5.1 类型在编程语言中的作用类型在编程语言中的作用5.1.2 类型化语言和类型系统类型化语言和类型系统实际使用的一些语言并不安全实际使用的一些语言并不安全 禁止错误集合没有囊括所有不会被捕获的错误禁止错误集合没有囊括所有不会被捕获的错误 Pascal语言语言 无标志的变体记录类型无标志的变体记录类型 函数型参数函数型参数5.1 类型在编程语言中的作用类
22、型在编程语言中的作用5.1.2 类型化语言和类型系统类型化语言和类型系统实际使用的一些语言并不安全实际使用的一些语言并不安全 禁止错误集合没有囊括所有不会被捕获的错误禁止错误集合没有囊括所有不会被捕获的错误 Pascal语言语言 用用C语言的共用体(语言的共用体(union)来举例来举例union U int u1;int u2;u;int p;u.u1=10;p=u.u2;p=0;5.1 类型在编程语言中的作用类型在编程语言中的作用5.1.2 类型化语言和类型系统类型化语言和类型系统实际使用的一些语言并不安全实际使用的一些语言并不安全 C语言语言还有很多不安全的并且被广泛使用的特征,如:还有
23、很多不安全的并且被广泛使用的特征,如:指针算术运算、类型强制、参数个数可变指针算术运算、类型强制、参数个数可变5.1 类型在编程语言中的作用类型在编程语言中的作用5.1.2 类型化语言和类型系统类型化语言和类型系统实际使用的一些语言并不安全实际使用的一些语言并不安全 C语言语言还有很多不安全的并且被广泛使用的特征,如:还有很多不安全的并且被广泛使用的特征,如:指针算术运算、类型强制、参数个数可变指针算术运算、类型强制、参数个数可变在语言设计的历史上,安全性考虑不足是因为强调代码在语言设计的历史上,安全性考虑不足是因为强调代码的执行效率的执行效率5.1 类型在编程语言中的作用类型在编程语言中的作
24、用5.1.2 类型化语言和类型系统类型化语言和类型系统实际使用的一些语言并不安全实际使用的一些语言并不安全 C语言语言还有很多不安全的并且被广泛使用的特征,如:还有很多不安全的并且被广泛使用的特征,如:指针算术运算、类型强制、参数个数可变指针算术运算、类型强制、参数个数可变在语言设计的历史上,安全性考虑不足是因为强调代码在语言设计的历史上,安全性考虑不足是因为强调代码的执行效率的执行效率 在现代语言设计上,安全性的位置越来越重要在现代语言设计上,安全性的位置越来越重要5.1 类型在编程语言中的作用类型在编程语言中的作用5.1.2 类型化语言和类型系统类型化语言和类型系统实际使用的一些语言并不安
25、全实际使用的一些语言并不安全 C语言语言还有很多不安全的并且被广泛使用的特征,如:还有很多不安全的并且被广泛使用的特征,如:指针算术运算、类型强制、参数个数可变指针算术运算、类型强制、参数个数可变在语言设计的历史上,安全性考虑不足是因为强调代码在语言设计的历史上,安全性考虑不足是因为强调代码的执行效率的执行效率 在现代语言设计上,安全性的位置越来越重要在现代语言设计上,安全性的位置越来越重要 C的一些问题已经在的一些问题已经在C+中得以缓和中得以缓和更多一些问题在更多一些问题在Java中已得到解决中已得到解决5.1 类型在编程语言中的作用类型在编程语言中的作用5.1.3 类型化语言的优点类型化
展开阅读全文