Storia di un baco: quale, e quando si è manifestato il primo Bug
Il bug è un termine inglese che significa letteralmente (piccolo) insetto. In informatica, come è risaputo, indica la presenza di un errore di programmazione in un software, che ne compromette in parte (errore di lieve entità) o in toto (errore grave) il corretto funzionamento.
Non esistono software esenti da bug, per questo motivo le società che li sviluppano rilasciano ciclicamente aggiornamenti per correggerli e migliorarne le prestazioni. In rari casi il termine bug può anche riferirsi a malfunzionamenti o difetti dell’hardware (indimenticabile il caso del primo microprocessore Pentium incapace di calcolare correttamente i valori decimali).
Il primo bug della storia
Nonostante il termine bug sia apparso nello Standard Electrical Dictionary del 1892, l’origine della parola, applicata all’informatica, è riconducibile a un simpatico aneddoto accorso nel 1974. Era il 9 Settembre e la giovane ufficiale della Marina statunitense Grace Hopper era al lavoro con alcuni colleghi sul Mark II (uno dei primi computer elettromagnetici).
A quei tempi i computer erano contenuti in enormi armadi e funzionavano grazie a componenti elettroniche di dimensioni piuttosto importanti. Fu proprio durante lo sviluppo del Computing Laboratory di Harvard che uno dei colleghi della Hopper cominciò a segnalare un comportamento anomalo della macchina, che restituiva errori inspiegabili.
Il team decise quindi di smontare pezzo per pezzo il calcolatore per identificare l’origine del problema. Con grande stupore dei presenti, si scoprì che gli errori nei calcoli erano stati causati da una piccola falena incastratasi fra due relay.
Nel diario di lavoro ufficiale del 9 Settembre 1947 (attualmente conservato allo Smithsonian National Museum of American History), si può chiaramente leggere: “Primo caso reale di ritrovamento di un bug” con a fianco la piccola falena incollata. Questo è il momento storico in cui il termine bug ha assunto il suo significato moderno.
Per completezza di informazione, però, va detto che i bug (pur non essendo definiti con tale termine) erano già conosciuti in un’epoca antecedente ai fatti narrati. Nel 1844 Ada Lovelace faceva notare come fosse del tutto impossibile creare un programma privo di errori, mentre nel 1878 Thomas Alva Edison spiegava in una lettera a un amico alcuni errori della Macchina Analitica, riferendosi a essi come piccoli bug.
Tipologie di bug
Programmare migliaia di linee di codice non è certo una passeggiata e produrre degli errori nel corso della stesura del codice sorgente è più che normale. Esistono moltissime tipologie di bug che variano a seconda della natura dell’errore:
- l’errore di sintassi è fra i più comuni e può essere causato da un’errata digitazione di una parola chiave (errore di ortografia) o da un uso scorretto dei simboli chiave per il linguaggio di programmazione utilizzato. È tendenzialmente di facile risoluzione;
- l’errore di logica viene commesso in fase di progettazione dell’algoritmo a causa di un’errata interpretazione dei processi logici per risolvere un determinato problema. La risoluzione richiede, spesso, la modifica di un’intera porzione di codice;
- l’errore di runtime si verifica quando il programma viene eseguito e, nonostante il codice e la logica siano corrette, viene comunque restituito un errore. Il problema dipende da un tentativo di scrittura dello stesso in aree della memoria non consentite. La risoluzione è complessa e richiede un’analisi più approfondita.
Nonostante esistano metodologie di programmazione e linee guida atte a ridurre la possibilità di incappare in questi sbagli, debellare del tutto il problema spetta al debugging. Questo procedimento è un insieme di passaggi, il cui scopo è quello di riprodurre il bug, così da identificarne l’origine e procedere alla sua correzione.
