Come è stato scritto il primo programma senza un linguaggio di programmazione?

Quando pensiamo alla programmazione immaginiamo tastiere, editor di codice e schermi luminosi. Ma i primi programmatori non avevano nulla di tutto questo.
Scrivere un programma, all’inizio, significava manipolare direttamente la macchina.

Prima dei computer: Ada Lovelace e la logica pura

Ancora prima dell’esistenza dei computer elettronici, a metà del XIX secolo, Ada Lovelace scrisse quello che oggi è considerato il primo algoritmo della storia.
Era pensato per la Macchina Analitica di Charles Babbage, una macchina meccanica che però non fu mai completata.

Come fece Ada a “programmare” una macchina che non esisteva?
Usò pura logica matematica. Il suo programma era una sequenza teorica di istruzioni per calcolare i numeri di Bernoulli, descritta su carta come una tabella di operazioni, variabili e passaggi successivi.

Se la macchina fosse stata costruita, le istruzioni sarebbero state inserite tramite schede perforate, una tecnologia già utilizzata nei telai tessili Jacquard. Il concetto di programma, quindi, nasce prima dell’hardware stesso.

I primi computer elettronici: programmare con i cavi

Con l’arrivo dei primi computer elettronici, come l’ENIAC (1945), la situazione era tutt’altro che semplice.
Non esisteva un sistema operativo e, nella sua versione originale, l’ENIAC non aveva un programma memorizzato in memoria.

Programmare significava letteralmente ricablare la macchina.

Le programmatrici (molto spesso donne, chiamate allora computers) dovevano:

  • impostare manualmente interruttori,
  • collegare cavi tra pannelli,
  • riconfigurare i circuiti logici per ogni nuovo problema.

Il programma non era un file: era il layout fisico dei cavi.
Per esempio, per sommare due numeri bisognava collegare fisicamente l’unità di accumulo a quella di input. Cambiare algoritmo voleva dire smontare e rimontare tutto.

Il codice macchina e le levette

Con l’introduzione dell’architettura di von Neumann, i computer iniziarono finalmente a memorizzare sia i dati sia il programma. Nacque così il codice macchina, l’unico linguaggio che il processore capisce direttamente: una sequenza di 0 e 1.

Ma scriverlo non era affatto semplice.

I programmatori inserivano le istruzioni:

  1. impostando le levette per l’indirizzo di memoria,
  2. impostando le levette per l’istruzione (per esempio una sequenza di bit),
  3. premendo un tasto come “Deposit” per scrivere quel singolo byte,
  4. ripetendo l’operazione migliaia di volte.

Un errore significava ricominciare da capo.

Il bootstrapping: insegnare al computer a programmarsi

Il passaggio decisivo fu il bootstrapping.

I programmatori scrivevano a mano un piccolissimo programma in codice macchina, estremamente faticoso da realizzare. Questo mini-programma aveva un solo scopo: insegnare al computer a leggere un programma più complesso, ad esempio da un nastro perforato.

Quel programma più complesso era un assembler, che permetteva finalmente di usare abbreviazioni testuali come ADD o MOV invece di sequenze di bit.

Da lì in poi, ogni generazione di strumenti servì a costruire la successiva:

  • codice macchina → assembler
  • assembler → linguaggi di alto livello
  • linguaggi → compilatori sempre più sofisticati

È una scala costruita un gradino alla volta, partendo dal livello più basso possibile.

Perché diciamo “bug”

Il termine bug divenne famoso proprio in quegli anni.
Nel 1947, nel computer elettromeccanico Harvard Mark II, una falena reale rimase incastrata tra i relè, causando un malfunzionamento. L’insetto venne incollato nel registro di manutenzione con la nota: “First actual case of bug being found”.

Da allora, il termine è rimasto per indicare qualsiasi errore nel funzionamento di un programma.

Ti interessa acquistare un dominio a prezzi ultraconvenienti? clicca qui

Se hai trovato utili le informazioni su questo blog,
Fai una donazione!
Clicca sul bottone qui sotto o almeno clicca sul banner pubblicitario 🙂



Commenta