模块化编程

模块化编程

模块没有包括在最初的ALGOL 68(1968年)规定中,但是作为扩展被包括于早期的实现中,如ALGOL 68-R(英语:ALGOL 68-R)(1970年)和ALGOL 68C(英语:ALGOL 68C)(1970年),并在此后进行了形式化[1]。开始就设计为模块化编程的第一个语言是Niklaus Wirth的短寿的Modula(1975年)。另一个早期模块化语言是Xerox PARC的Mesa(1976年),Wirth提出了Modula和Mesa的继任者Modula-2(1978年),它影响了以后的语言,特别是通过它的后继者Modula-3(1988年)。

模块化编程从1980年代开始广泛传播:最初的Pascal语言(1970年)不包括模块,但是后来的版本特别是UCSD Pascal(1978年)和Turbo Pascal(1983年),以“单元”的形式包括了它们,受Pascal影响的Ada(1980年)也是如此。扩展Pascal ISO 10206:1990标准,在模块支持上保持接近于Modula-2。Standard ML(1984年)是有着最完全的模块系统的语言之一[2],包括了在模块间映射的函子(参数化模块)。

在1980年代和1990年代,模块化编程被遮盖于并经常被混淆于面向对象编程,特别是由于C++和Java的流行。例如,C语言家族中的C++(最初在1980年是具有类的C)和Objective-C(1983年)很早就已经支持了对象和类,只在30年后甚至更久之后才支持模块。Java(1995年)以包的形式支持模块,然而代码组织的主要单元是类。但是Python(1991年)从开始就突出的使用模块和对象二者,使用模块作为代码组织的主要单元,使用包作为大尺度的单元;而Perl 5(1994年)包括了对模块和对象二者的支持,具有能从CPAN(1993年)获得的大量的模块。

模块化编程现在已经普及了,自从1990年代以来,它能在几乎所有主要语言的开发中找到。模块的相对重要性因语言而异,并在基于类的面向对象语言中,仍与作为组织和封装的单元的类存在重叠和混淆,尽管它们都被良好的确立为独立的概念。

相关推荐