Filosofia dell'informatica/La nascita dell'informatica: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Riga 155:
Dopo aver scritto un articolo seminale nel 1936, intitolato ''On Computable Numbers, with an Application to the Entscheidungsproblem''<ref>{{Cita pubblicazione|titolo=On Computable Numbers, with an Application to the Entscheidungsproblem|autore=Alan M. Turing|wkautore=Alan Turing|rivista=Proceedings of the London Mathematical Society, ser. 2|volume=42|data=12 novembre 1936|pp=230-265|lingua=en|url=http://draperg.cis.byuh.edu/archive/winter2014/cs320/Turing_Paper_1936.pdf|formato=pdf|accesso=6 maggio 2016}}</ref>, Turing scrisse un altro lavoro nel 1945, il rapporto sull’[[w:Automatic Computing Engine|Automatic Computing Engine]] ('''ACE''') presso il National Physics Laboratory (NPL) che presenta una descrizione completa di un calcolatore. L’ACE di Turing era una macchina molto diversa dall’EDVAC di von Neumann: mentre quest’ultimo metteva al primo posto il calcolo numerico, Turing pensava ad una macchina da adibire anche a molte altre mansioni, quindi la immaginava più minimalista e più vicina alle macchine astratte.
 
Per Turing le operazioni aritmetiche andavano affidate alla programmazione, al software più che all'hardware. Turing criticavaera laconvinto tradizioneche americanal’era didei risolverecalcolatori leavrebbe difficoltàpotuto servendosiinfluenzare dila unalogica grane quantitàla difilosofia apparecchiaturedella inmatematica luogodal delmomento pensiero.che, Nelil 1947linguaggio Turingper parlòcomunicare deicon calcolatorila elettronicimacchina digitali,doveva eessere inpreciso. particolareEgli dell’ACE,riteneva davantiche allala Londonlogica Mathematicalsimbolica Society.avrebbe Turingpotuto siricoprire chiedevaquesto inruolo: che misura fosse possibileinfatti, innel linearuolo di principio,simulare perl’intelligenza unaumana macchinaattraverso calcolatricei simularecalcolatori, attivitàla umanelogica eavrebbe questotrovato lonuova portòlinfa, aoccupandosi considerarenon lasolo possibilitàdal punto di unavista macchinateorico programmatadella perquestione, impararema anche e allasoprattutto qualepratico fosseoccupandosi permessodella stesura di commettereun errori:codice “sesimbolico ciche sifosse aspettaquanto chepiù lavicino macchinapossibile siaal infallibile,linguaggio alloramatematico essae nonche puòstesse esserealla anchebase intelligente”dell'ACE.
 
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”. Questo perchè, secondo Turing, una caratteristica fondamentale dell'intelligenza umana, era proprio la capacità di commettere errori, e tramite essi, apprendere a risolvere i problemi in maniera sempre differente. Affinchè si potesse realmente considerare un calcolatore intelligente, si doveva dunque investire sulla sua capacità di adattamento, e dunque, bisognava fornirgli la facoltà di commettere errori.
 
Durante la [[w:Seconda guerra mondiale|Seconda guerra mondiale]] anche in Gran Bretagna si diffuse l’esigenza di calcoli su lunga scala. Di questo progetto, si occupò l’NPL che sviluppò una divisione apposita (Mathematics Division) per centralizzare tutte le risorse da impiegare per lo sviluppo di nuovi strumenti di calcolo. John Womersley ne fu il primo responsabile e si occupò, in primo luogo, dell’arruolamento del team di collaboratori che lo avrebbe assistito nel progetto di costruzione di un calcolatore elettronico; pensò immediatamente a Turing.
 
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.
Line 165 ⟶ 169:
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.
 
Fin dall’inizio, il team di sviluppo dell’ACE incontrò serie difficoltà organizzative: nonostante le grandi capacità tecniche dei singoli componenti del gruppo, mancava una figura di coordinamento che lo gestisse in maniera adeguata. Probabilmente, però, la difficoltà maggiore da dover fronteggiare, fu proprio la scarsa competenza in ambito elettronico che caratterizzava la maggior parte dei membri dell'equipe (Turing escluso). Dunque si optò, almeno inizialmente, per richiedere il supporto di istituzioni esterne che potessero collaborare alla realizzazione del calcolatore; vennero dunque contattati il Post Office Research Station (PORS) e il Telecommunications Research Establishment(TRE). I primi incontri organizzativi avvennero proprio con il PORS e, in quella sede, si stabilì anche la cifra da stanziare perchè il progetto potesse partire (circa cinquemila sterline). Tuttavia, al PORS il progetto ACE non era considerato prioritario e venne concessa solo un decimo della cifra che doveva essere stanziata e la collaborazione si interrusse poco dopo. Anche con il TRE le trattative, purtroppo, non andarono meglio, e ben presto, anche con questa organizzazione, le trattative si interruppero.
 
 
Il National Physics Laboratory, dal quale Turing si allontanò, una volta incluso nel team Harry Huskey, noto esperto di informatica, 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.
In definitiva, tutti gli odierni calcolatori sono “macchine di von Neumann”, ossia varianti dell’architettura di base che von Neumann, proseguendo il lavoro di Alan Turing, elaborò negli anni Quaranta. Nel suo rapporto sull’ACE, Turing aveva proposto una macchina relativamente semplice nella quale moltissime cose erano affidate al software, ma in compenso il programmatore aveva un forte controllo delle operazioni di base: era una macchina che aveva tutte le potenzialità per funzionare, ma Turing non ebbe il piacere di vederla realizzata.