I 10 peggiori errori di programmazione nella storia
Il codice è quasi ovunque. L'avvento dei computer moderni arrivò negli anni '40. Nella sua ricca storia, la programmazione ha consentito una comunicazione migliore e ha portato a progressi in una miriade di settori. Tutto, dai viaggi spaziali alle telecomunicazioni e all'assistenza sanitaria, è stato rivoluzionato e influenzato dal codice.
Inoltre, la programmazione può insegnare lezioni di vita preziose 6 Abitudini di vita che la programmazione potrebbe insegnarti oggi 6 abitudini di vita che la programmazione potrebbe insegnarti oggi Tutto ciò che è importante sapere per vivere una vita di successo, è possibile ottenere da un programma per computer. Non mi credi? Continuare a leggere. Leggi di più . Tuttavia, nel suo passato storico, codifica anche la distruzione. Le istanze di un po 'di codice errato hanno causato disastri su un livello importante. I seguenti sono 10 dei peggiori errori di programmazione nella storia.
1. Bug Y2K
Il bug dell'Anno 2000, noto come Y2K Bug o Millennium Bug, era un problema di codifica previsto per causare un pandemonio al computer. Negli anni '90, la maggior parte dei programmi per computer elencava quattro cifre in una versione abbreviata. Quindi 1990 leggere 90, 1991, scritto come 91, ecc. Accorciando gli anni a quattro cifre a due cifre, i programmatori hanno quindi salvato una memoria preziosa. Ma i computer non erano in grado di riconoscere il 2000 come semplicemente 00. A peggiorare ulteriormente il problema, il 2000 è stato un anno bisestile. Alcune applicazioni software non hanno tenuto conto del giorno in più.
Molti temevano che Y2K potesse far cadere computer ed elettronica in tutto il mondo. Ricordo il mio primo lettore DVD con uno splendore “Y2K conforme” etichetta. Anche se l'anno 2000 è stato piuttosto discontinuo da un punto di vista software, l'aggiornamento di computer e app in ogni settore ha comportato un costo di circa 300 miliardi di dollari. I computer non si sono arrestati. La vita procedette normalmente. Ma non senza un sacco di soldi e lavoro, che secondo i rapporti di Slate potrebbe essere stato uno spreco.
Perché è uno dei peggiori errori di programmazione: Il panico del Y2K è stato estremamente costoso, per un importo di $ 300 miliardi. Inoltre, le risorse sono state reindirizzate per risolvere questo potenziale problema.
2. Insetto Heartbleed
Apparendo nella libreria OpenSSL, il bug Heartbleed è una pericolosa vulnerabilità di sicurezza Heartbleed - Che cosa puoi fare per rimanere al sicuro? Heartbleed: cosa puoi fare per restare al sicuro? Leggi di più . Il protocollo TLS (Transport Layer Security) utilizza la libreria di crittografia OpenSSL. A causa del suo uso diffuso in TLS, Heartbleed si diffonde rapidamente. Questo bug consente praticamente a chiunque su Internet di leggere la memoria su macchine che eseguono iterazioni di OpenSSL. È possibile leggere fino a 64 kb di memoria di sistema. Mentre l'Heartbleed Bug è stato rivelato al pubblico nel 2014, è uscito nel 2012.
La mancata convalida dell'input a causa di un controllo dei limiti mancanti all'interno dell'estensione heartbeat TLS ha causato il bug. Dal momento che si trattava di un bug nell'estensione del battito cardiaco, il nome Heartbleed si è quindi generato. Un articolo del 2014 del Registro riportava che l'1,5% dei siti più popolari con TLS rimaneva vulnerabile al bug di Heartbleed. Tuttavia, le implementazioni TLS a parte OpenSSL non sono state toccate. Pertanto la versione Windows di TLS e i servizi di sicurezza di rete di Mozilla non sono stati influenzati dal bug Heartbleed. Una patch alla fine ha risolto il problema con OpenSSL versione 1.0.1g. Aggiungendo controlli dei limiti per impedire la sovrascrittura del buffer, il bug di Heartbleed è stato corretto con successo.
Perché è uno dei peggiori errori di programmazione: L'insetto Heartbleed ha creato una grave minaccia alla sicurezza. Il tempo che intercorre tra il lancio e il patching dei sistemi interessati a sinistra è vulnerabile da anni. Ogni volta che si presenta un problema di vulnerabilità del computer, questo crea un enorme problema di sicurezza dei dati.
3. Virus di World of Warcraft preso troppo alla lettera
World of Warcraft una volta ha sofferto un virus informatico di un tipo diverso. Nel 2005, una piaga digitale si infiltrò in alcuni server di gioco. Migliaia di personaggi sono caduti preda del Blood Virus. Wow lo sviluppatore Blizzard ha presentato Hakkar, il dio del Sangue. Il considerevole nemico ha infettato personaggi con sangue corrotto. Mentre l'infezione del sangue originariamente pensava di affliggere i giocatori in prossimità del corpo di Hakkar, il trasferimento da giocatore a giocatore avveniva fuori dal regno. Questo metodo non intenzionale di diffusione del virus del sangue generato da animali domestici in gioco. Inoltre, i personaggi non giocanti (NPC) divennero portatori.
Archimonde è diventato il primo server infetto. I personaggi di basso livello sono morti all'istante. Persino i personaggi potenti non sono durati molto più a lungo. Anche se un errore di codifica ha perpetuato il virus tramite NPC e animali domestici, il virus non era pianificato per il rilascio al di fuori del regno di Hakkar. Mentre migliaia di giocatori sono morti, World of Warcraft non presenta la morte perma. Blizzard ha riparato il virus del sangue con il riavvio del server. Ma non prima che i cadaveri dei giocatori inghiottissero il Wow paesaggio.
Perché è uno dei peggiori errori di programmazione: Ok allora World of Warcraft potrebbe non presentare un problema di sicurezza dei dati o uno scenario potenzialmente letale, ma i giocatori prendono sul serio il loro intrattenimento. Blizzard ha impiegato ore a ripristinare i server. È interessante notare come il comportamento del giocatore nel gioco abbia imitato ciò che potrebbe accadere in un'epidemia del mondo reale con un'ondata sfrenata, il panico e il collasso della civiltà. Non ho giocato Wow? Inizia con questa guida completa per principianti Inizia con World of Warcraft: una guida completa per principianti Inizia con World of Warcraft: una guida completa per principianti Ecco cosa devi sapere se non hai mai provato World of Warcraft prima. Leggi di più .
4. Therac-25
Mentre molti errori di programmazione causano vulnerabilità o giocatori morti all'interno del gioco, in realtà il codice errato può uccidere. Il disastro di Therac-25 si è verificato con la macchina di radioterapia Therac-25. Prodotto da Atomic Energy del Canada, il Therac-25 ha causato overdose da radiazioni accidentali uccidendo almeno sei pazienti. Le indagini hanno scoperto che un software scadente e uno sviluppo del sistema insufficiente causavano overdose da radiazioni. In gran parte questi risultati derivavano dalla difficoltà di eseguire test automatici del software.
Le overdose di radiazioni Therac-25 servono come promemoria per creare codice facilmente testato. Le macchine che uccidono gli umani possono sembrare fantascienza, ma l'incidente di Therac-25 dimostra il contrario. Ma questo è stato davvero il risultato di un errore umano nella codifica che ha causato questi problemi. Esperti, tra cui Nancy Leveson, hanno scoperto che i programmatori inesperti creavano un software buggato. Inoltre, un solo programmatore ha creato il software ed era basato sul codice di Therac-6 e Therac-20.
Perché è uno dei peggiori errori di programmazione: Ogni volta che c'è una perdita di vita umana, un errore di programmazione è assolutamente uno dei peggiori esempi di codice errato.
5. Volo dell'antico marinaio 1
La NASA usa un bel po 'di tecnologia. La sonda New Horizons utilizza una CPU PlayStation. VP of Solutions Architecture and Engineering presso NVIDIA Marc Hamilton fa regolarmente un blog sull'uso dell'hardware NVIDIA da parte della NASA. Il razzo Mariner 1 lanciato con una sonda spaziale in programma per esplorare Venere. Tuttavia, leggermente dopo il lancio, il razzo devia dalla rotta di volo prevista. Il Mariner 1 è stato distrutto poco dopo il decollo.
L'errore minore di un programmatore ha causato il bug di Mariner 1. Sebbene i rapporti differiscano, i segni indicano un trattino mancante. Secondo i documenti dell'archivio della NASA, “il comitato di revisione del volo di Mariner 1 post ha stabilito che l'omissione di un trattino nelle istruzioni codificate del computer nel programma di modifica dei dati consentiva la trasmissione di segnali di guida errati al veicolo spaziale.” Autore celebre Arthur C. Clarke (2001: Odissea nello spazio) soprannominato il disastro del Mariner 1 “il trattino più costoso della storia.”
Perché è uno dei peggiori errori di programmazione: L'errore di Mariner 1 avrebbe potuto essere facilmente evitato. Annuncio di servizio pubblico: cari sviluppatori, si prega di testare il software.
6. La rete AT & T va giù
Mi senti ora? No. Il 15 gennaio 1990, oltre il 50% della rete di AT & T si è schiantato. In nove ore, 75 milioni di chiamate non hanno ricevuto risposta. Mentre i rapporti iniziali incolpavano gli hacker, il vero colpevole era molto peggio: un aggiornamento software standard. Ricordati di questo la prossima volta che ti lamenterai degli aggiornamenti di Windows 10 Gli aggiornamenti di Windows saranno meno fastidiosi Gli aggiornamenti di Windows saranno meno fastidiosi Con il nuovo sistema, gli aggiornamenti di Windows 10 dovrebbero essere più piccoli, essere scaricati in modo più efficiente e meno stressati sulle risorse del tuo sistema. Un cambiamento che probabilmente non noterai nemmeno. Leggi di più . Un errore in una sola riga di codice ha portato alla rete di AT & T per diverse ore. Un interruttore si resettava da solo, ma il bug significava che il secondo switch inviava un altro messaggio. In sostanza, un effetto domino è iniziato con la rete che continua a ripetere il suo errore. Alla fine AT & T ha ideato una soluzione riducendo il carico di rete. Gli interruttori quindi si resettano.
Nonostante i pesanti test, una singola affermazione ha paralizzato la rete. Il programma è stato scritto in C. Un'istruzione break all'interno di una clausola if è stata nidificata in una clausola switch. La grande interruzione di AT & T del 1990 sembra un problema semplice. Un sacco di chiamate perse, o come sarebbe il caso oggi un sacco di messaggi persi, Instagram, Twitter e notifiche Snapchat. Tuttavia, la mancanza di comunicazione ha comportato enormi impatti monetari. Aziende come American Airlines hanno subito perdite finanziarie. American Airlines ha ricevuto due terzi di chiamate in meno a causa dell'interruzione. L'interruzione del 1990 continua a rappresentare un eccellente esempio del perché il test sia importante. Inoltre, l'interruzione AT & T serve come promemoria della connessione intrinseca tra tecnologia ed economia.
Perché è uno dei peggiori errori di programmazione: Non solo la rete di AT & T si sgretolò, le diverse ore rimaste in giù crearono un crollo finanziario.
7. Giorno dei morti viventi: St. Mary's Mercy Hospital
Nel 2003 un errore software errato “ucciso” 8.500 persone. Il Centro medico della Misericordia di St. Mary a Grand Rapids, Michigan, ha erroneamente riferito che molti pazienti sono morti con un problema nel loro sistema software di gestione del paziente. Questo disastro di codice cattivo è piuttosto innocuo rispetto alle vittime di Therac-25, dal momento che nessuno è morto in realtà. Tuttavia, leggere della tua scomparsa è sconcertante, in particolare quando sei vivo e vegeto.
Rapporti sulla morte falsa non erano limitati ai pazienti. Questa corrispondenza è stata inviata alle compagnie di assicurazione e agli uffici di previdenza sociale. Poiché la previdenza sociale e i fornitori di assicurazioni garantiscono che i pazienti eleggibili abbiano Medicare, questo ha presentato un bel problema. I dipendenti di St. Mary's Mercy hanno informato i pazienti, le agenzie governative e gli assicuratori dell'errore. In definitiva, l'errore di programmazione non ha ottenuto molta attenzione. Non è chiaro se l'errore di codifica sia mai stato corretto. Tuttavia non sono emerse ulteriori false segnalazioni di morte. L'ospedale di St. Mary's Mercy ha semplicemente cambiato il software di gestione del paziente.
Perché è uno dei peggiori errori di programmazione: Per fortuna nessuno in realtà è morto. Ma il controllo dei danni per assicurare una copertura sanitaria continua è stato un disastro.
8. Prealer Pre-Alpha: Early Release
Il Michigan ha sofferto un problema tecnico nell'elaborazione dei dati tra il 2003 e il 2005. Durante quel periodo un difetto di programmazione del computer ha causato la liberazione anticipata di 23 prigionieri facendo cadere le condanne per i prigionieri dello stato del Michigan. I detenuti fortunati hanno beneficiato di frasi ridotte ovunque da 39 a 161 giorni. Mentre la chiusura accidentale della pena detentiva è problematica, per fortuna si trattava di infrazioni minori, come le accuse di droga e appropriazione indebita.
Il software spesso mira ad automatizzare i processi. Riducendo i compiti manuali, le nostre vite sono teoricamente più facili. Tuttavia, questo caso con i detenuti del Michigan che escono dalle prime carte del carcere dimostra ancora una volta il valore dei test del software. Un piccolo errore di programmazione comporta enormi ramificazioni, specialmente in questo esempio. Immagina solo se i prigionieri rilasciati si dilettassero in crimini più gravi.
Perché è uno dei peggiori errori di programmazione: Questo incidente avrebbe potuto essere molto peggio, ma il rilascio precoce dei prigionieri è spaventoso.
9. Hartford Coliseum Falls
Sebbene il crollo del Hartford Coliseum del 1978 sia costato una perdita di $ 90 milioni, potrebbe essere stato sostanzialmente peggiore. L'Hartford Coliseum è crollato diverse ore dopo che i fan hanno lasciato la sede. Il suo tetto in lamiera d'acciaio non è riuscito a sostenere il peso della neve bagnata. Un edificio è crollato a causa di un semplice errore di programmazione. Il codificatore del software CAD utilizzato per progettare l'Hartford Coliseum non è riuscito a rendere conto di più variabili. Invece, il programmatore del software ipotizzava che i supporti in acciaio del tetto avrebbero dovuto affrontare solo la compressione pura.
Gli ingegneri devono affrontare molte sfide. L'uso del software dovrebbe facilitare il loro lavoro. Tuttavia non riuscire a rendere conto di diverse variabili porta a sfide immense. Mentre puoi semplicemente correggere un errore in Minecraft, Il software CAD influenza direttamente le strutture del mondo reale.
Perché è uno dei peggiori errori di programmazione: Beh, almeno nessuno è morto. Ma la devastazione economica di una perdita stimata di $ 90 milioni è enorme.
10. Ho 99 problemi e un Pentium è uno
Generalmente i processori Intel vantano prestazioni migliori rispetto alle controparti AMD. Tuttavia, AMD offre un eccellente rapporto prezzo-prestazioni AMD's New Plan: Rendi la realtà virtuale più economica per te Nuovo piano di AMD: Rendi la realtà virtuale più economica per te AMD sembra cambiare marcia nel 2016, e se tutto andrà bene, saranno sarà un grande attore nel mercato della realtà virtuale. Leggi di più . Ma nel 1994, i microprocessori Pentium di Intel hanno avuto un grosso problema. Le CPU 486DX e Pentium erano dotate di un'unità a virgola mobile (FPU). Questa FPU era un coprocessore matematico. Le CPU Intel della generazione precedente hanno elaborato la matematica con numeri interi. Includendo un FPU integrato, questo chip Pentium di prossima generazione prometteva calcoli numerici significativamente più veloci.
L'FPU Pentium utilizzava un algoritmo di radix 4 STR. Le informazioni inserite in modo errato hanno causato calcoli leggermente errati. Ma anche una variazione minore può significare problemi enormi come dimostrato nel caso del collasso di Hartford o di Therac-25. Circa cinque voci su un migliaio sono state tralasciate eliminando le capacità di lunga divisione del Pentium. Intel ha affermato ufficialmente che un errore di script ha causato problemi di accesso alla ricerca. In ogni caso, la matematica di Pentium viene attribuita al codice errato.
Perché è uno dei peggiori errori di programmazione: Alcuni dati significativi potrebbero non sembrare molto, ma in caso di precisione di ingegneria o assistenza sanitaria è essenziale.
Cattivo al codice: errori di programmazione accadono
Gli errori di programmazione si sono verificati dall'inizio della codifica. Poiché l'uso del codice in una varietà di campi continua ad espandersi, questa tendenza probabilmente non scomparirà presto.
Ci sono molti esempi di errori di programmazione. Alcuni sono abbastanza innocui come a World of Warcraft bug. Altri provocano la morte sia reale (Therac-25) sia immaginata (St. Mary's). Non lasciare che questi famosi esempi ti dissuadano dalla codifica. Consulta questa guida per scegliere il linguaggio di programmazione Web corretto Come scegliere il linguaggio di programmazione Web corretto da utilizzare Come scegliere il linguaggio di programmazione Web corretto da utilizzare Perché alcune lingue dovrebbero essere scelte su altre in un determinato scenario? Questo articolo fornirà una lista di domande che il programmatore dovrebbe porre per scegliere quale lingua usare. Leggi di più .
Quali esempi storici di codice errato ricordi? Lascia un commento qui sotto con le tue scelte di errori di programmazione!
Immagine di credito: nouskrabs e McIek tramite Shutterstock.com
Scopri di più su: Storia, Programmazione.