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



venerdì 10 ottobre 2014

Quanto influenza Gartner ?

Gartner, la famosa multinazionale leader nella consulenza strategica, ricerca ed analisi nel mondo dell'Information Technology, è generalmente considerata una sorta di detentrice della verità assoluta, una Cassandra che predice le tendenze future in base alle informazioni del presente e del passato.

Partendo da statistiche, notizie, eventi, verifiche e ricerche, Gartner fornisce con grande competenza una vision di alto livello sulle evoluzioni del mondo IT,
Gartner analizza le tendenze, osserva il mercato e, lavorando anche a stretto contatto con le aziende, riesce a fotografare un mondo che evolve velocissimo.

Non esiste meeting che si rispetti in cui non venga citato qualche report di Gartner.
Spesso nelle convention azendali l'ospite d'onore è proprio un rappresentante della suddetta società in grado di sperticarsi in discorsi sui massimi sistemi e conquistare una platea il più delle volte non preparata e che quindi alla fine capisce ben poco.

Sulle direttive di Gartner le aziende più cool fondano parte delle strategie o quantomeno spesso giustificano le proprie scelte facendo riferimento alle informazioni che seguono al "Gartner dice che.....".

Non volendo mettere assolutamente in discussione la qualità del lavoro Gartneriano, è lecito porsi alcune domande:

  • Gartner analizza il mondo IT, ma quanto essa stessa lo influenza ?
  • Qual'è la percentuale delle previsioni che poi si verificano anche nei numeri ?
  • Quale quota parte di eventi annunciati poi si verifica proprio perché è stato prima suggerito da Gartner?
  • Quale incidenza hanno le analisi di Garner sul fatto che poi si verifichino ? In altre parole, se Gartner indica una tendenza, data la sua autorevolezza, è probabile che venga seguita e quindi è anche più semplice da prevedere.

Sarebbe interessante avere da Gartner anche report di questo tipo.
Chissà se fanno anche queste analisi.
Sicuramente si.

Image courtesy of jscreationzs at FreeDigitalPhotos.net