类型-北京大学数学科学学院.PDF

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

程序设计语言原理 Principle of Programming Languages 裘宗燕 北京大学数学学院 2012.2~2012.6 4. 类型 类型机制及其作用 类型检查 类型等价和类型相容 类型转换和强制 基本类型 用户定义类型 数据类型与存储管理 多态性 类型推理 2012年3月 2 语言的类型机制 类型是程序语言中最重要的特征之一 在目前的常规程序语言里,类型机制的基本方案是: • 提供一组基本类型(内部类型、预定义类型,是一些基本数据集合), 包括类型名,类型值的字面描述方式,为每个类型提供一组基本操作 • 提供一组类型构造机制,可以用它们描述程序所需的新的值形式;或描 述(定义)新类型的构造。声明的类型称为用户定义类型 用户定义类型的重要用途: • 作为描述简单的值或类型的手段,如枚举类型 • 组合已有类型,构造复合的值或者复合类型。复合类型的值可以有复杂 的内部结构,以满足各种应用的需要 • 可能为用户定义类型约束相关操作,使之像内部类型一样易于使用 基本类型是一组类型抽象。使用时不必了解各种类型的值的表示,不必了解 其操作如何实现,就可以通过类型名和相应操作使用它们 2012年3月 3 类型机制:历史 程序设计语言里的类型机制随时间和人们的认识不断发展: 早期语言如Fortran/Algol 60 只有基本类型 • 如整数、实数和字符(或字符串),是硬件直接支持的各种数据类型在 高级语言层面的反映 • 允许定义数组变量,但数组不是清晰的类型 Lisp 提供了一种“表”结构作为基本数据构造手段 • 可以灵活构造各种值 • 可用于模拟各种复杂的类型机制 Pascal 语言引进类型构造和定义机制(可以给新类型命名) • 明确提出了相应的类型等价和相容规则 • 其中的用户定义类型还不是今天意义下真正的类型 不支持为把定义的类型关联所需的操作 2012年3月 4 类型机制:历史 大致同年代的C 语言的类型机制比Pascal 更弱 • 其中没有真正的用户定义类型机制 • typedef 是后来ANSI C 增加的,只是用于为原本可以描述的类型描述 引进一个“别名”,不作为独立的具有区分意义的类型 更新的语言,包括新的主流语言如Ada 、C++ 和Java • 类型定义机制更完善 • 目标是使用户类型定义和内部类型具有同等地位(甚至更多) 有关类型理论的开拓性研究和实验主要在各种函数式语言里进行 • 人们先后在Lisp,ML,Haskell 等语言里深入研究了类型的各种问题 • 包括实际问题和理论问题 下面主要从实践的角度讨论高级语言的类型问题 也要涉及到类型实现中的一些问题 2012年3月 5 类型的作用 类型有许多作用: 对程序处理的值的概念划分(表示什么?如何操作?... ) 控制对于相关的值的使用方式 为相关操作的执行提供隐含上下文环境。例如Pascal 的new(p) 将根据p 的(指向)类型在堆中分配存储,+ 运算符根据类型进行解析 可能更有效实现(不同类型值需要的存储量可能不同,通过类型能更好利 用存储;可能静态处理与类型有关的问题,减少动态运行开销) 支持静态的类型检查,有助于发现各种各样的编程错误 使人可以基于类型来组织程序里的计算过程,确定操作的可用性和操作方 式(例如:重载解析

文档评论(0)

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

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

1亿VIP精品文档

相关文档