《程序设计语言与编译》笔记(1)

来源:互联网 发布:java jdk for mac 编辑:程序博客网 时间:2024/05/16 18:03
  • 一种语言涉及设计者、实现者与使用者,如何鉴赏、分析、选择、设计和实现程序设计语言。
  • 程序设计语言的分类:

(1)第一代:依赖机器的Instruction System,以2进制代码表示。

(2)第二代:汇编语言,通过汇编程序转换为机器语言

(3)第3代:面向过程语言,以冯。诺依曼体系有关,每条语句对应机器的一条命令。

(4)第4代:说明性语言,告诉计算机“做什么”,不必告诉计算机“怎么做”,典型如SQL语言。

(5)新一代:如函数式、逻辑式语言。

  • 冯。诺依曼体系:包括一个存储器、控制器和处理器。体现为:

(1)数据或指令以二进制形式存储

(2)“存储程序”方式工作,源程序存储在某个地方

(3)程序顺序执行。

(4)存储器的内容可以被更改,如重写为新值

  • 一个对象与各种属性建立起某种联系的过程称为Binding,如变量与它的类型属性。若一个绑定在运行之前完成(即编译时),运行时不能改变,就称为静态绑定,若一个绑定在运行时完成,就称为动态绑定。
  • 变量:是对存储单元的抽象,可以进行读写操作。它有4个属性,Scope、Lifetime、Value、Type

(1)动态作用域绑定与静态作用域绑定

(2)我们用数据对象(Data Object)来表示存储区和它存储的值,我们把变量获得存储区的活动称为Allocation,在运行前分配称为静态分配,在运行中分配即为动态分配。可见java中的类的实例化都是动态分配。

(3)变量的值以二进制存储,并绑定于变量。变量的值可能为指向某个对象的Pointor,若这个对象的值也是Pointor,这就形成了一个引用链,通常称为Access Path。变量的初始化问题,不同的语言采用不同的解决方案。

(4)变量的类型,可以看成与变量相关连的值的类,以及对这些值进行的操作(+,-,*,/等)。你定义了一个变量的类型,其实已经定义了它的基本操作。同样,变量可以静态或者动态地绑定于类型,这就引出了静态语言与动态语言的区别。

  • 虚拟机概念。对于任何语言的用户而言,一台机器可以看成以该语言为机器语言的虚拟机。如你是个java用户,那么这台机器就是以java语言为机器语言的虚拟机。
  • Program Unit和Unit Instance。一个可以作为程序执行过程中的独立单元称为Program Unit,一个单元的源代码称为Unit Representation。运行时的单元即可称为Unit Instance,它是由代码段和活动记录组成,代码段包括程序的指令,而活动记录包含执行这个单元所必需的信息以及该单元的局部变量。

             

 

                 

原创粉丝点击