(Ri)costruzioni: il simulatore della prima CEPIl simulatore replica la prima Calcolatrice Elettronica Pisana, o Macchina Ridotta, Il modello usato per realizzare il simulatore è stato definito al dettaglio Per approfondimenti sulla ricostruzione si rimanda a
(Cignoni et al., 2015), |
|
Il simulatore è un one-man-project di Giovanni A. Cignoni iniziato nel 2010.
Un grazie speciale, in ordine di apparizione, va a Luciano Azzarelli e Elio Fabri, protagonisti dei fatti. Luciano è stato di grande aiuto nel recupero della documentazione dagli archivi. Poi, con Elio abbiamo passato tante belle ore insieme a interpretare gli schemi e colmare le lacune nei documenti.
Lo sviluppo del simulatore è stato parzialmente supportato nell’ambito di alcuni
progetti del Dipartimento di Informatica cofinanziati dalla Fondazione Pisa.
Per avere un’idea dell’impegno richiesto è stata calcolata
una misura del codice
con SLOCCount
(modello di base
CoCoMo
e costi di mercato di default USA 2004).
Il risultato di oltre 230mila dollari US (del 2004) è solo una stima,
ma da un’idea dell’ordine di grandezza dell’impegno; inoltre considera solo il codice
C++: non include l’impegno per il disegno delle bitmap necessarie per l’interfaccia grafica, né quello, assai più consistente, per la ricerca storica e tecnologica.
In dipendenza della distribuzione/versione di Linux, può richiedere particolari versioni delle librerie C/C++, WxWidgets, OpenAL Utility Toolkit: farlo funzionare può essere un incubo - o una sfida appassionante, dipende dai punti di vista. Per comodità c’è anche una distribuzione come macchina virtale.
Per mostrare il funzionamento e la programmazione della prima CEP, proponiamo un esempio semplice, ma curioso: un gioco che la trasforma in una macchina mangiasoldi del tempo.
Cioè una slot-machine basata sui canonici 3 rulli con 8 simboli
(campana, limone, arancia, ciliege, dollaro, ferro di cavallo, lingotto e sette)
ovviamente codificati in binario.
I rulli sono rappresentati dai 3 bit centrali dei 3 gruppi di 5 in cui è
organizzato l’indicatore della memoria sul pannello di controllo. Dopo aver caricato il programma e
avviato il simulatore, si dà il giro ai rulli con il pulsante di avviamento
e si bloccano con la chiave di arresto condizionato più a destra.
Buona fortuna!
Il programma si basa su un generatore di numeri pseudocasuali congruenziale:
un algoritmo che ai tempi della prima CEP ancora non esisteva. In altre parole
la macchina esegue un programma che appartiene al suo futuro: un paradosso temporale
per riflettere sulla tesi di Church-Turing.
Inoltre, l’algoritmo richiede una moltiplicazione che però non è fra le istruzioni di macchina della prima CEP - con la divisione e altri sottoprogrammi utili erano parte delle librerie software della macchina. Con un po’ di aritmetica si può essere più efficienti invece di usare il sottoprogramma. Infine, l’esempio usa i breakpoint
hardware (una caratteristica sfiziosa della prima CEP) per ottenere il massimo
dell’interattività possibile su una macchina di quel tipo.