Programmazione modulare
# Programmazione modulare

In informatica la programmazione modulare è un paradigma di programmazione che consiste nella realizzazione di programmi suddivisi in moduli, ognuno dei quali svolge precise funzioni.

L'obiettivo di questo paradigma di programmazione è semplificare lo sviluppo, il test e la manutenzione di programmi di grosse dimensioni, che vedono coinvolti più sviluppatori tramite il concetto della modularità.

## Storia

Il concetto di programmazione modulare si è sviluppato negli anni settanta nell'ambito dell'ingegneria del software, a partire dalla più classica programmazione strutturata verso la più recente programmazione orientata agli oggetti.

## Caratteristiche

I punti cardine della programmazione modulare sono:

* suddivisione del programma in singoli moduli,
* indipendenza dei moduli tra loro,
* interazione minima di ciascun modulo con il mondo esterno,
* facile testabilità dei moduli come entità isolate,
* dichiarazione esplicita e semplificazione delle interfacce mediante le quali i moduli comunicano tra loro.

I principali vantaggi della programmazione modulare sono:

* riutilizzabilità dei moduli,
* sviluppo separato (minima interazione tra sviluppatori).

## Modulo

Un modulo è generalmente un file o porzione di codice sorgente che contiene istruzioni scritte per essere riutilizzate più volte nello stesso programma o in più programmi diversi: la modularizzazione di un programma permette al programmatore di avere una visione completa del programma stesso.

In Visual Basic un modulo può contenere funzioni, subroutine, dichiarazioni API, variabili globali ed enumerazioni. È indicato dall'estensione .bas, in comune con i file BASIC. In linguaggio C, e in molti altri linguaggi, il modulo è costituito da un file .c, possibilmente accompagnato da un header file (.h), che contiene solo le definizioni di funzioni e tipi utilizzabili da altri moduli.

Nella programmazione orientata agli oggetti, l'unità di modularizzazione è la classe. Alcuni linguaggi supportano anche una struttura gerarchica dei moduli tramite il costrutto dei package. In altri linguaggi un modulo può anche essere chiamato in un altro modo. Un modulo può essere distribuito anche sotto forma di codice eseguibile, come libreria software o dynamic-link library.

## Impiego

Linguaggi di programmazione espressamente orientati alla programmazione modulare sono Ada e Modula-2; ciò non toglie che questo paradigma di programmazione sia applicabile anche utilizzando linguaggi più semplici come il C, o addirittura l'Assembly.

