模块化编程
模块化(modular)编程,是强调将计算机程序的功能分离成独立的、可相互改变的“模块”(module)的软件设计技术,它使得每个模块都包含着执行预期功能的一个唯一方面(aspect)所必需的所有东西。
编程范型 |
---|
模块接口表达了这个模块所提供的和所要求的元素。这些在接口中定义的元素可以被其他模块检测。模块实现包含了工作程式码,它们对应于在接口中声明的元素。模块化编程密切相关于结构化编程和物件導向编程,他们有着通过分解成更小部份的方式,促进大型软件和系统的建构的相同目标,并且都大致起源于1960年代。尽管这些術语的史上的用法曾经是不相容的,“模块化编程”现在指称将整个程序的代码分开成各部份的高层分解:结构化编程是采用结构化控制流的低层代码使用,而面向对象编程是对象的“数据”使用,对象是某种数据结构。
在面向对象编程中,使用接口作为一种架构上的模式(pattern)来构造模块叫做基于接口编程 。
语言支持
正式支持模块概念的语言包括:Ada、Algol、BlitzMax、C#, Clojure、COBOL、D、Dart、eC、Erlang、Elixir、Elm、F、F#、Fortran、Go、Haskell、IBM/360汇编语言、IBM i控制语言(CL)、IBM RPG、Java[lower-alpha 1]、MATLAB、ML、Modula、Modula-2、Modula-3、Morpho、NEWP、Oberon、Oberon-2、Objective-C、OCaml、一些派生的Pascal(Component Pascal、Object Pascal、Turbo Pascal、UCSD Pascal)、 Perl、PL/I、PureBasic、Python、Ruby[2]、Rust、JavaScript[3]、Visual Basic .NET、WebDNA。
历史
模块没有包括在最初的ALGOL 68(1968年)规定中,但是作为扩展被包括于早期的实现中,如ALGOL 68-R(1970年)和ALGOL 68C(1970年),并在此后进行了形式化[4]。开始就设计为模块化编程的第一个语言是Niklaus Wirth的短寿的Modula(1975年)。另一个早期模块化语言是Xerox PARC的Mesa(1970年代),Wirth提出了Modula和Mesa的继任者Modula-2(1978年),它影响了以后的语言,特别是通过它的后继者Modula-3(1980年代)。
参见
注释
- The term "package" is used for the analog of modules in the JLS;[1] — see Java package. "Modules", a kind of collection of packages, are planned for Java 9 as part of Project Jigsaw; these were earlier called "superpackages" and planned for Java 7.
引用
- James Gosling, Bill Joy, Guy Steele, Gilad Bracha, The Java Language Specification, Third Edition, ISBN 0-321-24678-0, 2005. In the Introduction, it is stated "Chapter 7 describes the structure of a program, which is organized into packages similar to the modules of Modula." The word "module" has no special meaning in Java.
- ECMAScript® 2015 Language Specification, 15.2 Modules
- Lindsey, Charles H. (PDF). ALGOL Bulletin. Feb 1976, (39): 20–29 [2014-12-01]. (原始内容 (PDF)存档于2016-03-03).