CLU
编辑CLU 是一种编程语言,CLU 是xxx个为数据抽象提供直接语言支持的编程语言,这是面向对象编程语言开发的关键要素。
数据抽象的想法是在编程方法论的工作过程中提出的。 导致 CLU 开发的项目的主要目标是推进对编程方法的研究。 根据他们自己的说法,该语言的开发人员并没有看到他们的目标是传播相同的语言,而是传播软件开发的概念; 在 CLU 中实现。
CLU 不是为所谓的低级编程而设计的,例如从事操作系统及其组件的开发。 该语言应该对有经验的程序员有吸引力。 虽然不像 Pascal 那样作为学术目的的学习语言,但它可以用作这样的语言。 CLU 更看重软件系统的可读性和可理解性,而不是编写工作代码的便利性。 它在技术上旨在作为一个大规模的开发工具。 重点是开发大型软件系统,需要多名开发人员,其范围包括几千到几十万行代码。
语言的发展
编辑研究了各种编程语言,以弄清楚其中哪些可以用作 CLU 的基础。 开发人员得出结论,这两种语言都不合适,因为它们都不支持数据抽象。 开发人员想知道这个想法会将他们带到哪里,而不必担心它可能如何与预先存在的属性交互。 尽管如此,已经从现有的编程语言中采用了各种语言元素。
语言元素
编辑集群
CLU 最重要的元素之一是集群的概念。 这对应于面向对象语言(如 C++)中的一个对象,并且具有大致相同的语法。
尽管集群的概念在当时是一种用于构建程序代码的高级工具,但不存在用于构建集群本身的机制。 这意味着集群名称是全局的,集群不能分组或嵌套。 CLU 不支持隐式类型转换:在集群中,显式转换使用 up 和 down 命令在抽象类型和表示之间切换。 此外,还提供了通用数据类型 any 和过程力。 该过程检查对象是否具有特定类型。 对象可以具有可变和不可变的属性。 后者用作所谓的本机数据类型,例如整数定义。
附加语言元素
面向对象语言的很多特性比如由于设计原因,有意不实现继承,另一方面,CLU 支持异常处理、迭代器和参数化类型等语言元素。
异常处理
CLU刚好支持如果异常处理。 它提供了一种基于异常调度模型的机制。 函数调用可以在各种条件下自行终止,其中之一是函数终止并具有定义的正常返回值。 任何其他值都代表异常,CLU 的机制在处理未处理的异常方面是不同寻常的。 大多数异常处理机制通过代码中的函数调用树传播它们:如果抛出异常的函数没有处理它,它将传播到树中它之前的函数。 另一方面,在 CLU 中,所有未处理的异常都被转换为所谓的失败并继续传递。 基于其他编程语言的多次尝试,异常用signal抛出,用except捕获。 由于重点是类型设计,因此无法创建枚举类型。
迭代器
CLU 的另一个重要元素是迭代器。 这些表示可用于迭代列表元素或集合元素的指针。 迭代器基于 Alphard 编程语言中使用的称为生成器的结构。 CLU 开发人员在与 Alphard Group 的一次会议上了解了生成器的想法。 CLU 开发人员对这个概念很感兴趣,因为它解决了与数据抽象相关的各种问题。 然而,他们也担心这种结构过于复杂。 尽管如此,Russ Atkinson 受到生成器的启发,在从波士顿会议返回的途中在 CLU 中构思了迭代器的概念。 他在 1975 年 9 月的一份所谓的设计说明中描述了这一点。CLU 中的迭代器代表一个“黑匣子”,它提供独立于它所应用的数据的编程接口。 因此,例如 例如,复数的迭代器和整数数组的迭代器是相同的。 迭代器现在是许多现代编程语言中的通用语言元素。
多重赋值
CLU还支持多重赋值,允许多个变量出现在赋值运算符的左侧。 例如,x,y = y,x 会在变量 x 和 y 之间交换值。 同理,函数可以有多个值比如 g. 返回 x,y,z = f(t)。
对其他编程语言的影响
编辑- Python 和 Ruby 继承了 CLU 的各种概念,例如yield 语句和多重赋值。
- CLU 和 Ada 是 C++ 模板的主要模板。
- CLU 的异常处理机制影响了更多的现代编程语言,例如 C++ 和 Java。
- CLU 的所有对象都存在于堆中,内存管理是自动的。 这直接影响了 Java。
- Python 和 C# 提供了生成器的概念,它首先作为迭代器出现在 CLU 中。
- Lua继承了CLU对函数值的多重赋值和多重返回。
内容由匿名用户提供,本内容不代表vibaike.com立场,内容投诉举报请联系vibaike.com客服。如若转载,请注明出处:https://vibaike.com/371993/