Cele 10 cele mai grave greșeli de programare din istorie
Codul este aproape pretutindeni. Apariția computerelor moderne a ajuns în anii 1940. În istoria sa bogată, programarea a permis o comunicare mai bună și a condus la progrese în cadrul a numeroase industrii. Totul, de la călătoriile în spațiu până la telecomunicații și asistență medicală, a fost revoluționat și afectat de cod.
În plus, programarea poate învăța lecții de viață valoroase 6 Obiceiuri de viață care programarea te-ar putea învăța astăzi 6 Obiceiuri de viață care programarea te-ar putea învăța astăzi Tot ceea ce trebuie să știi despre trăirea unei vieți reușite, poți obține de la un program de calculator. Nu mă credeți? Citește mai departe. Citeste mai mult . Cu toate acestea, în trecutul său vechi, codificarea distrugerii a făcut și ea. Instanțele unui pic de cod rău au provocat dezastre la un nivel major. Următoarele sunt 10 dintre cele mai grave greșeli de programare din istorie.
1. Bug Y2K
Bugul Anul 2000, cunoscut sub numele de Bug-ul Y2K sau Millennium Bug, a fost o problemă de codare care a prezis că va provoca pandemoniu pe computer. În anii '90, majoritatea programelor de computere au fost enumerate într-o versiune abreviată în patru cifre. Deci, 1990 a citit 90, 1991 a fost scris ca 91, etc. Prin scurtarea anilor de patru cifre la două cifre, coderii au salvat astfel memorie valoroasă. Dar computerele nu au reușit să recunoască anul 2000 ca fiind pur și simplu 00. Din nou, exacerbarea problemei, anul 2000 a fost un an de salt. Anumite aplicații software nu au avut în vedere ziua extra.
Mulți se temeau că Y2K ar putea aduce în jos computerele și electronica din întreaga lume. Îmi amintesc că primul meu DVD player poartă un strălucitor “Compatibilitate Y2K” autocolant. În timp ce anul 2000 a sosit destul de neclar în partea de software, actualizarea calculatoarelor și a aplicațiilor în fiecare industrie costa aproximativ 300 de miliarde de dolari. Calculatoarele nu s-au prăbușit. Viața a continuat așa cum este normal. Dar nu fără o grămadă de bani și de muncă, care, potrivit rapoartelor lui Slate, ar fi putut fi o risipă.
De ce este una dintre cele mai grave greșeli de programare: Panica Y2K a fost extrem de costisitoare, în valoare de 300 de miliarde de dolari. În plus, resursele au fost redirecționate pentru a remedia această problemă potențială.
2. Bug inima
Apărut în biblioteca OpenSSL, Heartbleed Bug este o vulnerabilitate de securitate periculoasă Heartbleed - Ce puteți face pentru a rămâne sigură? Heartbleed - Ce puteți face pentru a vă menține în siguranță? Citeste mai mult . Protocolul TLS (Transport Layer Security) folosește biblioteca de criptografie OpenSSL. Datorită utilizării pe scară largă în TLS, Heartbleed sa răspândit repede. Această eroare permite practic oricui pe internet să citească memoria pe mașinile care rulează iterații afectate de OpenSSL. Pot fi citite până la 64 kb de memorie de sistem. În timp ce Bug-ul Heartbleed a fost dezvăluit publicului în 2014, acesta a fost lansat în 2012.
Validarea necorespunzătoare a intrărilor din cauza unei verificări lipsite de limite în cadrul extensiei de batere a TLS a provocat eroarea. Deoarece a fost un bug în extensia bătăilor inimii, a apărut și numele Heartbleed. Un articol din 2014 din Registru a raportat că 1,5% dintre cele mai populare site-uri TLS au rămas vulnerabile la eroarea Heartbleed. Cu toate acestea, implementările TLS în afară de OpenSSL nu au fost afectate. Prin urmare, versiunea Windows a TLS și a serviciilor de securitate ale rețelei Mozilla nu au fost afectate de Bug-ul Heartbleed. Un patch a rezolvat în cele din urmă problema cu OpenSSL versiunea 1.0.1g. Prin adăugarea controalelor limită pentru a preveni supra-citirea tamponului, eroarea Heartbleed a fost patch-uri cu succes.
De ce este una dintre cele mai grave greșeli de programare: Bugul inimii a creat o amenințare majoră la adresa securității. Timpul dintre lansare și patching a afectat sistemele afectate vulnerabile de ani de zile. De fiecare dată când există o problemă de vulnerabilitate a calculatorului, aceasta creează o preocupare imensă de securitate a datelor.
3. Virusul World of Warcraft luat prea literal
World of Warcraft o dată a suferit un virus de calculator de un alt fel. În 2005, o ciumă digitală a infiltrat câteva servere de jocuri. Mii de personaje au căzut pradă virusului sanguin. Wow dezvoltatorul Blizzard a introdus Hakkar, zeul lui Blood. Inamicul considerabil a infectat personaje cu sânge corupt. În timp ce infecția de sânge intenționa inițial să afecteze jucători în apropierea corpului lui Hakkar, transferul de la jucător la jucător a avut loc în afara regiunii. Acest mijloc neintenționat de răspândire a virusului sanguin a izvorat din animale de companie în joc. Mai mult, caracterele non-player (NPC) au devenit purtători.
Archimonde a devenit primul server infectat. Caracterele de nivel inferior au murit instantaneu. Chiar și caracterele puternice nu au durat mult. Deși o problemă de codare a perpetuat virusul prin intermediul NPC-urilor și animalelor de companie, virusul nu a fost planificat pentru eliberare în afara regatului Hakkar. În timp ce mii de jucători au murit, World of Warcraft nu prezintă perma-moarte. Blizzard a stabilit virusul sanguin cu repornirea serverului rulant. Dar nu înainte ca cadavrele jucătorilor să-l ucidă Wow peisaj.
De ce este una dintre cele mai grave greșeli de programare: OK, si World of Warcraft ar putea să nu prezinte o problemă de securitate a datelor sau un scenariu care pune viața în pericol - dar jucătorii își iau în serios divertismentul. Blizzard a petrecut ore de resetare a serverelor. Interesant, comportamentul jucătorului în joc a imitat ceea ce s-ar putea întâmpla într-o epidemie din lumea reală cu izbucnire, panică și un colaps de civilizație. Nu am jucat Wow? Începeți cu acest ghid complet al începătorului Noțiuni de bază cu World of Warcraft: Un ghid complet al începătorului Noțiuni de bază cu World of Warcraft: Un ghid complet de începători Iată ce trebuie să știți dacă nu ați încercat niciodată World of Warcraft. Citeste mai mult .
4. Therac-25
În timp ce multe greșeli de programare cauzează vulnerabilități sau morți în joc, în realitate codul rău poate sa ucide. Disfuncția Therac-25 a avut loc cu mașina de radioterapie Therac-25. Producată de Energia Atomică a Canadei, Therac-25 a provocat supradoze accidentale de radiații, ucigând cel puțin șase pacienți. Investigațiile au descoperit că software-ul slab și dezvoltarea insuficientă a sistemului au provocat supradoze radiologice. În mare parte, acestea au rezultat din dificultatea efectuării de teste de software automatizate.
Supradozele cu radiații Therac-25 servesc ca un memento pentru a crea un cod care este ușor de testat. Masinile uciderea oamenilor pot suna ca o fictiune stiintifica, dar incidentul Therac-25 dovedește altfel. Dar acesta a fost într-adevăr un rezultat al erorii umane în codificarea care a provocat aceste probleme. Experții, inclusiv Nancy Leveson, au constatat că codificatorii neexperimentați au creat programe buggy. Mai mult decât atât, un singur programator a creat software-ul și sa bazat pe codul Therac-6 și Therac-20.
De ce este una dintre cele mai grave greșeli de programare: Ori de câte ori există pierderi de vieți omenești, o eroare de programare este absolut unul dintre cele mai grave exemple de cod rău.
5. Zborul marinarului antic 1
NASA folosește destul de multă tehnologie. Sonda sa pentru noi orizonturi utilizează un procesor PlayStation. VP al soluțiilor de arhitectură și inginerie la NVIDIA Marc Hamilton blog-uri în mod regulat despre utilizarea de către NASA a hardware-ului NVIDIA. Racheta Mariner 1 a fost lansată cu o sonerie spațială planificată pentru a explora Venus. Cu toate acestea, după lansare, racheta sa abătut de la calea de zbor. Mariner 1 a fost distrus la scurt timp după decolare.
O eroare minoră a programatorului a provocat eroarea Mariner 1. Deși rapoartele diferă, semnele indică o cratimă lipsă. Potrivit documentelor de arhivă ale NASA, “Mariner 1 Post Flight Review Board a stabilit că omisiunea unei cratimă în instrucțiunile de calculator codate în programul de editare a datelor a permis transmiterea semnalelor de ghidare incorecte către nava spațiale.” Renumitul autor Arthur C. Clarke (2001: O Odisee Spațială) numit dezastrul Mariner 1 “cea mai scumpă cratimă din istorie.”
De ce este una dintre cele mai grave greșeli de programare: Gafa Mariner 1 ar fi putut fi ușor evitată. Anunț de servicii publice: dragi dezvoltatori, vă rugăm să vă testați software-ul.
6. Rețeaua AT & T merge în jos
Ma poti auzi acum? Pe 15 ianuarie 1990, peste 50% din rețeaua AT & T sa prăbușit. În nouă ore, 75 de milioane de apeluri au rămas fără răspuns. În timp ce rapoartele inițiale au dat vina pe hackeri, vinovatul a fost mult mai rău: o actualizare software standard. Amintiți-vă acest lucru data viitoare când vă plângeți despre actualizări Windows 10 Actualizările Windows sunt setate pentru a obține mai puține enervări Actualizările Windows sunt setate pentru a obține mai puțin deranjant În noul sistem, actualizările Windows 10 ar trebui să fie mai mici în dimensiune, să fie descărcate mai eficient și pe resursele sistemului. O schimbare pe care probabil nu o veți observa nici măcar. Citeste mai mult . O eroare într-o singură linie de cod a scos în jos rețeaua AT & T pentru câteva ore. Un întrerupător se resetează, dar eroarea a însemnat că al doilea comutator a trimis un alt mesaj. În esență, un efect de domino a început cu rețeaua continuând să repete eroarea. În cele din urmă, AT & T a conceput o soluție prin reducerea încărcării rețelei. Întrerupătoarele se resetează apoi.
În ciuda testelor grele, o singură declarație a afectat rețeaua. Programul a fost scris în C. O declarație de pauză în interiorul unei clauze if a rămas imbricată într-o clauză de comutare. Marcarea AT & T din 1990 pare a fi o problemă simplă. O mulțime de apeluri ratate, sau cum ar fi în prezent o grămadă de texte ratate, notificări Instagram, Twitter și Snapchat. Cu toate acestea, lipsa de comunicare a avut un impact monetar imens. Companiile precum American Airlines au suferit pierderi financiare. American Airlines a primit mai puțin de două treimi apeluri din cauza întreruperii. Pauza din 1990 persistă ca un exemplu excelent de ce testarea este importantă. În plus, omiterea AT & T servește ca o reamintire a legăturii inerente dintre tehnologie și economie.
De ce este una dintre cele mai grave greșeli de programare: Nu numai că rețeaua AT & T se prăbușește, cîteva ore în care a rămas, creează o bătaie financiară.
7. Ziua morților vii: Spitalul de Mercy din St Mary
În 2003, o eroare de software în mod incorect “ucis” 8.500 de persoane. Centrul Medical de Mercy din St. Mary, în Grand Rapids, Michigan, a raportat în mod eronat că mulți pacienți au murit cu un glitch în sistemul lor de management al pacienților. Acest dezastru de cod rău este mai degrabă inofensiv în comparație cu decesele cu Therac-25, de vreme ce nimeni nu a murit. Totuși, citirea despre decesul tău este disconcert - mai ales când ești în viață și bine.
Rapoartele cu privire la moartea falsă nu au fost limitate la pacienți. Această corespondență a fost trimisă companiilor de asigurări și birourilor de securitate socială. Deoarece furnizorii de asigurări sociale și de asigurare asigură asigurarea pacienților eligibili, Medicare a prezentat o problemă destul de mare. Angajații St. Mary's Mercy au informat pacienții, agențiile guvernamentale și furnizorii de asigurări despre eroare. În cele din urmă, greșeala de programare nu a câștigat prea multă atenție. Nu este clar dacă eroarea de codare a fost corectată vreodată. Cu toate acestea, nu au apărut alte rapoarte mortale false. Spitalul de Mercy din St. Mary a schimbat pur și simplu software-ul de gestionare a pacienților.
De ce este una dintre cele mai grave greșeli de programare: Din fericire, nimeni nu a murit. Dar controlul daunelor de a asigura o acoperire continuă a asistenței medicale a fost un dezastru.
8. Prizonierul Pre-Alpha: eliberarea precoce
Michigan a suferit o eroare de procesare a datelor între 2003 și 2005. În acea perioadă, o defecțiune de programare a computerului a provocat eliberarea timpurie a 23 de prizonieri, prin lovirea condamnărilor pentru prizonierii de stat din Michigan. Deținuții norocoși au beneficiat de pedepse reduse de oriunde de la 39 la 161 de zile. În timp ce orice încetare accidentală a pedepsei cu închisoarea este problematică, din fericire, acestea au fost infracțiuni mai mici, cum ar fi taxele de droguri și de deturnare de fonduri.
Software-ul are adesea scopul de a automatiza procesele. Prin reducerea sarcinilor manuale, viața noastră este teoretic mai ușoară. Cu toate acestea, acest caz, cu prizonieri din Michigan, care au ieșit din închisoare, demonstrează încă o dată valoarea testării software-ului. O greșeală de programare mică duce la ramificații masive, mai ales în acest exemplu. Imaginați-vă dacă deținuții au fost eliberați de crime mai grave.
De ce este una dintre cele mai grave greșeli de programare: Acest incident ar fi putut fi mult mai rău, dar eliberarea timpurie a prizonierilor este înfricoșătoare.
9. Hartford Coliseum Falls
Deși colapsul de la Hartford Coliseum din 1978 a costat o pierdere de 90 milioane de dolari raportate, ar fi putut fi mult mai rău. Hartford Coliseum sa prăbușit câteva ore după ce fani au eliberat locul. Acoperișul său din oțel nu a reușit să susțină greutatea zăpezii ude. O clădire sa prăbușit din cauza unei erori de programare simple. Coderul software-ului CAD utilizat pentru a proiecta Hartford Coliseum nu a reușit să contabilizeze mai multe variabile. În schimb, programatorul software care presupune că suporturile de acoperis din oțel ar fi confruntat numai cu o compresie pură.
Inginerii se confruntă cu multe provocări. Folosirea software-ului ar trebui să ușureze munca lor. Oricum, omisiunea de a ține cont de mai multe variabile conduce la provocări imense. În timp ce puteți pur și simplu patch-o o eroare în Minecraft, Software-ul CAD influențează direct structurile lumii reale.
De ce este una dintre cele mai grave greșeli de programare: Ei bine, cel puțin nimeni nu a murit. Dar devastarea economică a unei pierderi estimate la 90 milioane de dolari este imensă.
10. Am 99 de probleme și un Pentium este unul
În general, procesoarele Intel au performanțe mai bune decât omologii AMD. Cu toate acestea, AMD oferă un raport excelent preț-performanță Planul AMD Nou: Faceți-vă mai ieftin realitatea virtuală pentru dvs. Planul nou al AMD: Faceți-vă mai ieftin realitatea virtuală AMD pare a fi comutarea uneltelor în 2016 și dacă totul merge bine va fi un jucător important pe piața realității virtuale. Citeste mai mult . Dar în 1994, microprocesoarele Intel Pentium au suferit o problemă majoră. Procesoarele 486DX și Pentium au prezentat o unitate cu virgulă mobilă (FPU). Acest FPU a fost un coprocesor matematic. Generația anterioară de procesoare Intel procesate matematică cu numere întregi. Prin includerea unui FPU încorporat, acest cip de generație viitoare Pentium a promis calcule numerice semnificativ mai rapide.
FPU Pentium a folosit un algoritm radix 4 STR. Informațiile de intrare incorecte au cauzat calcule ușor greșite. Dar chiar și o variație minoră poate însemna probleme masive așa cum sa arătat în cazul colapsului Hartford sau Therac-25. Aproximativ cinci intrări dintr-o mie au fost lăsate afară, eliminând capabilitățile divizării lungi ale Pentium-ului. Intel a afirmat oficial că o eroare de scripting a cauzat probleme de intrare în căutare. În orice caz, matematica lui Pentium este atribuită codului rău.
De ce este una dintre cele mai grave greșeli de programare: Câteva cifre semnificative ar putea să nu pară prea multe, dar în cazurile de precizie în inginerie sau îngrijire medicală este esențială.
Coduri greșite: greșeli de programare se întâmplă
Grupele de programare au apărut de la începutul codării. Deoarece utilizarea codului într-o varietate de domenii continuă să se extindă, această tendință probabil că nu va dispărea în curând.
Există o mulțime de exemple de greșeli de programare. Unele sunt destul de inofensive ca a World of Warcraft gândac. Alții duc la moarte fie real (Therac-25), fie imaginat (Sf. Maria). Nu lăsați aceste exemple celebre să te descurajeze de codificare. Consultați acest ghid pentru a alege limba corectă de programare web Cum de a alege limba corectă de programare Web pe care să o utilizați Cum să alegeți limbajul de programare Web adecvat De ce ar trebui să fie alese anumite limbi în raport cu alții în orice scenariu dat? Acest articol va oferi o listă de întrebări pe care programatorul ar trebui să le solicite pentru a alege ce limbă să utilizeze. Citeste mai mult .
Ce exemple istorice de cod rău vă amintiți? Lăsați un comentariu de mai jos cu opțiunile dvs. de gafe de programare!
Credit de imagine: nouskrabs și McIek prin Shutterstock.com
Explorați mai multe despre: istoric, programare.