语言的作用 描述作用、交流作用和标志作用(软件语言可作为计算 技术发展的里程碑标志) 语言是人类生活的必要工具,不同的语言被使用于不同的领 域和方面 在计算领域,也存在不同层次的语言,本书所论及的是实现 层次的语言,即程序设计语言。 程序设计语言=字符集+规则集(用于组合字符) 仼何用于描述算法和数据结构的一套符号系统均可称为程序 设计语言 本课程研究的对象: 主要考虑那些在计算机上实现的程序设计语言
•语言的作用 描述作用、交流作用和标志作用(软件语言可作为计算 技术发展的里程碑标志) •语言是人类生活的必要工具,不同的语言被使用于不同的领 域和方面 •在计算领域,也存在不同层次的语言,本书所论及的是实现 层次的语言,即程序设计语言。 •程序设计语言=字符集+规则集(用于组合字符) •任何用于描述算法和数据结构的一套符号系统均可称为程序 设计语言 本课程研究的对象: 主要考虑那些在计算机上实现的程序设计语言
术语所界定的范围: 术语“程序设计语言”并没有一个公认的范围定义 通常这个术语是指高级语言 计算机上语言的层次: 纯二进制 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程序设计,逻 辑程序设计和并发程序设计的使用均需要对实现这些概念 的语言的详细了解和掌握