De 10 slechtste programmeerfouten in de geschiedenis

De 10 slechtste programmeerfouten in de geschiedenis / Programming

Code is bijna overal. De komst van moderne computers arriveerde in de jaren 1940. In zijn rijke geschiedenis maakte programmeren een betere communicatie mogelijk en leidde het tot verbeteringen in een groot aantal industrieën. Alles, van ruimtevaart tot telecommunicatie en gezondheidszorg heeft een revolutie teweeggebracht en wordt beïnvloed door code.

Bovendien kan programmeren waardevolle levenslessen geven 6 Levensgewoonten die je vandaag kunt leren programmeren 6 Levensstijlen die je vandaag kunt programmeren Alles wat je moet weten over een succesvol leven, is te krijgen via een computerprogramma. Geloof me niet? Lees verder. Lees verder . Echter, in het legendarische verleden, codering voor vernietigde vernietiging ook. Gevallen van een klein beetje slechte code veroorzaakten rampspoed op een belangrijk niveau. De volgende zijn 10 van de slechtste programmeerfouten in de geschiedenis.

1. Y2K-bug

De bug van het jaar 2000, ook bekend als Y2K Bug of Millennium Bug, was een codeerprobleem waarvan werd voorspeld dat het een computerpandonium zou veroorzaken. In de jaren '90 noteerden de meeste computerprogramma's viercijferige jaren in een verkorte versie. Dus 1990 las 90, 1991 geschreven als 91, enz. Door viercijferige jaren tot twee cijfers in te korten, hebben codeerprogramma's dus waardevolle herinneringen opgeslagen. Maar computers konden 2000 niet herkennen als gewoon 00. Verdere verergering van het probleem, 2000 was een schrikkeljaar. Bepaalde softwaretoepassingen hebben geen rekening gehouden met de extra dag.

Velen vreesden dat Y2K computers en elektronica over de hele wereld zou kunnen vernietigen. Ik herinner me mijn eerste dvd-speler met een glanzende “Voldoet aan Y2K” sticker. Terwijl het jaar 2000 vrij onrustig van een software-kant ging, kostte het bijwerken van computers en apps in elke bedrijfstak ongeveer $ 300 miljard. Computers zijn niet gecrasht. Het leven verliep zoals normaal. Maar niet zonder veel geld en werk, wat volgens Slate-rapporten misschien een verspilling was.

Waarom het een van de ergste programmeerfouten is: De paniek van de Y2K was extreem duur, voor een bedrag van $ 300 miljard. Bovendien werden middelen omgeleid om dit potentiële probleem op te lossen.

2. Heartbleed Bug

Beeldcredits: OpenClipart-vectoren via Pixabay

Verschijnen in de OpenSSL-bibliotheek, de Heartbleed-bug is een gevaarlijk beveiligingslek Heartbleed - Wat kunt u doen om veilig te blijven? Heartbleed - Wat kunt u doen om veilig te blijven? Lees verder . Het Transport Layer Security (TLS) -protocol maakt gebruik van de OpenSSL-cryptografiebibliotheek. Vanwege het wijdverspreide gebruik in TLS verspreidde Heartbleed zich snel. Met deze bug kan vrijwel iedereen op internet geheugen lezen op machines met getroffen iteraties van OpenSSL. Maximaal 64 kB systeemgeheugen kan worden gelezen. Terwijl de Heartbleed-bug in 2014 aan het publiek werd onthuld, rolde deze in 2012 uit.

Onjuiste invoervalidatie vanwege een ontbrekende begrenzingscontrole binnen de TLS heartbeat-extensie veroorzaakte de bug. Omdat het een bug was in de heartbeat-extensie, ontstond de naam Heartbleed. Een artikel uit 2014 in The Register meldde dat 1,5% van de meest populaire sites met TLS-functionaliteit kwetsbaar bleven voor de Heartbleed-bug. TLS-implementaties naast OpenSSL waren echter onaangetast. Daarom werden de Windows-versie van TLS en Mozilla's Network Security Services niet beïnvloed door de Heartbleed-bug. Uiteindelijk heeft een patch het probleem opgelost met OpenSSL versie 1.0.1g. Door grenscontroles toe te voegen om bufferoverlezing te voorkomen, is de Heartbleed-bug met succes gepatcht.

Waarom het een van de ergste programmeerfouten is: De Heartbleed-bug veroorzaakte een groot beveiligingsrisico. De tijd tussen lanceren en patchen verliet de getroffen systemen jarenlang kwetsbaar. Telkens wanneer zich een probleem met de computerproblematiek voordoet, ontstaat er een groot probleem rond gegevensbeveiliging.

3. World of Warcraft-virus te letterlijk genomen

Beeldcredits: WoW Wiki

