- 1、本文档共24页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
程序设计技术和方法_sicp04-1
4. 元语言抽象(1)
本章研究语言的设计和实现
语言抽象
程序设计(编程)和语言
语言抽象的意义和方法
元循环求值器(用Scheme 写的Scheme 解释器)
基本求值过程
求值器的核心操作eval 和apply
表达式数据抽象和接口操作
求值器数据结构
程序设计技术和方法 裘宗燕,2012-11-28 (1)
程序设计和语言
前面讨论了一些程序设计技术,主要研究:
如何组合基本程序设计元素,构造出具有更复杂功能的结构
如何将复杂结构抽象为高层构件,以方便地用于进一步组合
如何采用一些更高层次的观点和组织方式,提高系统的模块性
这些都是编程的问题(编程:用一种语言写程序)
前面一直用Scheme (一种Lisp方言)作为编程语言
如果遇到的问题更加复杂,或者需要解决某个领域的大量问题,就可能
发现现实可用的语言(Lisp 或其他)都不够满意或不够方便
可能看到需要解决的问题有一些共性和特殊需要
最好是有一种能最有效地表述与问题相关的想法的语言
如果现成的语言都不太适用,就需要自己设计和实现一个新语言
通过语言设计,提供语言层抽象,可能获得更好的模块化
程序设计技术和方法 裘宗燕,2012-11-28 (2)
程序设计和语言
设计一个好的适用的语言很不容易
设计和实现语言的工作量很大,不应该轻易去做
必须对所面临问题有较深入认识和总结
但,建立适用的新语言是控制系统复杂性的最强有力的策略
在适当(或者不得已)的情况下应该考虑
针对具体问题(或问题领域) 设计的专门语言
有可能提供一套最适用的原语、组合方式和抽象方式
使人能以最有效的方式描述要处理的问题
使领域专家有可能直接做应用系统的开发
可能大大提高在一定范围内处理复杂情况的能力
这些情况说明,软件工作者有时也可能需要做语言设计师(至少,应该
注意到这种可能性)
程序设计技术和方法 裘宗燕,2012-11-28 (3)
程序设计和语言
在从事程序设计和系统开发的工作中,通常会涉及许多不同层次的语言
(应该注意这个问题),有的很简单,有的很复杂
最简单的如C 标准库printf 的格式描述串(一种简单排版语言)
服务于各种用途的脚本语言
最复杂的是高级编程语言
还有许许多多面向专门应用领域的语言
操作系统命令语言
HTML,XML ,网页描述和“排版”
Mathematica,Maple,数学计算(符号计算)
Matlab,数值计算和模拟应用
Coq,PVS,形式化模型和定理证明(计算机科学,数学)
R,统计计算和应用
程序设计技术和方法 裘宗燕,2012-11-28 (4)
程序设计和语言
如果根据需要设计了语言,就要考虑语言的“实现”问题
计算机工作者设计语言,主要是为了让计算机能根据我们的语言的
指示完成一些工作,或用自己的语言构造应用系统
“实现”一个语言,就是为使这个语言在计算机上实际可用而做的工
作。常见的方法是开发一个能处理这个语言的解释器
语言的解释器本身也是一个过程
送给它相应语言的一个表达式(一段完整描述,一个“程序”),它
就会按该表达式的要求执行相应的动作
解释器“理解”这个语言,理解语言中各种结构的意义
实现语言也是程序设计中最本质思想的典型体现:
语言的求值器(在某种意义下)定义了语言里各种表达式的意义
它本身也就是一个程序
理解语言和语言的解释器,还能帮助我们进一步理解程序设计本身
程序设计技术和方法
文档评论(0)