Vés al contingut

Programació modular

De la Viquipèdia, l'enciclopèdia lliure
Aquesta és una versió anterior d'aquesta pàgina, de data 23:24, 11 abr 2015 amb l'última edició de Papapep (discussió | contribucions). Pot tenir inexactituds o contingut no apropiat no present en la versió actual.

La programació modular és una tècnica de disseny del programari que emfasitza separar la funcionalitat d'un programa a mòduls independents, intercanviables, tal que cadascun d'ells conté tot el necessari per a executar només un aspecte de la funcionalitat desitjada[1].

Una interfície de mòdul expressa els elements que proporciona i requereix el mòdul. Els elements definits en la interfície els poden detectar els altres mòduls. La implementació conté el codi funcional que correspon als elements declarats en la interfície. La programació modular té una relació estreta amb la programació estructurada i la programació orientada a objectes. Totes tres metodologies , que es varen iniciar al voltant de la dècada dels 60 del segle XX, comparteixen l'objectiu de facilitar la construcció de grans programes i sistemes mitjançant la seva descomposició en partes petites. Mentre històricament l'ús d'aquests termes ha estat inconsistent, avui en dia la "programació modular" fa referència a la descomposició d'alt nivell del codi d'un programa en peces, programació estructurada a l'ús d'estructures de control de flux a baix nivell i programació orientada a objectes a l'ús d'objectes de dades, una mena d'estructures de dades.

Implementació segons el llenguatge

Alguns llenguatges de programació que implementen formalment el concepte de mòdul, són: Ada, Algol, BlitzMax, COBOL, D, Dart, Erlang, F, Fortran, Va, Haskell, Assemblador de l'IBM/360, IBM i Llengua de Control (CL), RPG d'IBM, Java[2], MATLAB, ML, Modula, Modula-2, Modula-3, Morpho, NEWP, JavaScript, Oberon, Oberon-2, Objective-C, OCaml, diversos derivats de Pascal (Component Pascal, Objecte Pascal, Turbo Pascal, UCSD Pascal), Perl, PL/I, PureBasic, Python, Ruby i WebDNA.[3]

Exemples destacats de llenguatges que no ofereixen suport al concepte de mòdul són C, C++[3] , i Pascal (en la seva forma original). L'any 2014 es va proposar afegir el concepte a C++, els mòduls han estat proposats per C++; es va afegir a Objective-C a l'iOS 7 (2013); Pascal ha quedat desbancat per Modula i Oberon, el quals inclouen mòduls des del seu inici, i diversos derivats que també inclouen mòduls.[4]

Es pot fer programació modular fins i tot quan el llenguatge de programació no té les característiques sintàctiques explícites per a mòduls. Per exemple, l'IBM System i també utilitza mòduls quan es programa en l'Integrated Language Environment (ILE).

Aspectes clau

Amb la programació modular With modular programming, concerns are separated such that modules perform logically discrete functions, interacting through well-defined interfaces. Often modules form a directed acyclic graph (DAG); in this case a cyclic dependency between modules is seen as indicating that these should be a single module. In this case modules can be arranged as a hierarchy, where the lowest-level modules are independent, depending on no other modules, and higher-level modules depend on lower-level ones. A particular program or library is a top-level module of its own hierarchy, but can in turn be seen as a lower-level module of a higher-level program, library, or system.

When creating a modular system, instead of creating a monolithic application (where the smallest component is the whole), several smaller modules are written separately so that, when composed together, they construct the executable application program. Typically these are also compiled separately, via separate compilation, and then linked by a linker. A just-in-time compiler may perform some of this construction "on-the-fly" at run time.

Referències

  1. Haridi, Seif. «7. Modules and Interfaces». Mozart Documentation. [Consulta: 11 abril 2015]. «Modules, also known as packages, are collection of procedures and other values that are constructed together to provide certain related functionality. A module typically has a number of private procedures that are not visible outside the module and a number of interface procedures that provide the external services of the module.»
  2. 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.
  3. N4047: A Module System for C++, by Gabriel Dos Reis, Mark Hall, Gor Nishanov