World of Warcraft ooit geleden aan een computervirus van een andere soort. In 2005 infiltreerde een digitale pest een paar spelservers. Duizenden karakters vielen ten prooi aan het bloedvirus. Wauw ontwikkelaar Blizzard introduceerde Hakkar, de god van het bloed. De aanzienlijke vijandige geïnfecteerde personages met corrupt bloed. Terwijl de bloedinfectie oorspronkelijk bedoeld was om spelers in de nabijheid van het lichaam van Hakkar te kwellen, vond overdracht van speler naar speler plaats buiten het rijk. Dit onbedoelde middel om het bloedvirus te verspreiden dat voortkomt uit in-game huisdieren. Bovendien werden niet-speler karakters (NPC's) dragers.

Archimonde werd de eerste geïnfecteerde server. Lage personages stierven ogenblikkelijk. Zelfs krachtige personages duurden niet veel langer. Hoewel een coderingsglitch het virus via NPC's en huisdieren bestendigde, was het virus niet gepland voor vrijgave buiten het koninkrijk van Hakkar. Terwijl duizenden spelers stierven, World of Warcraft heeft geen perma-death. Blizzard repareerde het bloedvirus door de server opnieuw te starten. Maar niet voordat spelers lijken bezaaid met de Wauw landschap.

Waarom het een van de ergste programmeerfouten is: Oke dus World of Warcraft misschien geen kwestie van gegevensbeveiliging of een levensbedreigend scenario - maar gamers nemen hun entertainment serieus. Blizzard bracht uren door met het resetten van servers. Interessant is dat in-game spelersgedrag nagebootst wat er zou kunnen gebeuren in een echte epidemie met ongebreidelde uitbraak, paniek en een ineenstorting van de beschaving. Heb niet gespeeld Wauw? Aan de slag met deze complete beginnershandleiding Aan de slag met World Of Warcraft: een complete beginnershandleiding Aan de slag met World Of Warcraft: een complete beginnershandleiding Dit is wat je moet weten als je nog nooit World of Warcraft hebt geprobeerd. Lees verder .

4. Therac-25

Terwijl veel programmeerfouten kwetsbaarheden of dode spelers in de game veroorzaken, is slechte code eigenlijk kan doden. De Therac-25 ramp vond plaats met de Therac-25 radiotherapie-machine. Geproduceerd door Atomic Energy uit Canada veroorzaakte de Therac-25 onbedoelde stralingsoverdoses waarbij ten minste zes patiënten werden gedood. Onderzoek heeft uitgewezen dat slechte software en onvoldoende ontwikkeling van het systeem stralingsoverdoses veroorzaakten. Grotendeels kwamen deze voort uit moeilijkheden bij het uitvoeren van geautomatiseerde softwaretests.

De overdosis Therac-25-straling dient als herinnering om code te maken die eenvoudig kan worden getest. Machines die mensen doden, klinken misschien als sciencefiction, maar het incident met Therac-25 bewijst het tegendeel. Maar dit was echt het gevolg van menselijke fouten bij het coderen die deze problemen veroorzaakten. Experts, waaronder Nancy Leveson, ontdekten dat onervaren programmeurs buggy-software ontwikkelden. Bovendien heeft slechts één programmeur de software gemaakt en deze was gebaseerd op code van de Therac-6 en Therac-20.

Waarom het een van de ergste programmeerfouten is: Wanneer er verlies van mensenlevens is, is een programmeerfout absoluut een van de slechtste voorbeelden van slechte code.

5. Vlucht van de oude zeeman 1

NASA gebruikt nogal wat technologie. De New Horizons Probe maakt gebruik van een PlayStation-CPU. VP Solutions Solutions and Engineering bij NVIDIA Marc Hamilton blogt regelmatig over NASA's gebruik van NVIDIA-hardware. De Mariner 1-raket werd gelanceerd met een ruimtesonde om Venus te verkennen. Echter, iets na de lancering week de raket af van zijn beoogde vliegbaan. Mariner 1 werd kort na het opstijgen vernietigd.

De fout van een programmeur veroorzaakte de fout Mariner 1. Hoewel de rapporten verschillen, wijzen de tekens op een ontbrekend koppelteken. Volgens documenten van het NASA-archief, “de Mariner 1 Post Flight Review Board stelde vast dat het weglaten van een afbreekstreepje in gecodeerde computerinstructies in het gegevensbewerkingsprogramma de verzending van onjuiste geleidingssignalen naar het ruimtevaartuig mogelijk maakte.” Gerenommeerde auteur Arthur C. Clarke (2001: A Space Odyssey) noemde de Mariner 1 ramp “het duurste koppelteken in de geschiedenis.”

Waarom het een van de ergste programmeerfouten is: De blunder van de Mariner 1 had gemakkelijk kunnen worden vermeden. Public service aankondiging: beste ontwikkelaars, test alstublieft uw software.

6. AT & T-netwerk verdwijnt

Afbeelding Krediet: Unsplash via Pixabay

Kan je me nu horen? Nee. Op 15 januari 1990 crashte meer dan 50 procent van het AT & T-netwerk. In negen uur bleven 75 miljoen oproepen onbeantwoord. Hoewel initiële rapporten de schuld van hackers waren, was de werkelijke boosdoener veel erger: een standaard software-update. Onthoud dit de volgende keer dat u klaagt over Windows 10-updates Windows Updates zijn ingesteld om minder vervelende Windows-updates te krijgen zijn ingesteld op minder hinderlijk te worden Onder het nieuwe systeem moeten Windows 10-updates kleiner zijn, efficiënter worden gedownload en minder belast worden op uw systeembronnen. Een verandering die je waarschijnlijk niet eens zult merken. Lees verder . Een fout in slechts één regel code bracht het AT & T-netwerk enkele uren onder druk. Een schakelaar reset zichzelf, maar de bug betekende dat de tweede schakelaar een ander bericht stuurde. In wezen begon een domino-effect met het netwerk dat zijn fout herhaalde. Uiteindelijk bedacht AT & T een oplossing door het verminderen van de netwerkbelasting. De schakelaars stellen zichzelf vervolgens opnieuw in.

Ondanks zware tests heeft één enkele verklaring het netwerk aangetast. Het programma is geschreven in C. Een break-instructie in een if-clausule bleef genest in een switch-clausule. De grote AT & T-uitval van 1990 lijkt een eenvoudig probleem. Veel gemiste oproepen, of zoals vandaag het geval zou zijn, een heleboel gemiste sms-berichten, Instagram-, Twitter- en Snapchat-meldingen. Maar het gebrek aan communicatie had enorme monetaire gevolgen. Bedrijven zoals American Airlines leden financiële verliezen. American Airlines ontving twee derde minder oproepen vanwege de storing. De uitval van 1990 blijft bestaan ​​als een uitstekend voorbeeld van waarom testen belangrijk is. Bovendien dient de uitval van AT & T als een herinnering aan de inherente connectie tussen technologie en de economie.

Waarom het een van de ergste programmeerfouten is: Niet alleen viel het netwerk van AT & T uiteen, de verschillende uren dat het bleef liggen zorgden voor een financiële troep.

7. Dag van de Levende Doden: St. Mary's Mercy Hospital

Image Credit: Vitalworks via Pixabay

In 2003 faalde een softwarefout fout “gedood” 8.500 mensen. St. Mary's Mercy Medical Center in Grand Rapids, Michigan heeft ten onrechte gemeld dat veel patiënten dood waren met een storing in hun software voor patiëntbeheersoftware. Deze slechte coderamp is nogal ongevaarlijk in vergelijking met de Therac-25-dodelijke slachtoffers, omdat niemand daadwerkelijk stierf. Toch is het lezen van je eigen ondergang verontrustend - vooral als je in leven bent en gezond.

Vals overlijdensrapporten waren niet beperkt tot patiënten. Deze correspondentie ging uit naar verzekeringsmaatschappijen en bureaus voor sociale zekerheid. Omdat sociale zekerheid en verzekeraars ervoor zorgen dat in aanmerking komende patiënten Medicare hebben, leverde dit nogal een probleem op. Medewerkers van St. Mary's Mercy hebben patiënten, overheidsinstanties en verzekeraars op de hoogte gebracht van de fout. Uiteindelijk kreeg de programmeerfout niet veel aandacht. Het is onduidelijk of de coderingsfout ooit is gecorrigeerd. Er zijn echter geen verdere valse doodsrapporten naar voren gekomen. Het St. Mary's Mercy-ziekenhuis schakelde eenvoudigweg over van patiëntbeheersoftware.

Waarom het een van de ergste programmeerfouten is: Gelukkig stierf niemand daadwerkelijk. Maar de schadebeheersing om te zorgen voor een voortdurende dekking van de gezondheidszorg was een puinhoop.

8. Prisoner Pre-Alpha: Early Release

Beeldcredits: Alexas_Fotos op Pixabay

Michigan leed tussen 2003 en 2005 met een gegevensverwerkingsfout. Gedurende die tijd veroorzaakte een fout in de computerprogrammering een vroegtijdige vrijlating voor 23 gevangenen door zinnen voor staatsgevangenen in Michigan te laten vallen. Gelukkige gedetineerden profiteerden van zinnen die ergens tussen 39 en 161 dagen werden verlaagd. Hoewel een eventuele beëindiging van de gevangenisstraf problematisch is, waren dit gelukkig kleinere inbreuken, zoals drugs- en verduisteringstoeslagen.

Software is vaak gericht op het automatiseren van processen. Door handmatige taken te verminderen, is ons leven in theorie eenvoudiger. Echter, deze zaak met Michigan-gevangenen die uit de gevangenis komen en vroege kaarten bewijst eens te meer de waarde van softwaretests. Een kleine programmeerfout bevat enorme vertakkingen, vooral in dit voorbeeld. Stelt u zich eens voor dat gevangenen die vrijgelaten worden, zich bezighouden met meer ernstige misdaden.

Waarom het een van de ergste programmeerfouten is: Dit incident had veel erger kunnen zijn, maar de vrijlating van een vroege gevangene is beangstigend.

9. Hartford Coliseum Falls

Hoewel de ineenstorting van Hartford Coliseum in 1978 een verlies van $ 90 miljoen had gekost, had het aanzienlijk slechter kunnen uitvallen. Het Hartford Coliseum stortte in enkele uren nadat fans de locatie hadden verlaten. Het dak met stalen lamellen kon het gewicht van natte sneeuw niet dragen. Een gebouw is ingestort vanwege een eenvoudige programmeerfout. De codeur van de CAD-software die werd gebruikt om het Hartford Coliseum te ontwerpen, kon geen rekening houden met meerdere variabelen. In plaats daarvan ging de softwareprogrammeur ervan uit dat stalen daksteunen alleen te maken zouden krijgen met pure compressie.

Ingenieurs staan ​​voor veel uitdagingen. Het gebruik van software moet hun werk eenvoudiger maken. Het niet in rekening brengen van verschillende variabelen leidt echter tot enorme uitdagingen. Terwijl je eenvoudig een fout in kunt patchen Minecraft, CAD-software heeft directe invloed op structuren in de echte wereld.

Waarom het een van de ergste programmeerfouten is: Nou ja, in ieder geval stierf niemand. Maar de economische verwoesting van een geschat verlies van $ 90 miljoen is enorm.

10. Ik heb 99 problemen en een Pentium is een

Over het algemeen beschikken Intel-processors over betere prestaties dan AMD-tegenhangers. AMD biedt echter een uitstekende prijs-prestatieverhouding AMD's nieuwe abonnement: maak virtuele realiteit goedkoper voor u AMD's nieuwe abonnement: maak virtuele realiteit goedkoper voor u AMD lijkt in 2016 te schakelen en als alles goed gaat, zijn ze een grote speler in de virtual reality-markt worden. Lees verder . Maar in 1994 hadden Intel's Pentium-microprocessors een groot probleem. De 486DX- en Pentium-CPU's hadden een floating-point-eenheid (FPU). Deze FPU was een wiskundige coprocessor. Eerdere generatie Intel CPU's verwerkte wiskunde met gehele getallen. Door een ingebouwde FPU op te nemen, beloofde deze volgende generatie Pentium-chip aanzienlijk snellere numerieke berekeningen.

De Pentium FPU maakte gebruik van een radix 4 STR-algoritme. Onjuist ingevoerde informatie veroorzaakt enigszins onjuiste berekeningen. Maar zelfs een kleine variatie kan enorme problemen met zich meebrengen, zoals te zien is in het geval van de instorting van Hartford of Therac-25. Ongeveer vijf ingangen in duizend werden weggelaten en gooiden de langeafstandscapaciteiten van de Pentium weg. Intel verklaarde officieel dat een scripting error lookup entry problemen veroorzaakte. Hoe dan ook, Pentium's wiskunde wordt toegeschreven aan slechte code.

Waarom het een van de ergste programmeerfouten is: Een paar belangrijke cijfers uit misschien niet zo veel, maar in gevallen van engineering of precisie van de gezondheidszorg is het essentieel.

Slecht voor de code: programmeerfouten gebeuren

Er zijn programmeerfouten gemaakt sinds het begin van de codering. Omdat het gebruik van code op verschillende gebieden blijft toenemen, zal deze trend waarschijnlijk niet snel verdwijnen.

Er zijn veel voorbeelden van programmeerfouten. Sommige zijn vrij onschuldig als een World of Warcraft bug. Anderen leiden tot de dood, hetzij echt (Therac-25) of ingebeeld (St. Mary's). Laat deze beroemde voorbeelden je niet afschrikken voor codering. Bekijk deze gids voor het kiezen van de juiste programmeertaal voor het web Hoe kies je de juiste programmeertaal voor het web Hoe kies je de juiste programmeertaal voor het web Waarom zouden bepaalde talen in een bepaald scenario boven andere moeten worden gekozen? Dit artikel geeft een lijst met vragen die de programmeur moet stellen om te kiezen welke taal hij moet gebruiken. Lees verder .

Welke historische voorbeelden van slechte code herinner je je nog? Laat hieronder een reactie achter met je keuze van programmeer-blunders!

Image Credit: nouskrabs en McIek via Shutterstock.com

Ontdek meer over: Geschiedenis, Programmeren.