Prima di scrivere una riga di codice: cos'è un computer, cos'è un algoritmo, la differenza tradato, informazione e conoscenza, e cos'è un programma.
~90 minuti, lavagna + questa pagina proiettata. Nessuna tastiera in questa lezione: si scrive codice dalla lezione 2. Il tempo non è un vincolo rigido — se non si finisce si continua alla lezione successiva. Se i tempi stringono, il primo taglio è l'esercizio "Ordina i libri" (sez. 3): il concetto di algoritmo regge già con la moka, e i libri tornano in lezione 2.
Come usare le domande ❓ in questa pagina: sono domande vere, non retoriche — dopo averle fatte, stare zitti e aspettare anche 10-15 secondi. Nessuna ha una risposta "da sapere": dirglielo la prima volta. Se risponde bene e in fretta, saltare la spiegazione che segue. Se i tempi stringono le domande si accorciano ma non si tagliano: è il tagliare gli esercizi il primo risparmio previsto.
Tenere un foglio "domande rimandate" visibile per le domande fuori scope (IA, hardware, macchina di Turing formale): sono materiale di lezioni successive.
Ogni passaggio dato per scontato — "prendi il caffè", "il fuoco giusto" — è un'istruzione che manca. È da qui che si parte.
Farla provare a dettare i passi ad alta voce. Serve solo a farle notare quanto diamo per scontati passaggi impliciti ("prendi il caffè" — da dove? quanto?). Questo aggancio si ricollega più avanti alla definizione di algoritmo (sez. 3) e all'esercizio "Riordina la moka".
Qualunque risposta va bene, serve a farla arrivare da sola a "gli serviva fare tanti conti uguali senza sbagliare". Se dice "per andare più veloce", rilanciare: "solo velocità, o anche altro?" → si apre da sé il tema dell'errore umano. La storia (sotto) diventa la risposta alla sua domanda, non un racconto che subisce.
Non serve nessun dettaglio hardware (CPU, RAM ecc.) in questa lezione — fuori scope, si aggiunge solo se emerge curiosità spontanea. Spunto facoltativo: il libro di riferimento definisce "computer" in senso ampio come qualunque information-processing agent — anche una persona che segue istruzioni meccanicamente è un "computer" (vedi Think and Compute, cap. 1, sezione "What is a computer?").
Certi calcoli erano lunghi, ripetitivi e ad alto rischio di errore — tavole astronomiche (es. il passaggio della cometa di Halley), tavole di conversione per il nuovo sistema metrico di Napoleone. Per farli si usavano squadre di persone chiamate letteralmente "computer" (computer umani): eseguivano a mano, passo dopo passo, sempre la stessa procedura. Lavoro noioso, e un umano stanco o distratto sbaglia.

Schede perforate che, cambiando solo la scheda, facevano tessere disegni diversi allo stesso telaio — la stessa macchina, compiti diversi a seconda di cosa le dai in pasto. L'idea che Babbage riprenderà per la sua macchina programmabile.

Charles Babbage nota che affidare calcoli critici a persone stanche è pericoloso — un errore in una tavola numerica stampata (es. per la navigazione) poteva costare vite. Costruisce una macchina meccanica che ripete sempre la stessa sequenza di operazioni, senza stancarsi né distrarsi. Ne completa solo un prototipo parziale, ed è comunque limitata: fa un solo tipo di calcolo, per cambiare compito va riconfigurata fisicamente.

Insoddisfatto, Babbage disegna una macchina generica, programmabile tramite schede perforate come quelle dei telai Jacquard. L'intuizione chiave, alla base di ogni computer moderno: separare le istruzioni (il programma) dalla macchina che le esegue. Non fu mai costruita: troppo complessa per la meccanica dell'epoca.

L'idea di Babbage resta sulla carta fino alla Seconda Guerra Mondiale. Stavolta il problema non è calcolare tavole ma decifrare messaggi: i tedeschi cifravano le comunicazioni con Enigma, che cambiava chiave ogni giorno tra miliardi di combinazioni. Alan Turing e il suo team a Bletchley Park costruiscono la Bombe: una macchina dedicata a trovare la chiave del giorno abbastanza in fretta da essere militarmente utile.

Primo computer elettronico digitale generale e riprogrammabile (con cavi e interruttori, non ancora "software" come lo intendiamo oggi) — la prima realizzazione fisica dell'idea di Babbage, un secolo dopo.
La risposta giusta non è "perché è intelligente" ma "perché ripete la stessa cosa 500 volte senza stancarsi né distrarsi". Se risponde "perché è più bravo", correggere subito: il computer non sa cosa sia una guerra, sa solo confrontare sequenze di lettere. È anche l'aggancio a quello che farà davvero nei corsi.

