高级程库设计语言原理 梅宏
高级程序设计语言原理 梅 宏
课程目的: 1.了解高级程序设计语言发展历史及现状 2.了解高级程序设计语言的基本概念和原理 3.了解高级程序设计语言实现技术及原理 4.了解若干主要的高级程序设计语言 授课方式: 课堂讲授和研究分析论文相结合 教材与参考书: 1. Terrence W. Pratt marvin V Zelkowitz, Programming Languages: Design and Implementation, 3rd Edition, Prentice Hall, Englewood Cliffs, New Jersey, 1996 2.招兆铿,朱洪,程序设计语言原理,上海科技文献出 版社,1998 3.徐家福,吕建,软件语言及其实现,科学出版社, 2000 考核方法 研究分析报告占30%,期末考试占70%
课程目的: 1.了解高级程序设计语言发展历史及现状 2.了解高级程序设计语言的基本概念和原理 3.了解高级程序设计语言实现技术及原理 4.了解若干主要的高级程序设计语言 授课方式: 课堂讲授和研究分析论文相结合 教材与参考书: 1. Terrence W. Pratt & Marvin V. Zelkowitz, Programming Languages: Design and Implementation, 3rd Edition, Prentice Hall, Englewood Cliffs, New Jersey, 1996 2. 招兆铿,朱洪,程序设计语言原理,上海科技文献出 版社,1998 3. 徐家福,吕建,软件语言及其实现,科学出版社, 2000 考核方法: 研究分析报告占30%,期末考试占70%
第一章 程序设计语言研宠
第一章 程序设计语言研究
什么是语言: 语言是信息交流工具。有如下几种定义: 1、 Webster字典定义 An artificially constructed primarily formal system of signs and symbols(as symbolic logic) including rules for the formation of admissible expressions and for their transformation 基于一组记号与符号由人工构造的(基本上是)形式化 的系统(如符号逻辑),包括合法表达式的形成规则和 转换规则。 engman字典定义 any system of signs. movements, etc. used to express meanings or feelings 任何表情达意的记号系统
什么是语言: 语言是信息交流工具。有如下几种定义: 1、Webster字典定义 An artificially constructed primarily formal system of signs and symbols (as symbolic logic) including rules for the formation of admissible expressions and for their transformation 基于一组记号与符号由人工构造的(基本上是)形式化 的系统(如符号逻辑),包括合法表达式的形成规则和 转换规则。 2、Longman字典定义 Any system of signs, movements, etc., used to express meanings or feelings 任何表情达意的记号系统
3、英汉双解计算机辞典定义(清华大学出版社) a set of characters. conventions and rules. that is used for conveying information. The three aspects of language are pragmatics, semantics and syntax 种用于传递信息之字符、约定和规则的集合。语言的 个方面是语用、语义和语法。 4、中国大百科全书,电子学与计算机卷 语言的基础是一组记号和一组规则,根据规则由记号构 成之记号串的总体就是语言 5、徐家福:软件语言及其实现 语言是基于一组记号与一组规则、根据规则由记号构成 之记号串的总体。任何语言均包括语法、语义和语用三 个方面
3、英汉双解计算机辞典定义(清华大学出版社) A set of characters, conventions and rules, that is used for conveying information. The three aspects of language are pragmatics, semantics and syntax 一种用于传递信息之字符、约定和规则的集合。语言的 三个方面是语用、语义和语法。 4、中国大百科全书,电子学与计算机卷 语言的基础是一组记号和一组规则,根据规则由记号构 成之记号串的总体就是语言。 5、徐家福:软件语言及其实现 语言是基于一组记号与一组规则、根据规则由记号构成 之记号串的总体。任何语言均包括语法、语义和语用三 个方面
语言的作用 描述作用、交流作用和标志作用(软件语言可作为计算 技术发展的里程碑标志) 语言是人类生活的必要工具,不同的语言被使用于不同的领 域和方面 在计算领域,也存在不同层次的语言,本书所论及的是实现 层次的语言,即程序设计语言。 程序设计语言=字符集+规则集(用于组合字符) 仼何用于描述算法和数据结构的一套符号系统均可称为程序 设计语言 本课程研究的对象: 主要考虑那些在计算机上实现的程序设计语言
•语言的作用 描述作用、交流作用和标志作用(软件语言可作为计算 技术发展的里程碑标志) •语言是人类生活的必要工具,不同的语言被使用于不同的领 域和方面 •在计算领域,也存在不同层次的语言,本书所论及的是实现 层次的语言,即程序设计语言。 •程序设计语言=字符集+规则集(用于组合字符) •任何用于描述算法和数据结构的一套符号系统均可称为程序 设计语言 本课程研究的对象: 主要考虑那些在计算机上实现的程序设计语言
术语所界定的范围: 术语“程序设计语言”并没有一个公认的范围定义 通常这个术语是指高级语言 计算机上语言的层次: 纯二进制 Byte或word,指令、数据不分 用一些符号来代表指令,如sub代表减, 机器码或符号机器码Ad代表加等,机器地址用十进制。有 时汇编语言等同于符号机器码 符号汇编语言变量名用符,可用符号而非数字 宏汇编语言]用户可以定义新指令及子程序 高级语言」源程序编译为目标程序,或解释执行 高级程序语言的高层规约语言,提供比高级 甚高级语言」程序语言更高级的语言设施。又称为“可 的规约语言”。有时也不区别于高级语言
术语所界定的范围: 术语“程序设计语言”并没有一个公认的范围定义 通常这个术语是指高级语言 计算机上语言的层次: 纯二进制 机器码或符号机器码 符号汇编语言 宏汇编语言 高级语言 甚高级语言 Byte或word,指令、数据不分 用一些符号来代表指令,如sub代表减, Add代表加等,机器地址用十进制。有 时汇编语言等同于符号机器码。 变量名用符号,地址也可用符号而非数字。 编制的程序称为汇编程序。 用户可以定义新指令及子程序 源程序编译为目标程序,或解释执行 高级程序语言的高层规约语言,提供比高级 程序语言更高级的语言设施。又称为“可执行 的规约语言”。有时也不区别于高级语言
程序设计语言的四个基本特征: 1、用户不需要具有机器代码的知识,只需学习特定的程序 设计语言,并独立于任何特定的机器代码而使用。这并不 意味着用户可以完全忽略实际的计算机,如:需知道浮点 数的表示或使用某些机器资源。 2、程序设计语言必须有较大程度的机器独立性(完全的机 器独立性)。这意味着必须有较大潜力,使得源程序可运 行在具有不同机器代码的两台计算机上,不需要完全重写 3、当源程序翻译成机器代码时,通常对每个执行单元有多 个机器指令,如:A=A+B需多个机器指令来实现 4、程序设计语言的记号比机器语言更接近于被求解的问题 如:A=A+B比其机器翻译更易于理解
程序设计语言的四个基本特征: 1、用户不需要具有机器代码的知识,只需学习特定的程序 设计语言,并独立于任何特定的机器代码而使用。这并不 意味着用户可以完全忽略实际的计算机,如:需知道浮点 数的表示或使用某些机器资源。 2、程序设计语言必须有较大程度的机器独立性(完全的机 器独立性)。这意味着必须有较大潜力,使得源程序可运 行在具有不同机器代码的两台计算机上,不需要完全重写。 3、当源程序翻译成机器代码时,通常对每个执行单元有多 个机器指令,如:A=A+B需多个机器指令来实现 4、程序设计语言的记号比机器语言更接近于被求解的问题。 如:A=A+B比其机器翻译更易于理解
11为什么研究程序设计语言 两个基本观察: 1、已有数百种语言被设计和实现。在1969年, Sammet就 列出了当时120种相当广泛使用的语言,在此以后,又有 很多语言被开发。在早期,为一个项目的进行而开发 种语言是常有的事。 2、大多数程序员通常不会同时使用多种语言,一般限制 到1~2种。事实上,都是直接使用计算机上已有的语言如 C、Ada、 Fortran等。 既然如此,为什么要去研究各种不同的语言 有的语言甚至永远不可能再被使用? 学习、研究程序设计语言的理由 不仅仅是停留于肤浅的对语言特性的了解和考虑 深入了解根本性的语言设计概念及它们对语言实现的影响
1.1 为什么研究程序设计语言 两个基本观察: 1、已有数百种语言被设计和实现。在1969年,Sammet就 列出了当时120种相当广泛使用的语言,在此以后,又有 很多语言被开发。在早期,为一个项目的进行而开发一 种语言是常有的事。 2、大多数程序员通常不会同时使用多种语言,一般限制 到1~2种。事实上,都是直接使用计算机上已有的语言如 C、Ada、 Fortran等。 既然如此,为什么要去研究各种不同的语言, 有的语言甚至永远不可能再被使用? 学习、研究程序设计语言的理由 不仅仅是停留于肤浅的对语言特性的了解和考虑 深入了解根本性的语言设计概念及它们对语言实现的影响
提高开发有效算法的能力 ·很多语言提供的特性如果被合适地使用,会给程序员带来 益处,但如被不合适地使用,将可能导致大量计算机时间 浪费或使程序员出现耗时的逻辑错误。 ·有可能一个长期使用某一语言的程序员也并不理解该语言 的所有特性 如递归特性:是一个非常便利的程序设计语言特性 如正确、合适使用,可得到优美和髙效算法的直接实现。 如不正确使用,将可能导致执行时间的天文数字增长。 如果程序员不知道递归蕴含的设计问题和实现困难,将 难于使用这种结构;对递归原理和实现技术的了解可使 程序员了解在特定语言中的递归的相对代价并通过其理 解确定其使用是否合适。 °新的程序设计方法不断在文献中引入,如OO程序设计,逻 辑程序设计和并发程序设计的使用均需要对实现这些概念 的语言的详细了解和掌握
1、提高开发有效算法的能力 •很多语言提供的特性如果被合适地使用,会给程序员带来 益处,但如被不合适地使用,将可能导致大量计算机时间 浪费或使程序员出现耗时的逻辑错误。 •有可能一个长期使用某一语言的程序员也并不理解该语言 的所有特性。 •如递归特性:是一个非常便利的程序设计语言特性 如正确、合适使用,可得到优美和高效算法的直接实现。 如不正确使用,将可能导致执行时间的天文数字增长。 如果程序员不知道递归蕴含的设计问题和实现困难,将 难于使用这种结构;对递归原理和实现技术的了解可使 程序员了解在特定语言中的递归的相对代价并通过其理 解确定其使用是否合适。 •新的程序设计方法不断在文献中引入,如OO程序设计,逻 辑程序设计和并发程序设计的使用均需要对实现这些概念 的语言的详细了解和掌握