影响语言设计的两大要素
- 计算机体系结构
- 程序设计方法学
程序语言评价标准
- 可读性
- 可写性
- 可靠性
- 总成本
正交性
正交性好久意味着相对较小的基本结构集合,能够以较少的组合方式来构成语言的控制结构和数据结构。但是,基本结构的任何一种可能组合都是合法且有意义的。如果某一个组合不合法,那就是正交性不够好。说通俗点就是如果一个语言的特例较多,那它的正交性就不好。
类型检查是否完善
- 语义是否明确
- 异常处理是否完善
- 整体简单性,表达性好不好
程序设计方法学
开始是面向过程,然后逐渐由面向过程转变为面向数据。面向数据的方法强调数据的设计,关注如何用抽象数据类型来解决问题。最后演变为面向对象的设计。面向对象的设计方法基于数据抽象,将数据处理和数据对象封装在一起,控制数据访问,加入了继承和动态方法绑定。
程序语言设计方法实现的基础
操作系统和语言实现系统在计算机的机器语言接口之上,他们是分层的,这些层可以想象为虚拟的计算机,在更高的层次上提供用户接口。
实现方法:编译、完全解释和混合实现系统
编译
是程序语言经过编译器翻译成生机器语言,由计算机直接执行。这种方法称为编译器实现,其优点是一旦翻译过程完成,程序的执行速度就非常快。先翻译完后执行,只翻译一次。
冯诺依曼瓶颈:计算机内存和处理器连接的速度决定了计算机的速度,因为指令执行比指令传输到处理器更快,这一连接称为冯诺依曼瓶颈,它是冯诺依曼体系结构计算机主要的速度限制因素。这个瓶颈是研究和开发并行计算机的主要动机。
完全解释
程序由一个称为解释器的程序进行解释执行,没有任何翻译过程。解释器程序的行为像是机器的软件仿真,其读取-执行周期处理的是高级语言程序语句而不是机器指令。显然,这种软件仿真为该语言提供了一个虚拟机。
缺点是速度慢,执行速度慢的根本原因是对高级语言语句的解码,比机器语言指令要复杂的多,而且不管语句执行多少次,每次都必须解码。
混合实现系统
编译和完全解释的折中,系统先将高级语言程序翻译成专为方便解释而设计的中间语言。
优点:
速度比完全解释快,因为源语言语句只解码一次。
举例:
比如java语言,中间形式是字节码,可移植到装有字节码解释器和相应的运行时系统的任何机器上。字节码解释器和相应的运行时系统被统称为java虚拟机。
扩展:
即时
JIT
实现系统是先将程序翻译为中间语言,然后在执行过程调用方法时,将中间语言的方法编译为机器代码,机器代码会保留,用于之后的调用。还有一种方式:解释器用于开发和调试程序,在程序达到没有缺陷的状态后,再编译程序,以提高执行速度。