modula2 :modula2

更新时间:2024-09-20 23:25

"Modula

正文

Modula 2 是a computer programming 的语言 被发明 Niklaus Wirth 在 ETH 在附近 1978, 作为一个后继者 Modula, 其它语言由他。 Modula 被实施了1980 年在 Lilith 计算机, 由新运作公司DISER (数据图象声音处理器和放射器接收器系统) 商业化1982 年作为MC1 和MC2 。 DISER 全世界卖了120 个单位, Modula 2 语言宽松地根据 mesa 编程语言, 从Xerox, 那Wirth 看见了在他的1976 sabbatical 年期间在Xerox PARC 。

描述

Modula 2 是一般用途 程序语言, 充足地灵活做系统编程, 但以更加宽广的应用。特别是, 它被设计支持分开的编辑和数据抽象化用一个直接的方式。许多句法根据Wirth 的更加早期和更加著名的语言, Pascal. Modula 2 被设计宽广地是相似与Pascal, 与一些元素被去除和重要加法 模块 概念, 和直接语言支持 多道程序设计

Modula 2 模块 可以被使用浓缩一套相关部分程序和数据结构, 和制约他们的可见性从其它节目的部份。模块设计实施了Modula 2 数据抽象化特点用一个非常干净的方式。 Modula 2 节目由模块组成, 每个被弥补二份: a 定义模块, 接口部份, 包含唯一那些子系统的部份是 出口 (可看见对其它模块), 和 实施模块, 包含运作的代码是内部的对模块。

语言有严密的范围控制。特别是模块的范围可能被考虑作为inpenetrable 墙壁: 除了标准idenfiers 对象从外面世界不是可看见的在模块里面除非明确地进口; 内部模块对象不是可看见的从外面除非明确地出口。

假设模块M1 出口对象a 、b 、c, 和P 由列举它的标识符在一份明确出口商品目录

定义模块M1; 出口合格了a, b, c, P; ...

然后对象a 、b 、c, 和P 从模块m1 成为现在知道的外部模块M1 作为M1 。a, M1 。b, M1 。c, 和M1 。P 。他们被出口在a 合格 方式对宇宙(被承担的模块M1 是全球性的) 。出口的模块名称, i 。e 。 M1, 被使用作为合格者被对象名跟随。

假设模块M2 包含以下进口声明

模块M2; 进口M1; ...

然后这意味, 对象由模块M1 出口对宇宙可能现在被使用在模块M2 里面。他们参考在a 合格 方式喜欢这: M1 。a, m1 。b, M1 。c, 和M1 。P 。例子:

... M1 。a:= 0; M1 。c:= M1 。P(M1 。a + M1 。b); ...

合格的出口避免命名碰撞: 例如, 如果其它模块M3 并且会出口对象称P, 我们能仍然然后区别二个对象, 从M1 。P 与M3 不同。P 。由于合格的出口它不事关, 两个对象叫做P 里面他们出口的模块M1 和M3 。

有一个供选择的技术可利用, 是在宽用途由Modula 2 程序员。假设模块M4 被公式化作为这

模块M4; 从M1 进口a, b, c, P;

然后这意味, 对象由模块M1 出口对宇宙可能再被使用在模块M4 里面, 但现在由在被出口的标识符的仅仅参考以"不够资格的" 方式象这样: a 、b 、c, 和P 。例子:

... a:= 0; c:= P(a + b); ...

unqualifying 进口这个技术准许确切地使用对象外部他们出口的模块在同样简单, i 。e 。不够资格, 方式作为里面出口的模块。墙壁围拢所有模块现在变得毫不相关为这明确地考虑到的所有那些对象。当然unqualifying 的进口是只可适用的如果没有名字碰撞。

这些出口并且进口规则也许似乎多余地限制性和絮絮叨叨。但他们不仅保障对象免受不需要的通入, 而且有宜人的副作用提供自动相互参照每个标识符的定义在节目: 如果标识符由模块名称合格, 定义然后来自那个模块。否则如果它发生不够资格, 简单地查寻落后, 和您将或者遭遇那个标识符的声明, 或它的发生在命名模块它来自的进口声明。这物产变得非常有用当尝试了解大节目包含许多模块。

语言提供(有限的) 唯一处理器并发(显示器, coroutines 并且明确控制转移) 和为硬件通入(绝对地址, 二进制处理, 和 interrupts). 它用途 命名相等

相关语言

虽然Modula 2 是显然最响誉和广泛被应用的变形, 有被关系得无论怎样的几种语言: 原物, 和相当不同, Modula (打算供系统实现使用), Modula 2+ 、Modula 2 * (平行的引伸), ISO Modula 2 OO 和普通引伸, Modula 3 (由DEC 和Olivetti; 增加无用单元收集、对象, 和generics), Oberon (另, 以后, Wirth 设计), Oberon-2 (Oberon 以OO 引伸), 客观Modula 2 (Modula 2 杂种和 smalltalk) 和一定数量其他。这些不应该被认为"更好的版本" 或"替换" 为Modula 2; 多数是不同的语言用不同的目的, 和以他们自己的力量和弱点。

与一起 C 和 Ada, Modula 2 经常被认为三个最重大的"现代" 编程语言(ie 的当中一个, structured 编程 时代) 。三, Modula 2 是最小, 最容易读, 最容易学会, 和最干净语法上和概念性地设计, 。 Modula 2 被开发了作为系统语言为 Lilith 工作站, 和形成依据的 Oberon 项目在ETHZ 。多数当前的编程语言采取了许多Modula 2 特点。

参考资料

免责声明
隐私政策
用户协议
目录 22
0{{catalogNumber[index]}}. {{item.title}}
{{item.title}}
友情链接: