Jump to content

Edit filter log

Details for log entry 3,441,811

11:53, 5 October 2010: 122.179.60.81 (talk) triggered filter 135, performing the action "edit" on Modular programming. Actions taken: Tag; Filter description: Repeating characters (examine)

Changes made in edit

'''Hey............'''''Italic text''
{{noref|date=August 2010}}
{{Programming paradigms}}

'''Modular programming''' is a software design technique that increases the extent to which software is composed of separate, interchangeable components, called '''modules'''. Conceptually, modules represent a [[separation of concerns]], and improve [[maintainability]] by enforcing logical boundaries between components. Modules are typically incorporated into the program through [[interface (computer science)|interfaces]]. A module interface expresses the elements that are provided and required by the module. The elements defined in the interface are detectable by other modules. The [[implementation]] contains the working code that corresponds to the elements declared in the interface.
==Language support==
Languages that formally support the module concept include [[IBM/360]] [[Assembler for an assembly language|Assembler]], [[COBOL]], [[IBM RPG|RPG]] and [[PL/1]], [[Ada (programming language)|Ada]], [[D (programming language)|D]], [[F (programming language)|F]], [[Fortran]], [[Haskell (programming language)|Haskell]], [[BlitzMax]], [[OCaml]], [[Pascal (programming language)|Pascal]], [[ML (programming language)|ML]], [[Modula-2]], [[Oberon (programming language)|Oberon]], [[Component Pascal]], [[Zonnon]], [[Erlang (programming language)|Erlang]], [[Perl]], [[Python (programming language)|Python]] and [[Ruby (programming language)|Ruby]]. The [[IBM System i]] also uses Modules in [[IBM_RPG|RPG]], [[COBOL]] and [[AS/400 Control Language|CL]], when programming in the ILE environment. Modular programming can be performed even where the programming language lacks explicit syntactic features to support named modules.

Software tools can create modular code units from groups of components. [[Library (computing)|Libraries]] of components built from separately compiled modules can be combined into a whole by using a [[Linker (computing)|linker]].

==Key Aspects==
With Modular Programming, concerns are separated such that no (or few) modules depend upon other modules of the system. To have as few dependencies as possible is the goal. When creating a modular system, instead of creating a monolithic application (where the smallest component is the whole application), several smaller modules are built (and usually compiled) separately that, when composed together, will construct the executable application program. A [[Just-in-time compilation|just in time compiler]] may perform some of this construction "on-the-fly" at [[run time]].

This makes modular designed systems, if built correctly, far more reusable than a traditional monolithic design - since all (or many) of these modules may then be reused (without change) in other projects. This also facilitates the "breaking down" of projects (through "[[divide and conquer]]") into several smaller projects. Theoretically, a modularized software project will be more easily assembled by large teams, since no team members are creating the whole system, or even need to know about the system as a whole. They can focus just on the assigned smaller task (this, it is claimed, counters the key assumption of [[The Mythical Man Month]] - making it actually possible to add more developers to a late software project - without making it later still).

==Implementation==
[[Message passing]] has, more recently, gained ground over the earlier, more conventional, "<code>Call</code>" interfaces, becoming the more dominant linkage between separate modules as an attempt to solve the "versioning problem" (sometimes experienced when using interfaces for communication between the modules).

==History==
Traditional programming languages have been used to support modular programing - since at least the 1960's. Modular programming is a loosely defined concept with no official definition. It is, in essence, simply a programming technique. Exactly where modularized programming ends, and [[Dynamic-link library|Dynamically Linked Libraries]] or [[Object-oriented programming]] starts in this context is subjective. It might be defined as the natural predecessor of [[OOP]], or an evolutionary step beyond it - depending upon viewpoint.

==See also==
* [[Architecture description language]]
* [[Cohesion (computer science)|Cohesion]]
* [[Constructionist design methodology]], a methodology for creating modular, broad Artificial Intelligence systems
* [[Component-based software engineering]]
* [[Coupling (computer science)|Coupling]]
* [[David Parnas]]
* [[Information hiding]] (encapsulation)
* [[Library (computing)]]
* [[List of System Quality Attributes]]
* [[Snippet (programming)]]
* [[Structured programming]]

==References==
<references/>
* [http://legosoftwareprocess.org/ O2 Software Process]

{{compu-prog-stub}}


[[Category:Programming paradigms]]
[[Category:Holism]]

[[es:Programación modular]]
[[de:Modul (Software)]]
[[fa:برنامه‌نویسی پودمانی]]
[[fr:Module (programmation)]]
[[he:מודול (תוכנה)]]
[[ja:モジュール]]
[[ko:모듈성 (프로그래밍)]]
[[pt:Programação modular]]
[[ru:Модульность (программирование)]]
[[tr:Modüler programlama]]
[[zh:軟體模塊]]

Action parameters

VariableValue
Name of the user account (user_name)
'122.179.60.81'
Page ID (page_id)
939133
Page namespace (page_namespace)
0
Page title without namespace (page_title)
'Modular programming'
Full page title (page_prefixedtitle)
'Modular programming'
Action (action)
'edit'
Edit summary/reason (summary)
''
Whether or not the edit is marked as minor (no longer in use) (minor_edit)
false
Old page wikitext, before the edit (old_wikitext)
'{{noref|date=August 2010}} {{Programming paradigms}} '''Modular programming''' is a software design technique that increases the extent to which software is composed of separate, interchangeable components, called '''modules'''. Conceptually, modules represent a [[separation of concerns]], and improve [[maintainability]] by enforcing logical boundaries between components. Modules are typically incorporated into the program through [[interface (computer science)|interfaces]]. A module interface expresses the elements that are provided and required by the module. The elements defined in the interface are detectable by other modules. The [[implementation]] contains the working code that corresponds to the elements declared in the interface. ==Language support== Languages that formally support the module concept include [[IBM/360]] [[Assembler for an assembly language|Assembler]], [[COBOL]], [[IBM RPG|RPG]] and [[PL/1]], [[Ada (programming language)|Ada]], [[D (programming language)|D]], [[F (programming language)|F]], [[Fortran]], [[Haskell (programming language)|Haskell]], [[BlitzMax]], [[OCaml]], [[Pascal (programming language)|Pascal]], [[ML (programming language)|ML]], [[Modula-2]], [[Oberon (programming language)|Oberon]], [[Component Pascal]], [[Zonnon]], [[Erlang (programming language)|Erlang]], [[Perl]], [[Python (programming language)|Python]] and [[Ruby (programming language)|Ruby]]. The [[IBM System i]] also uses Modules in [[IBM_RPG|RPG]], [[COBOL]] and [[AS/400 Control Language|CL]], when programming in the ILE environment. Modular programming can be performed even where the programming language lacks explicit syntactic features to support named modules. Software tools can create modular code units from groups of components. [[Library (computing)|Libraries]] of components built from separately compiled modules can be combined into a whole by using a [[Linker (computing)|linker]]. ==Key Aspects== With Modular Programming, concerns are separated such that no (or few) modules depend upon other modules of the system. To have as few dependencies as possible is the goal. When creating a modular system, instead of creating a monolithic application (where the smallest component is the whole application), several smaller modules are built (and usually compiled) separately that, when composed together, will construct the executable application program. A [[Just-in-time compilation|just in time compiler]] may perform some of this construction "on-the-fly" at [[run time]]. This makes modular designed systems, if built correctly, far more reusable than a traditional monolithic design - since all (or many) of these modules may then be reused (without change) in other projects. This also facilitates the "breaking down" of projects (through "[[divide and conquer]]") into several smaller projects. Theoretically, a modularized software project will be more easily assembled by large teams, since no team members are creating the whole system, or even need to know about the system as a whole. They can focus just on the assigned smaller task (this, it is claimed, counters the key assumption of [[The Mythical Man Month]] - making it actually possible to add more developers to a late software project - without making it later still). ==Implementation== [[Message passing]] has, more recently, gained ground over the earlier, more conventional, "<code>Call</code>" interfaces, becoming the more dominant linkage between separate modules as an attempt to solve the "versioning problem" (sometimes experienced when using interfaces for communication between the modules). ==History== Traditional programming languages have been used to support modular programing - since at least the 1960's. Modular programming is a loosely defined concept with no official definition. It is, in essence, simply a programming technique. Exactly where modularized programming ends, and [[Dynamic-link library|Dynamically Linked Libraries]] or [[Object-oriented programming]] starts in this context is subjective. It might be defined as the natural predecessor of [[OOP]], or an evolutionary step beyond it - depending upon viewpoint. ==See also== * [[Architecture description language]] * [[Cohesion (computer science)|Cohesion]] * [[Constructionist design methodology]], a methodology for creating modular, broad Artificial Intelligence systems * [[Component-based software engineering]] * [[Coupling (computer science)|Coupling]] * [[David Parnas]] * [[Information hiding]] (encapsulation) * [[Library (computing)]] * [[List of System Quality Attributes]] * [[Snippet (programming)]] * [[Structured programming]] ==References== <references/> * [http://legosoftwareprocess.org/ O2 Software Process] {{compu-prog-stub}} [[Category:Programming paradigms]] [[Category:Holism]] [[es:Programación modular]] [[de:Modul (Software)]] [[fa:برنامه‌نویسی پودمانی]] [[fr:Module (programmation)]] [[he:מודול (תוכנה)]] [[ja:モジュール]] [[ko:모듈성 (프로그래밍)]] [[pt:Programação modular]] [[ru:Модульность (программирование)]] [[tr:Modüler programlama]] [[zh:軟體模塊]]'
New page wikitext, after the edit (new_wikitext)
''''Hey............'''''Italic text'''
Whether or not the change was made through a Tor exit node (tor_exit_node)
0
Unix timestamp of change (timestamp)
1286279591