Il primo programma per computer della storia

0001:00011000000000100000000000000000
0002:01011000000001100000000000000000
0003:01011000000000100000000000000000
0004:11011000000001100000000000000000
0005:11101000000000100000000000000000
0006:11011000000000010000000000000000
0007:00000000000000110000000000000000
0008:00101000000001000000000000000000
0009:01011000000000010000000000000000
0010:10011000000001100000000000000000
0011:10011000000000100000000000000000
0012:00000000000000110000000000000000
0013:00000000000001110000000000000000
0014:01011000000000100000000000000000
0015:10101000000000010000000000000000
0016:11011000000001100000000000000000
0017:11011000000000100000000000000000
0018:01011000000001100000000000000000
0019:01101000000000000000000000000000
0020:10111111111111111111111111111111
0021:10000000000000000000000000000000
0022:00100000000000000000000000000000
0023:00000000000000000011111111111111
0024:11111111111111111100000000000000

Il primo programma della storia ad essere memorizzato su un computer fu scritto da Tom Kilburn e venne eseguito per la prima volta il 21 giugno 1948 sul Manchester Mark 1, il primo calcolatore elettronico digitale programmabile. Si trattava di un programma per individuare il più alto fattore proprio di 2^18; questo doveva essere fatto provando in una singola routine ogni intero da (2^18-1) in giù; le divisioni necessarie furono realizzate non tramite la "divisione lunga", ma attraverso ripetute sottrazioni del divisore (poiché il Mark 1 aveva soltanto un sottrattore implementato in hardware). Furono provati circa 130.000 numeri, e questo richiese 3,5 milioni di operazioni. La risposta corretta fu ottenuta dopo 52 minuti di esecuzione. Il programma fu codificato in sole 17 istruzioni.

Il programma originale è andato perso. La versione revisionata riportata qui sotto proviene dagli appunti di G.C. Tootills, un contemporaneo di Kilburn. Questa utilizza due ulteriori istruzioni per copiare il fattore in prova poiché la versione originale lo sovrascriveva con la risposta finale, con conseguente necessità di reinserirlo prima di eseguire nuovamente il programma. In questa versione C è usato per rappresentare il computer (cioè l'accumulatore), C1 per rappresentare il registro di controllo, le altre lettere a,b,r sono rispettivamente il numero da fattorizzare, un fattore di prova, e un resto.

 

Immagine : Kilburn highest factor routine (amended)


~ o ~


E' disponibile un Simulatore del Mark 1 con allegato il codice binario del primo programma della storia.