CLU
编程语言
CLU是一门编程语言,其首先是由麻省理工学院(MIT)的Barbara Liskov和他的学生们于1974到1975年间推出的。CLU因其使用抽象数据类型的构造函数而被人注意,并且还包括操作的代码,更为关键的是它是具有面向对象方向的一门语言。但是许多的面向对象的方法CLU却没有,如继承。CLU也因此被称为“基于对象”(Object-based)的语言,而非“面向对象编程”(OOP)的语言。
主要特征
CLU的编程语法是基于ALGOL的语法规则的,这也成为其后大多数新语言设计的起点。CLU的关键概念是群组,CLU的类型扩展系统和语言名字的由来是源于CLUster。群组通常对应于面向对象语言中“类”的概念以及相似的语法规则。举例来说,下面就是一个群组语法实现complex_number:
complex_number = cluster is add, subtract, multiply, ...
rep = record [ real_part: real, imag_part: real ]
add = proc ... end add;
subtract = proc ... end subtract;
multiply = proc ... end multiply;
...
end complex_number;
群组的命名是全局性的,并且没有集群提供的命名空间机制或允许他们被其他本地群组所创建。CLU不执行隐式类型转换,在群组中要显式地转换抽象类型与表示之间的“上”和“下”关系。CLU提供了一种通用的类型“any”和一个过程强制检查对象为一个确定类型。对象可能是可变或者一成不变的,而后者则是基类型,如整型、布尔类型、字符类型和字符串类型。
其他特性
CLU类型系统的另外一个重要的特性是它的迭代器(iterators),它会从容器中将对象一个一个地返回。不管使用何种数据类型,迭代器都提供了一种通用的API(应用程序接口),因此一个迭代器既可以用于complex_number容器,也可以应用于一个数组类型。CLU迭代器的一个独特特性是它们实现了协同程序,每一个提供给调用者的值都是通过“yeild”声明的。CLU中迭代器这种特性已经成为现代许多语言的常见特性了,如C#,Ruby和Python,尽管他们都管它叫生成器(generator)。
CLU还包括了很多语言当中都在尝试的异常处理,异常由signal标记捕获,由except进行处理。 不像大多数其它语言异常处理,异常不隐式提示主调链;既不进行捕获也不明确提示,而是立即转换成一个特殊的失败异常,一般是终止程序。CLU被认为是第一个类型安全的编程语言,在这一方面甚至要领先于ML。
CLU最后的一个特性是多任务,它允许超过一个变量出现在赋值运算符的左侧。举例来说,x,y=y,x将交换x和y的值。同样的,函数可以返回多个值,像x,y,z=fun(t)。CLU中所有的对象都存在堆空间中,并且内存管理也是自动处理的。CLU还支持用户自定义的抽象数据类型。CLU是第一个提供安全参数化类型的语言,使用where语句结构来表达对实际类型参数的约束。
主要影响
参考资料
最新修订时间:2023-04-29 18:35
目录
概述
主要特征
参考资料