- 1、本文档共8页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
语言的类型系统
Articles of 兮兮软软
语语言言的的类类型型系系统统
2011-09-20 15:09:01 minlearn
语言的类型系统
在计算机没有出现之前,是用算盘这样的工具来计算数值的,用纸 来记录文字信息的 。人脑完成对这里
面所有东西的理解 。
后来出现了数字计算机和文字计算机,计算机内部引入了对数值和文字的表达和处理机制,计算机能做
算盘和纸 才能做的事 。
但是还是有一些问题没有解决,试问:算盘能表达并处理“数量为1的一头猪从城东跑到跑
西”这样的“跑”概念吗?纸 不能 (它能表达“猪” ,“1” ,“城东” ,“城西”这样的文字并写在纸
上),算盘不能 (它能处理1头猪与1头猪相加数量为2头猪) 。
这是因为它们不能表达抽象 (比如除了文字表达,文字显示,数值表示,数值相加之外的任
何其它信息) 。只有人脑能做这样的想象(将不同质的一个信息映射为另一层面并形象化它
们) 。
然后又出现了针对这种简单计算机的编程器 。它能完成向计算机传达“将要进行何种数据计算” ,“在这个
数据计算中有哪些存储在什么地方的数参与了计算” ,“如何存储一段文字并显示在屏幕哪个位置”之类的
事情,然后计算机来完成计算或显示它们 。
所以 。如果计算机只是数值处理工具文字处理工具,且编程器只能处理数值和文字,那么它们就是另外
一种更大更快的算盘和纸 而已,它依然不能表达抽象 。
(在这里,简单计算机相当于平台,编程器相当于语言设施,编程器充当平台与问题之间的
连接器,它的职能在于向平台表达一个问题,并表达如何处理它,这就相当于现代高级语言
编译器和软件平台比如OS ,只不过后二者层次要抽象得多)
计算机发展到后来,它不光是数字,文字信息处理器,而是通用信息处理器 (因为它的处理速度和存储
水平都极大地提高了) 。而且它还有作为记录计算机语言的高级语言设施 – 编译器;这使得它具备可以
表达各种抽象的条件 。
那么,该如何表达更高的抽象呢?这样使得计算机和语言设施都可以表达并且也可以处理 。这就是语言
要解决的问题 。
TOC
0.1 类型中的抽象
0.2 类型中的高级东西
1 变量
1.1 作用域
1.2 类型的转换
2 内部类型
3 抽象类型,复合类型,以及对用户 自定义类型的支持
4 动态类型,无类型
5 统一的数据结构与代码结构:类型
类型中的抽象
高级语言使用类型来解决如上的抽象问题 。并将它集成在编译器内 。
1
高级语言必须在高级编程层面 提供比机器简单数据更复杂的数据和信息表示,因为现在已经是高级语言
+高级平台了,高级语言如何解决这个问题必须要站在高级语言层面和新平台问题的做法和要求来进行(比
如,利用语法语义的方式,而不是不具有语法属性的定义数据的原始汇编指令.
类型中的高级东西
汇编语言的程序元素只有二种,即栈式指令和栈式数据.它们代表机器执行平台上“能做什么”和“怎么去
做”这二方面,在“类型中的抽象”只完成了对应于会编语言的“能做什么” ,而高级语言必须要实现所有这
些(抽象和设计并不是没有根据的无端设计,它们的背后是问题和应用) ,这一切依然要在语法级借助编
译器实现 。
这就跟内存和CPU之于冯氏机一样(冯氏机借助内存和CPU来运行栈式内容,语言编译器首
先要做的就是将执行平台上的数据和代码转为语言级的元素然后再运行它) 。
2
还比如,高级语言要在程序中提供语言要素表达数据,而且要以一致的方式 来生成简单数据与抽象数据,编
译器数据和用户数据,甚至代码也可以跟数据共用一套表达形式,这就把数据表达的问题把代码表达的问题
综合起来了).
3
这样的做法就是编译器类型 机制.这种类型机制的引入,就为语言引入了一整套其它机制.
编译前端解决了如何分析的问题,编译后端则负责实际运行在语法的基础上构建的这些语义及语言要素
(这就是编译器后端为语言在一种平台上执行提供的r ntime),这形成了各种各样的语言级的代码结构抽象
和数据抽象,分为
文档评论(0)