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

Contenuto cancellato Contenuto aggiunto
Corretto: "riguardo alla"
Gian BOT (discussione | contributi)
m Bot: Correggo errori comuni (tramite La lista degli errori comuni V 1.0)
Riga 103:
In questo saggio, Turing descrive quello che è passato alla storia come il [[w:Test di Turing|test di Turing]], ossia un criterio per determinare se una macchina sia in grado di pensare. Il test consisteva in questo: se si riesce a programmare un calcolatore in modo che sappia conversare, su qualsiasi argomento gli venga proposto, tanto bene che nemmeno un interlocutore mediamente intelligente saprebbe dire se sta parlando con una persona o una macchina, allora si doveva ammettere che quel calcolatore mostrava una certa intelligenza. Tuttavia siamo ancora lontani dal saper produrre un programma di questo tipo, e molti sono convinti peraltro che un simile comportamento non sarebbe di per sé intelligente. Turing e von Neumann furono mossi a paragonare il calcolatore al cervello umano per un’ottima ragione: sapendo che gli esseri umani sono capaci di pensare secondo schemi molto diversi, ipotizzarono che la nostra capacità di fare tante cose diverse sia dovuta alla presenza, nel nostro cervello, di un calcolatore universale.
 
In questo articolo del 1950, Turing lanciò la domanda se una macchina possa pensare: il cosiddetto test di Turing, prende spunto dal “gioco dell’imitazione” , cui partecipano tre persone: un uomo A, una donna B e un esaminatore C, che è isolato dagli altri due. C può porre ad A e B domande arbitrarie e dalle risposte deve stabilire chi è la donna. A e B si sforzano entrambi di essere identificati nella donna, quindi B cerca di aiutare C e A cerca di ingannarlo, fornendo le risposte che a suo parere darebbe la donna. C può avere a disposizione soltanto le risposte e non altri indizi (che renderebbero facile l’identificazione) : quindi può comunicare con A e B solo mediante tastiera.
Questa versione del gioco consente di affrontare il problema se le macchine possano pensare evitando di definire i termini “macchina” e “pensare”, il cui significato è difficile da precisare. L’utilità di questo esperimento concettuale sta non tanto nella risposta che esso consente di fornire al problema (non è scontato che la fornisca), quanto nella possibilità di analizzare concetti come mente, pensiero, intelligenza.
Il gioco dell’imitazione presuppone che le risposte di una donna siano distinguibili da quelle di un uomo; ma anche che l’uomo sia in grado di simularle. Non bisogna dimenticare tuttavia che il gioco è a tre: l’identificazione di A e B è demandata a un giudice. Se il giudice è in gamba può prendere la decisione corretta nonostante gli sforzi di A per sviarlo.
Riga 111:
Quella di Turing, in un certo senso, è una provocazione filosofica, che ci costringe a fronteggiare e analizzare le nostre convinzioni in materia di pensiero. Se una macchina può sostenere una conversazione come farebbe un essere umano, possiamo dire che pensa.
 
Per Turing, se una macchina riesce nel gioco imitativo, dobbiamo concludere che in un qualche senso , quella macchina pensa.
 
Oltre metà dell'articolo originale di Turing è dedicato a rispondere alle principali obiezioni a questa posizione:
Riga 169:
Nel ''Draft'' il nome di Turing non viene mai citato, ma la sua influenza è chiara: più di una volta von Neumann afferma che l’EDVAC dovrà essere di carattere generale, e lascia intendere che il cervello umano deve parte delle sue notevolissime capacità al fatto di saper funzionare come un calcolatore universale. Von Neumann si rendeva conto che i princìpi base della progettazione dei calcolatori elettronici si fondavano sulla logica. I calcolatori creati dopo la seconda guerra mondiale erano profondamente diversi dai precedenti calcolatori automatici poiché erano pensati come apparati universali capaci di eseguire qualsiasi processo simbolico.
 
Il carattere provvisorio del First Draft era testimoniato dai riferimenti a sezioni inesistenti. Secondo il documento l’EDVAC era una macchina che aveva come obiettivo l’esecuzione di calcoli secondo procedure espresse attraverso istruzioni univoche e non ambigue. L’innovazione principale rispetto all’ENIAC consisteva nella memorizzazione del programma che veniva poi eseguito senza un ulteriore intervento umano. Gli “Organi” della macchina dovevano essere: Centro Aritmetico (CA), Centro Logico o Centro Centrale (CC), Memoria (M), Unità di Input (I), Unità di Output (O). Inoltre era previsto un organo che trasferiva i dati esterni in R, che doveva essere la parte della memoria che ospitava i dati esterni e preparava i dati output. Von Neumann intendeva distinguere chiaramente istruzioni e dati, tanto che la prima cifra di ogni “parola” doveva indicare se si trattava di un dato, indicato con “0”, o di un’istruzione indicata con “1”. Nel caso delle istruzioni, una volta riconosciute come tali non era possibile modificarne il contenuto vero e proprio, ma solo la parte dedicata all’indirizzo delle variabili. Normalmente le istruzioni venivano eseguite in successione , ma era possibile usando un particolare indirizzo Z, fare si che l’unità centrale cercasse l’istruzione da eseguire nel registro di memoria Z e la eseguisse. In ciò consisteva il “salto incondizionato”. Inoltre era previsto anche un macchinoso meccanismo per il “salto condizionato” ottenuto attraverso il controllo sul segno di uno dei numeri contenuti nei registri ausiliari dell’unità aritmetica. Sulla base del valore di questa condizione veniva scelto il numero dell’istruzione successiva. Da ciò si possono intravedere le prime sostanziali differenze con l’ENIAC, infatti in quest’ultimo le operazioni aritmetiche venivano eseguite negli accumulatori usando una serie di componenti hardware della macchina che lavoravano separatamente. Mentre nell’EDVAC tutte le operazioni erano centralizzate nell’unità aritmetica che le svolgeva con l’aiuto dell’unità di controllo. Il tentativo di astrazione di von Neumann aveva i suoi limiti. Per esempio non c’era traccia dei dettagli tecnici delle linee di ritardo a mercurio, nonostante esse venissero indicate come il dispositivo tecnologico prescelto per la memoria. Alla fine l’EDVAC non fu realizzato come programmato nel First Draft , infatti era diversa nella struttura logica, nelle scelte tecnologiche, nelle dimensioni delle varie parti e nell’architettura. Comunque il modello di calcolatore descritto da von Neumann è stato considerato il capostipite dei calcolatori moderni.
 
Tuttavia una macchina reale poteva solo avvicinarsi a quella universale e ideale di Turing: era importante che essa avesse una memoria molto grande, corrispondente al nastro potenzialmente infinito di Turing, nella quale potessero coesistere istruzioni e dati. D’altro canto, i programmi da eseguire venivano memorizzati, per la prima volta, dentro la macchina. Ma l’aspetto veramente rivoluzionario di questi calcolatori era il loro carattere generale e universale, mentre il programma memorizzato era semplicemente un mezzo.
Riga 205:
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.
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: