Differenze tra le versioni di "Filosofia dell'informatica/La nascita dell'informatica"

 
Per Turing le operazioni aritmetiche andavano affidate alla programmazione, al software più che all'hardware. Turing criticava la tradizione americana di risolvere le difficoltà servendosi di una gran quantità di apparecchiature in luogo del pensiero. Nel 1947 Turing parlò dei calcolatori elettronici digitali, e in particolare dell’ACE, davanti alla London Mathematical Society. Turing si chiedeva in che misura fosse possibile, in linea di principio, per una macchina calcolatrice simulare attività umane e questo lo portò a considerare la possibilità di una macchina programmata per imparare e alla quale fosse permesso di commettere errori: “se ci si aspetta che la macchina sia infallibile, allora essa non può essere anche intelligente”.
 
La proposta di Turing era strutturata in due parti: una “Descriptive Account” e un “Technical Proposal”. In questo documento venivano descritti sia gli aspetti ingegneristici, sia gli aspetti riguardanti la programmazione. L’idea di fondo era quella di ridurre al minimo la complessità parte tecnologica e lasciare che i problemi fossero risolti dalla programmazione. Per Turing la memoria era l’elemento fondamentale, e le dimensioni previste andavano da 50 a 500 linee di ritardo a mercurio. Ogni linea doveva avere la capacità di 1024 cifre che dovevano circolare a 1024 millisecondi. Per garantire l’efficienza della macchina la memoria non doveva essere soltanto grande, ma anche facilmente accessibile; proprio per questo il modello a nastro della “Macchina Universale” non poteva essere adottato senza modifiche. Turing quindi inventò un metodo di programmazione che ottimizzava l’accesso ai dati contenuti nelle linee di ritardo. Se prima le istruzioni venivano codificate in fila dentro una stessa linea di ritardo , quindi bisognava aspettare un millisecondo per eseguire l’istruzione successiva. Se invece si memorizzavano le istruzione tenendo conto dei ritmi di accesso alla diverse parti del dispositivo, era possibile attribuire alle istruzioni un indirizzo relativo, in modo da farle emergere dalla linea di ritardo esattamente al momento in cui dovevano essere eseguite. Questo metodo di programmazione chiamato “Optimun Coding” consisteva nel dichiarare per ogni istruzione l’indirizzo della successiva e migliorava le prestazioni del calcolatore, a patto di conoscere esattamente la struttura e il funzionamento della memoria, e di eseguire elaborati calcoli per anticipare correttamente la successione dei cicli delle linee di ritardo.
L’esperienza della “Macchina Universale” spingeva Turing a considerare prioritaria la definizione del sistema di programmazione della macchina che avrebbe guidato e controllato le sue operazioni.
Il metodo di programmazione si basava sula trasformazione delle operazioni complesse in una lunga successione di passi semplici. Le uniche azioni eseguibili direttamente dall’hardware erano:
I. Il trasferimento da una zona della memoria ad un’altra.
II. Le operazioni aritmetiche su due registri di memoria temporanea.
III. Alcune operazioni logiche sempre su due registri di memoria temporanea.
IV. Un’operazione di trasferimento della memoria alle schede perforate (Dispositivo usato per l’output e per l’input) e viceversa.
V. Il salto incondizionato verso una istruzione successiva specificata evitando di eseguire le istruzioni in stretta sequenza con le precedenti.
 
 
Il National Physics Laboratory, dal quale Turing si allontanò, riuscì a costruire una versione ridotta dell’ACE, il cosiddetto ACE pilota, che funzionò egregiamente per anni. Mentre von Neumann chiamava il lavoro di programmazione “codifica” e lo considerava una mansione da impiegato che non richiedeva grande intelligenza, Turing considerava programmare un calcolatore un lavoro molto affascinante, anche perché qualunque processo che sia davvero meccanico può essere passato alla macchina. È probabile che von Neumann abbia ripreso l’idea di un calcolatore universale utilizzabile nella pratica dall’opera di Turing.
2

contributi