DIAGRAMMA DEI CAMPI

Il computer è un dispositivo che non può essere completamente costruito in fabbrica perché le sue elaborazioni sono continuamente mutevoli. L'aggiornamento del software è un fenomeno enorme ed appariscente nelle aziende e nelle istituzioni, cioè nella gran parte del mondo informatico. Dimostra in modo solare che il computer deve essere preparato sul momento, davanti al preciso problema da risolvere, e poi ripetutamente rimodellato. L'ingegnere elettronico prepara una macchina incompleta ed il programmatore termina la costruzione dell'hardware assegnando un preciso piano di lavoro (= il programma). In questo modo finisce la realizzazione che in fabbrica è stata cominciata ma non terminata. L'hardware ed il software danno luogo a due ingegnerie completamente diverse nei metodi e nei contenuti, nonostante ciò sono unite perché la seconda completa la prima e soltanto in questa ottica sono perfettamente giustificate.

Ci domandiamo: quali sono esattamente le parti incomplete lasciate dall'ingegnere hardware ?

Sono due. L'esperto software deve determinare le operazioni da una parte ed i campi con le periferiche dall'altra. Per tale ragione ci sono due sezioni della memoria RAM che, seppure fisicamente contigue, hanno funzioni completamente diverse. La prima infatti contiene le istruzioni e la seconda le dichiarative.

 

p31.jpg (35320 byte)

 

Poiché i contenuti del programma sono due, come immediato corollario consegue che il progetto del programma va steso mediante due schemi: l'uno dedicato alle istruzioni, l'altro alle dichiarative. Purtroppo però questa completezza è rara. Ci si concentra sulla preparazione dell'algoritmo e si dà per scontata la definizione dei campi e delle periferiche. Il futuro professionista impara a progettare il programma tramite la pseudocodifica (o il diagramma a blocchi) e basta. Sebbene le parti da codificare siano due lui ne disegna una soltanto, e l'altra la lascia alla memoria senza nessuna traccia preparatoria.

Facciamo un esempio. Ogni abitazione civile si regge grazie agli elementi strutturali che i solai e le colonne. Come giudicheremmo il geometra che progettasse i solai, ne passasse i disegni al capomastro mentre le colonne glie le spiegasse a voce ?  Come potrebbero lavorare i muratori sulla base della pianta mentre gli elementi verticali li tengono a memoria ?
Questo comportamento risulterebbe palesemente assurdo eppure è comune in Informatica. Ecco perché la programmazione finisce per essere più difficile del dovuto. Ecco perché molti ragazzi, trovando astrusa la preparazione teorica, imparano meglio da soli. Ecco perché i risultati non sono buoni sul piano culturale e professionale quando si entra nel mondo del lavoro.

La soluzione lapalissiana è una sola. Il programma si compone di due parti ed ambedue vanno progettate sulla carta prima della codifica: le istruzioni con la pseudocodifica e le dichiarative con il diagramma dei campi. Com'e' fatto questo ultimo ?

Riporta i flussi (principali) dei dati dalla periferia nei campi di memoria e poi da questi verso l'uscita. In sostanza il diagramma segue pedissequamente lo schema architetturale della macchina di von Neumann.

 

p32.jpg (10021 byte)

Come esempio supponiamo di battere da tastiera il numero di pezzi venduti ed il prezzo unitario, si chiede che il programma calcoli il prezzo totale e lo scriva sul video.

p33.jpg (19067 byte)

 

Ciascuna istruzione della pseudocodifica

Inizio
  Leggi NumeroPezzi, PrezzoUnitario
  PrezzoTotale = NumeroPezzi * PrezzoUnitario
  Scrivi PrezzoTotale
Fine

si raccorda con il disegno dei campi e risulta perfettamente intellegibile. Se c'è un errore viene immediatamente corretto. I due schemi sono complementari: l'uno illustra l'altro e viceversa. E l'esperienza ne conferma l'utilità pratica. 

Il programmatore ricorre oggi al diagramma dei campi per chiarirsi le idee, spesso lo usa per sviluppare un passaggio intricato. Disegna in modo intuitivo. E' disordinato perché a scuola non glie l'hanno insegnato. Improvvisa perché lui sa progettare solo una parte ed il resto tende a ternelo a mente. E' ovvio che con questa professionalità approssimativa la programmazione diventa un esercizio "astratto", tutto basato su una pretesa "logica". Quando non si disegnano tutte le parti della costruzione, si va per forza a memoria, invece avendo sotto gli occhi tutti gli elementi non ci sono problemi se non quelli reali dovuti al lavoro.

Il progetto completo del programma comprensivo di pseudocodifica e diagramma dei campi permette di risolvere tutti i passaggi difficili sulla carta. Dimostra quali sono i risultati prima della codifica del programma e della sua esecuzione. Permette di apportare modifiche immediate perché è tutto scritto e non c'è nulla di campato per aria.

***

Concludo con un commento.
Quando a lezione metto in luce una lacuna di base, qualche allievo magari si schernisce ed obbietta che la cosa in fondo non è tanto grave. Gli rispondo che avrebbe perfettamente ragione, sarebbe completamente nel giusto se l'incertezza fosse sola, ma in vero ne vengono una dietro l'altra. Si comincia col vedere il computer come una macchina semplificata, ovvero come Turing, e si vuol diventare dei "logici". Si impara questo mestiere come fosse un esercizio matematico e ci si convince che è immobile nel tempo. Ci si abitua a progettare mezzo programma invece che per intero. Si cerca di ovviare alla bene e meglio questo difetto e si porta avanti una professione inefficiente almeno in certi ambienti. Nei fatti si genera una catena dove ogni errore rinforza il successivo, ogni lacuna allarga quella accanto ed alla fine vengono fuori i risultati lamentati nelle aziende in tutto il mondo.


  Indietro





=