5.1类型在编程语言中的作用 512类型化语言和类型系统 语法的和静态的概念动态的概念 类型化语言 安全语言 良类型程序 良行为的程序
5.1 类型在编程语言中的作用 5.1.2 类型化语言和类型系统 语法的和静态的概念 动态的概念 类型化语言 安全语言 良类型程序 良行为的程序
5.1类型在编程语言中的作用 512类型化语言和类型系统 9、类型检查:未类型化语言 可以通过彻底的运行时详细检查来排除所有的禁止 错误 如LISP语言 10、类型检查:类型化语言 类型检查也可以放在运行时完成,但影响效率 般都是静态检查,类型系统被用来支持静态检查 静态检查语言通常也需要一些运行时的检查 数组访问越界检查
5.1 类型在编程语言中的作用 5.1.2 类型化语言和类型系统 9、类型检查:未类型化语言 • 可以通过彻底的运行时详细检查来排除所有的禁止 错误 – 如LISP语言 10、类型检查:类型化语言 • 类型检查也可以放在运行时完成,但影响效率 • 一般都是静态检查,类型系统被用来支持静态检查 • 静态检查语言通常也需要一些运行时的检查 – 数组访问越界检查
5.1类型在编程语言中的作用 512类型化语言和类型系统 实际使用的一些语言并不安全 ·棼止错误集合没有囊括所有不会被捕获的错误 Pascal语言 无标志的变体记录类型 函数类型的参数
5.1 类型在编程语言中的作用 5.1.2 类型化语言和类型系统 实际使用的一些语言并不安全 • 禁止错误集合没有囊括所有不会被捕获的错误 • Pascal语言 – 无标志的变体记录类型 – 函数类型的参数
5.1类型在编程语言中的作用 512类型化语言和类型系统 实际使用的一些语言并不安全 ·棼止错误集合没有囊括所有不会被捕获的错误 Pascal语言 用C语言的共用体( union)来举例 union U int ul; int *u2; u; nt a p uul=10 P=u.u2 *p=0;
5.1 类型在编程语言中的作用 5.1.2 类型化语言和类型系统 实际使用的一些语言并不安全 • 禁止错误集合没有囊括所有不会被捕获的错误 • Pascal语言 • 用C语言的共用体(union)来举例 union U { int u1; int u2;} u; int p; u.u1 = 10; p = u.u2; p = 0;
5.1类型在编程语言中的作用 512类型化语言和类型系统 实际使用的一些语言并不安全 C语言 还有很多不安全的并且被广泛使用的特征,如: 指针算术运算、类型强制、参数个数可变 在语言设计的历史上,安全性考虑不足是因为当时强调 代码的执行效率 在现代语言设计上,安全性的位置越来越重要 C的一些问题已经在C++中得以缓和 更多一些问题在Java中已得到解决
5.1 类型在编程语言中的作用 5.1.2 类型化语言和类型系统 实际使用的一些语言并不安全 • C语言 – 还有很多不安全的并且被广泛使用的特征,如: 指针算术运算、类型强制、参数个数可变 – 在语言设计的历史上,安全性考虑不足是因为当时强调 代码的执行效率 • 在现代语言设计上,安全性的位置越来越重要 – C的一些问题已经在C++中得以缓和 – 更多一些问题在Java中已得到解决