mercoledì 22 ottobre 2014

Tecniche di programmazione: Procedurale, Strutturata e ad Oggetti

Un linguaggio di programmazione è un metodo di codifica che prevede una serie di istruzioni interpretabili ed eseguibili dai computer. I processori (CPU) dei computer sono in grado di elaborare solo istruzioni in codice macchina, cioè codice binario composto da 0 e 1 che come si può facilmente intuire è molto difficile da interpretare per un uomo. 
Sono nati pertanto i diversi linguaggi di programmazione con i quali si può progettare e scrivere in modo più semplice un codice sorgente che, una volta compilato, fornisce il programma binario effettivamente eseguibile dall'elaboratore.



Esistono molte tecniche e metodologie di programmazione che si possono raggruppare in tre macro paradigmi: 
  • Procedurale (Procedural Programming)
  • Strutturata (Structured Programming),
  • Orientata agli Oggetti (OOP Object Oriented Programming).
Di seguito una breve overview.

Programmazione Procedurale

Questo stile di programmazione può ricondotto all'utilizzo di processori un po' vecchiotti con un approccio sequenziale all'esecuzione dei comandi.
Con i linguaggi che prevedono una codifica procedurale, le istruzioni vengono eseguite in serie una dopo l'altra, per la lettura e la modifica di una memoria condivisa (memoria RAM, disco rigido) e nella gestione delle periferiche (tastiera, monitor, stampante, ecc.). 
Nei programmi procedurali le istruzioni sono organizzate in blocchi funzionali, procedure progettate per uno scopo specifico, anche denominate subroutine o function a seconda del linguaggio e del ruolo all'interno del programma stessoche possono essere raggiunte in cascata oppure utilizzando il comando go to da più punti del codice. 

Il codice viene scritto ed eseguito dall'elaboratore passo dopo passo dall'inizio alla fine (top-down) quindi è molto facile da seguire soprattutto nei programmi più semplici. 

Esempi di linguaggi con approccio procedurale sono: CobolBasic e Fortran.


Programmazione Strutturata

La programmazione strutturata, evoluzione di quella procedurale, pur continuando ad avere un approccio top-down enfatizza maggiormente la separazione dei dati trattati rispetto alle operazioni del programma stesso. L'esecuzione delle istruzioni non è più fatta obbligatoriamente in ordine sequenziale ma è gestita con un flusso logico e condizionata con loop, sequenze e decisioni (if, switch) basate sul valore dei dati. 

La progettazione e la codifica strutturata di un software non si limita ad un approccio sequenziale dall'alto verso il basso ma si concentra sulla scomposizione del problema in sotto-parti (funzioni, moduli e librerie esterne) con la conseguente semplificazione del processo principale;
Il codice viene strutturato in singoli moduli che implementano specifiche funzionalità. 
Vengono utilizzate le strutture di controllo per estrarre in modo deterministico, in base ai dati trattati in quel contesto, l'ordine esatto in cui i set di istruzioni devono essere eseguiti (un codice strutturato non prevede l'utilizzo dell'istruzione "goto" ). 

Esempi di linguaggi con approccio strutturato sono: C, Pascal, PL/I e Ada.


Programmazione ad Oggetti

I linguaggi Object Oriented attualmente sono i più largamente usati ed i più potenti in relazione alle architetture hardware e software nei quali vengono utilizzati.
I programmi sono scritti come una collezione di oggetti auto-consistenti che comunicano tra di loro.
Si basano sulle classi, cioè istanze di oggetti software nei quali rivestono maggiore importanza i dati piuttosto che il flusso logico. 
Una classe può essere definita come un contenitore che abbina i dati con le operazioni/azioni che possono essere eseguite su di essi.  Le caratteristiche di ciascun oggetto (classe) vengono chiamate proprietà o attributi, mentre le azioni sono dette metodi
Diversamente dai linguaggi precedentemente descritti, gli OOP hanno un approccio diprogettazione bottom-up, per prima cosa non va definita la struttura del programma generale ma vanno progettati gli oggetti, le modalità con le quali gestiscono le proprie informazioni e le interfacce con cui interagiscono con gli altri oggetti.


Esempi di linguaggi Object Oriented sono: C++ e Java.



Articoli Correlati