Turing non si è limitato a decifrare Enigma: ha anche dato la prima definizione matematica rigorosa di "calcolare" — e da lì ha dimostrato cheesistono domande che nessun computer, per quanto potente, potrà mai risolvere (il cosiddetto halting problem). Affidabile e veloce non vuol dire onnipotente: anche il computer ha limiti dimostrati, non solo pratici ma matematici.
Deve arrivare a una fine. La moka ha un numero preciso di passi: non si ripete all'infinito.
Ogni passo dice esattamente cosa fare. "Metti il caffè" da solo non basta: quanto? dove?
Seguendo sempre la stessa procedura, il risultato è lo stesso ogni volta — che la faccia io o tu.
Trascina i passi giusti nella sequenza, nell'ordine corretto. Alcune carte sono scritte in modo ambiguo ("metti il caffè") e vanno scartate a favore della versione precisa.
Ricostruisci la procedura per fare il caffè con la moka, passo dopo passo.
Banca dei passi
Sequenza (trascina qui, nell'ordine giusto)
La risposta interessante è "dipende": è preciso e ripetibile, ma non è detto che finisca (se il bar non c'è si cammina per sempre). Serve a far vedere che le tre proprietà non sono una lista da imparare, sono un test da applicare. Variante se fa fatica:"e 'aggiungi un po' di sale'?" (qui salta la precisione).
Clicca due libri per confrontarli, poi decidi se scambiarli. La pagina conta i confronti.
Confronti fatti: 0
Clicca due libri per confrontarli.
Non correggere il metodo che inventa (qualunque esso sia, sarà un algoritmo di ordinamento vero); chiederle solo "quante volte hai dovuto confrontare due libri?", la domanda da cui nasce l'efficienza a Computational Management of Data.
Se i tempi stringono, questo è il primo esercizio da tagliare (il concetto regge già con la moka; i libri tornano in lezione 2).

La prima programmatrice della storia è una donna, Ada Lovelace, figlia del poeta Lord Byron — non un'informatica di formazione. Nel 1843 scrisse il primo "programma" mai concepito: istruzioni per calcolare i numeri di Bernoulli con l'Analytical Engine di Babbage — una macchina che esisteva solo su carta. Intuì anche che una macchina del genere avrebbe potuto manipolare non solo numeri ma qualsiasi cosa esprimibile con regole formali, persino comporre musica, disse lei, un secolo prima che esistessero i computer veri.
La programmazione non nasce come atto tecnico: nasce comeatto di immaginazione applicata alla logica.
Perché Ada Lovelace apre questa sezione: sgonfia da sola l'idea "la programmazione è roba da matematici/ingegneri" — nessun bisogno di dirlo esplicitamente, basta lasciarla emergere se lei stessa fa il collegamento.
Scrivere alla lavagna solo 28 e fare la domanda. Lei chiederà (o dovrà chiedere) 28 di cosa: è esattamente il punto, un dato da solo non significa niente, serve il contesto. Rilancio: "28 sulla bilancia e 28 sul termometro sono lo stesso dato?"
Numeri/parole isolate, senza contesto. Da soli non dicono nulla.
I dati messi in relazione/contesto iniziano a dire qualcosa.
Richiede di collegare l'informazione ad altre informazioni/esperienza pregressa.
Trascina ogni cartellino al livello giusto: Dato, Informazione o Conoscenza.
Cartellini da collocare
Conoscenza
Informazione
Dato
Questa distinzione è il cuore di Information Modeling (come rappresentare dati/informazioni) e Knowledge Representation (come rappresentare la conoscenza in modo che una macchina possa "ragionarci sopra", es. i grafi della conoscenza).
Si arriva a "cosa vuol dire piove" e a "come fa a saperlo". Poi mostrare che in italiano la frase è chiara; un computer ha bisogno di sapere esattamente cosa vuol dire "piove" (una misura di pioggia > 0? un booleano true/false?).
"I shot an elephant in my pyjamas."
Versione senza ambiguità: Indossando il mio pigiama, ho sparato a un elefante.
Un linguaggio naturale tollera letture multiple; un linguaggio di programmazione è costruito apposta per non permetterlo.
La prossima volta si inizia a scrivere le prime istruzioni vere in Python — riusando esattamente gli esempi della moka e dei libri come primi algoritmi da "tradurre" in codice. Vale la pena dirlo a voce qui, a chiusura sezione, per far vedere che tutto quello fatto oggi torna utile subito.
Esegue istruzioni precise, senza saltare nulla e senza correggere ambiguità da solo.
Sequenza finita di passi precisi che risolve un problema, sempre nello stesso modo.
Il contesto è quello che trasforma un numero isolato in qualcosa di utilizzabile.
Un algoritmo scritto in un linguaggio che il computer esegue senza ambiguità.
Se risponde con sicurezza a queste 4 domande, l'obiettivo della lezione è raggiunto.