Qualche giorno fa, complice un post su QuickLoox relativo alla possibilità di usare l’iPad per programmare, mi è stato chiesto tramite WhatsApp più o meno cosa fosse un computer.
È un po’ sorprendente rendersi conto che usiamo i computer ogni giorno senza sapere bene cosa siano veramente.
Se dovessi definire in poche parole un computer, direi che è una macchina che prende dei dati di ingresso, li elabora automaticamente in base ad una sequenza predefinita ma liberamente modificabile di istruzioni e produce dei risultati in uscita. Cambiando il programma cambia anche il risultato dell’elaborazione: in pochi istanti un computer si può trasformare in una macchina per scrivere dei testi, che esegue calcoli matematici o che trasforma dei file in musica o filmati.
Ma perché un tostapane non è un computer? In fondo elabora i dati in ingresso (le fette di pane e di formaggio) e produce un risultato in uscita (il toast). Il problema è che fa solo quello; non si può girare una manopola ed ottenere a piacere un panino, una pasta al forno o una tagliata al sangue.
In base alla definizione precedente, un iPad o un iPhone sono dei computer. Ma lo sono senza dubbio anche alcune calcolatrici, come le mitiche concorrenti TI-59 o l’HP-41, o le calcolatrici programmabili in BASIC prodotte da Casio e Sharp, il sogno quasi proibito di tanti studenti di ingegneria di venti e più anni fa.
Visto dal punto di vista dell’ingegnere, un computer non è altro che un enorme sistema di interruttori che si aprono o si chiudono in base alle istruzioni del programma che viene fatto girare. Ha del prodigioso che oggetti così semplici come gli interruttori, quando agiscono in modo coordinato, si trasformino in una macchina così potente e flessibile.
Infine, da un punto di vista più teorico, un computer è una realizzazione pratica della macchina di Turing, una macchina astratta che, manipolando in base a regole ben definite dei simboli contenuti su un nastro di lunghezza infinita, è in grado di risolvere qualunque tipo di problema calcolabile, cioè di problema risolvibile tramite un algoritmo.1
Computer è un termine che ormai sa tanto di antico, che deriva dall’idea originale di creare una macchina automatica che effettuasse più rapidamente i calcoli matematici. Una idea ormai obsoleta: oggi il computer si usa soprattutto per elaborare dei dati generici piuttosto che per effettuare dei calcoli (anche se naturalmente alla base di tutto ci sono comunque delle operazioni matematiche).
Chi volesse tornare indietro nel tempo può leggere Modern computing, di R. D. Richtmyer and N. C. Metropolis, due fisici che, dopo aver contribuito allo sviluppo della bomba atomica, si dedicarono a studiare l’applicazione dei computer al calcolo numerico. Il secondo, in particolare è famoso per lo sviluppo del Metodo Montecarlo, che è alla base di tante applicazioni moderne di calcolo numerico.
L’articolo, recentemente reso liberamente disponibile da Physics Today, è del 1949 ma sembra ancora modernissimo, pieno com’è di idee fondamentali che verrano sviluppate negli anni seguenti, e spesso parecchi anni dopo.
Scorrendolo si trova fra l’altro la descrizione dell’architettura di Von Neumann, cioè l’idea di programmare un computer tramite un insieme di istruzioni invece che spostando fili ed interruttori, un elenco dei tipi di istruzioni fondamentali, lo sviluppo di librerie di codice riusabile in programmi differenti, l’arte della programmazione, la necessità di creare degli strumenti in grado di semplificare lo sviluppo dei programmi, la prospettiva di realizzare macchine intelligenti capaci di eseguire elaborazioni analitiche e non solo numeriche.
Una lettura affascinante.