第3章类型系统.ppt

  1. 1、本文档共37页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第3章类型系统

程序设计语言范型 Programming Languages Paradigms 内容 1.数据类型和类型信息 2.简单类型 3.类型构造器 4.类型检查 5.显式多态性 1.数据类型和类型信息 数据类型 一个数据集合以及其上特定的操作集合 由翻译器确定程序内的类型信息是否一致的过程称为类型检查 类型检查还使用从已有的类型信息得到其他语言结构的类型的推理规则,进行类型推理 1.数据类型和类型信息 类型构造器 由基本数据类型构造复杂类型的方法 由构造器创建的新的类型不是自动得到名字的,新类型的名字由类型声明创建 1.数据类型和类型信息 类型等价 在类型检查过程中翻译器必须经常进行类型比较,确定用户自定义新的类型是否是同一类型 使用类型声明的每一种语言都有一套类型声明规则 类型系统 用来构造类型的方法、判别类型等价的算法,以及类型推理和类型正确性规则统称为 1.数据类型和类型信息 强类型语言 语言的定义中规定了一个完备的类型系统 能够被静态的应用并确保程序中所有数据错误都将尽可能早的被检出 无类型语言 没有静态类型系统 所有的安全检查是在执行时间进行的 内容 1.数据类型和类型信息 2.简单类型 3.类型构造器 4.类型检查 5.显式多态性 2. 简单类型 每一种语言都会有一组预定义的类型,主要是简单类型 类Algol语言,甚至面向对象语言,对数据类型的分类都是按照相对标准的基本模式进行的,只有很少的改变。 有的简单类型不是预定义的 枚举类型—显式列出元素及其名字的集合。例:C语言 子界类型—简单类型连续元素的一个子集。例:Ada语言 内容 1.数据类型和类型信息 2.简单类型 3.类型构造器 4.类型检查 5.显式多态性 3.类型构造器 集合操作可以被用来从已有的类型构造新的类型 笛卡尔积 联合 子集 3.类型构造器 集合操作 f 数组 3.类型构造器 集合操作 f 数组 3.类型构造器 类型构造器 f 函数类型 3.类型构造器 类型构造器 f 指针 用来构造一个指向一个特殊类型的全部地址的集合 引用是由系统控制的一个对象的地址,不能用作一个值或者进行任何方式的操作 3.类型构造器 类型构造器 f 指针 内容 1.数据类型和类型信息 2.简单类型 3.类型构造器 4.类型检查 5.显式多态性 4. 类型检查 类型检查可以分为 动态检查 运行阶段进行检测 静态检查 类型检测由翻译器在程序执行前进行,通过程序文本中确定 强类型语言是静态类型 4. 类型检查 类型等价 结构等价——两个数据类型有相同的结构 从相同的简单类型出发,用相同的类型构造器由几乎完全相同的方法构造出来 4. 类型检查 类型等价 结构等价 如何确定一个类型应该包含的信息量? 4. 类型检查 类型等价 结构等价 声明中类型名的使用 4. 类型检查 类型等价 名字等价——两个数据类型有相同的名字 4. 类型检查 类型等价 名字等价 4. 类型检查 类型等价 C语言使用介于名字等价和结构等价之间的一种类型等价 对struct和union是名字等价,其他则是结构等价 4. 类型检查 类型相容性 两个不同的类型以某种方式组合在一起仍然是正确的 在C和Java中,所有数值类型都是兼容的 赋值相容性 赋值语句类型的正确性 赋值相容性与算术运算的相容性不一致 4. 类型检查 类型转换 隐式转换(强制转换) 显式转换(转换编写为代码的——强制类型转换) 4. 类型检查 类型转换 显式强制类型转换往往被限制于简单类型,甚至是算术类型 对结构类型允许强制类型转换 内存中尺寸一致 将内存重新解释为一个不同的类型,不改变数据 指针通常是简单的重新解释为指向一个不同类型的值 这种类型的显式转换对某种函数也是允许的 4. 类型检查 类型转换 显式强制类型转换 面向对象语言有特殊的转换需要 继承可以被解释为子类型 需要从子类型到超类型的转换或反方向的转换 C++ 除了与C的相容性,还包含了不同种类的强制类型转换 4. 类型检查 静态检查 类型检测由翻译器通过程序文本中确定 并非一定需要显式的类型声明,类型可以使用类型推理从上下文推导出来 多态类型检查 翻译器可以收集一个名字的使用信息,并基于使用信息推导出一个可能的类型 4. 类型检查 4.类型检查 类型检查器的工作过程 极大简化了程序员必须在代码中写入类型信息 4.类型检查 多态性 希腊单词——许多形式 在程序设计语言中指:可以同时有很多类型的名字 重载函数是多态的一种 多态的这种类型称为参数多态性 4.类型检查 多态性函数是Hindley-Milner类型检查的真正目的 4.类型检查 多态性函数是Hindley-Mi

文档评论(0)

yaocen + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档