Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Modular programming
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
==History== Modular programming, in the form of subsystems (particularly for I/O) and software libraries, dates to early software systems, where it was used for [[code reuse]]. Modular programming per se, with a goal of modularity, developed in the late 1960s and 1970s, as a larger-scale analog of the concept of [[structured programming]] (1960s). The term "modular programming" dates at least to the National Symposium on Modular Programming, organized at the Information and Systems Institute in July 1968 by [[Larry Constantine]]; other key concepts were [[information hiding]] (1972) and [[separation of concerns]] (SoC, 1974). Modules were not included in the original specification for [[ALGOL 68]] (1968), but were included as extensions in early implementations, [[ALGOL 68-R]] (1970) and [[ALGOL 68C]] (1970), and later formalized.<ref>{{cite journal |last=Lindsey |first=Charles H. |author-link=Charles H. Lindsey |date=Feb 1976 |title=Proposal for a Modules Facility in ALGOL 68 |url=http://archive.computerhistory.org/resources/text/algol/ACM_Algol_bulletin/1061719/p19-lindsey.pdf |url-status=dead |journal=ALGOL Bulletin |issue=39 |pages=20β29 |archive-url=https://web.archive.org/web/20160303230037/http://archive.computerhistory.org/resources/text/algol/ACM_Algol_bulletin/1061719/p19-lindsey.pdf |archive-date=2016-03-03 |access-date=2014-12-01}}</ref> One of the first languages designed from the start for modular programming was the short-lived [[Modula]] (1975), by [[Niklaus Wirth]]. Another early modular language was [[Mesa (programming language)|Mesa]] (1970s), by [[Xerox PARC]], and Wirth drew on Mesa as well as the original Modula in its successor, [[Modula-2]] (1978), which influenced later languages, particularly through its successor, [[Modula-3]] (1980s). Modula's use of dot-[[qualified name]]s, like <code>M.a</code> to refer to object <code>a</code> from module <code>M</code>, coincides with notation to access a field of a record (and similarly for attributes or methods of objects), and is now widespread, seen in [[C++]], [[C Sharp (programming language)|C#]], [[Dart (programming language)|Dart]], [[Go (programming language)|Go]], [[Java (programming language)|Java]], [[OCaml]], and [[Python (programming language)|Python]], among others. Modular programming became widespread from the 1980s: the original [[Pascal (programming language)|Pascal]] language (1970) did not include modules, but later versions, notably [[UCSD Pascal]] (1978) and [[Turbo Pascal]] (1983) included them in the form of "units", as did the Pascal-influenced [[Ada (programming language)|Ada]] (1980). The Extended Pascal ISO 10206:1990 standard kept closer to Modula2 in its modular support. [[Standard ML]] (1984)<ref>{{cite conference |author=David MacQueen |date=August 1984 |title=Modules for Standard ML |url=https://dl.acm.org/doi/pdf/10.1145/800055.802036 |book-title=LFP '84 Proceedings of the 1984 ACM Symposium on LISP and functional programming |pages=198β207|doi=10.1145/800055.802036 }}</ref> has one of the most complete module systems, including [[Standard ML#Module system|functors]] (parameterized modules) to map between modules. In the 1980s and 1990s, modular programming was overshadowed by and often conflated with [[object-oriented programming]], particularly due to the popularity of C++ and Java. For example, the C family of languages had support for objects and classes in C++ (originally [[C with Classes]], 1980) and Objective-C (1983), only supporting modules 30 years or more later. Java (1995) supports modules in the form of packages, though the primary unit of code organization is a class. However, Python (1991) prominently used both modules and objects from the start, using modules as the primary unit of code organization and "packages" as a larger-scale unit; and [[Perl 5]] (1994) includes support for both modules and objects, with a vast array of modules being available from [[CPAN]] (1993). [[OCaml]] (1996) followed ML by supporting modules and functors. Modular programming is now widespread, and found in virtually all major languages developed since the 1990s. The relative importance of modules varies between languages, and in class-based object-oriented languages there is still overlap and confusion with classes as a unit of organization and encapsulation, but these are both well-established as distinct concepts.
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)