I paradigmi di programmazione

Negli anni sono stati codificati diversi modi per passare dal problema all’algoritmo

Programmazione imperativa

Un programma è costituito da una sequenza di comandi che l’esecutore eseguirà ordinatamente

  1. Comando A
  2. Comando B
  3. Comando C

Il controllo dell’esecuzione si realizza tramite delle istruzioni di salto

  • condizionato (JGT, JLT, …)
  • incondizionato (JUMP…)
  • GOTO, …

I linguaggi di basso livello e i primi linguaggi di programmazione avevano questo approccio (oggi è da evitare).

Programmazione strutturata

Il controllo dell’esecuzione non si realizza con le istruzioni di salto ma con

  • selezioni (per i salti in avanti)
    • singola
    • doppia
    • multipla
  • ripetizioni (per i salti indietro)
    • indefinita
    • predefinita

Paradigma procedurale

Divido il problema in sotto-problemi e li risolvo singolarmente (con dei sotto-programmi) fino a risolvere tutto il problema.

PARA3


PARA1

Da dove si parte?

Metodologia TOP-DOWN

Affronto qualsiasi problema partendo dall’aspetto più alla superficie.
Continuo strato dopo strato fino ad arrivare alla radice.

Ad ogni passo risolvo l’aspetto più immediato/semplice fino ad arrivare a risolvere completamente il problema.

Metodologia BOTTOM-UP

Affronto subito la risoluzione del nucleo del problema.
Risalgo strato dopo strato fino alla superficie esterna.

PARA2

Inizio risolvendo l’aspetto più caratteristico (significativo / difficile) del problema e poi aggiungo strato dopo strato il codice necessario.


Riepilogo dei paradigmi di programmazione

  1. Imperativa: Variabili, comandi, istruzioni per il controllo del flusso
  2. Strutturata: Sequenza, cicli, alternative
  3. Procedurale: Sottoprogrammi, procedure, funzioni
  4. Modulare: Moduli, interfacce
  5. Orientata agli oggetti: Classi, incapsulamento, ereditarietà, polimorfismo
  6. Funzionale: Valutazione di funzioni
  7. Logica: Clausole, unificazione
  8. Visuale: Blocchi, frecce, …
  9. Concorrente: Processi
  10. Parallela: Concorrenza
  11. Genetica: Apprendimento automatico
  12. Orientata agli eventi: Eventi, gestori degli eventi
  13. Di script: Shell, interpretato