CLU
MIT的编程语言
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;
一个群组是封装了所有组件的模块,除了那些显示指定的"is"语句,群组还定义了一个类型可以被外部的群组所命名(如同上面的complex_number),但其表示的类型对于外部用户是隐藏的。
群组的命名是全局性的,并且没有集群提供的命名空间机制或允许他们被其他本地群组所创建。CLU不执行隐式类型转换,在群组中要显式地转换抽象类型与表示之间的“上”和“下”关系。CLU提供了一种通用的类型“any”和一个过程强制检查对象为一个确定类型。对象可能是可变或者一成不变的,而后者则是基类型,如整型、布尔类型、字符类型和字符串类型。
其他特性
CLU类型系统的另外一个重要的特性是它的迭代器( iterators),它会从容器中将对象一个一个地返回。不管使用何种数据类型,迭代器都提供了一种通用的API(应用程序接口),因此一个迭代器既可以用于complex_number容器,也可以应用于一个数组类型。CLU迭代器的一个独特特性是它们实现了协同程序,每一个提供给调用者的值都是通过“yeild”声明的。CLU中迭代器这种特性已经成为现代许多语言的常见特性了,如C♯RubyPython,尽管他们都管它叫生成器(generator)。
CLU还包括了很多语言当中都在尝试的异常处理,异常由signal标记捕获,由except进行处理。不像大多数其它语言异常处理,异常不隐式提示主调链;既不进行捕获也不明确提示,而是立即转换成一个特殊的失败异常,一般是终止程序。CLU被认为是第一个类型安全的编程语言,在这一方面甚至要领先于ML。
CLU最后的一个特性是多任务,它允许超过一个变量出现在赋值运算符的左侧。举例来说,x,y=y,x将交换x和y的值。同样的,函数可以返回多个值,像x,y,z=fun(t)。CLU中所有的对象都存在堆空间中,并且内存管理也是自动处理的。CLU还支持用户自定义的抽象数据类型。CLU是第一个提供安全参数化类型的语言,使用where语句结构来表达对实际类型参数的约束。
影响
PythonRuby引用了CLU中的一些概念(如共享调用、yield语句和多任务等)。
CLU和Ada是C++模板设计的来源。
CLU的异常处理机制也影响了像Java和C++这样的新语言。
C++,C♯,Python和Sather包括迭代器,它最早出现在CLU。
Lua从CLU调用多任务和多返回值功能。
1.Python和Ruby引用了CLU中的一些概念(如共享调用、yield语句和多任务等)。
2.CLU和Ada是C++模板设计的来源。
3.CLU的异常处理机制也影响了像Java和C++这样的新语言。
4.C++,C#,Python和Sather包括迭代器,它最早出现在CLU。
5.Lua从CLU调用多任务和多返回值功能。
参考资料

Warning: Invalid argument supplied for foreach() in /www/wwwroot/newbaike1.com/id.php on line 362
目录
概述
主要特征
其他特性
影响
参考资料