# Programació modular

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.
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, 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.
Exemples destacats de llenguatges que no ofereixen suport al concepte de mòdul són C, C++, 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, els quals inclouen mòduls des del seu inici, i diversos derivats que també inclouen mòduls. 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).

## Referències

* ↑ 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.»
* ↑ 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.
* ↑ N4047: A Module System for C++, by Gabriel Dos Reis, Mark Hall, Gor Nishanov