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.
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 ? 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.
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.
Ciascuna istruzione della pseudocodifica InizioLeggi 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.
|