10 najgorszych błędów programistycznych w historii

  • William Charles
  • 0
  • 2210
  • 239
Reklama

Kod jest prawie wszędzie. Pojawienie się nowoczesnych komputerów pojawiło się w latach 40. W swojej bogatej historii programowanie umożliwiło lepszą komunikację i doprowadziło do postępu w niezliczonych branżach. Wszystko, od podróży kosmicznych po telekomunikację i opiekę zdrowotną, zostało zrewolucjonizowane i podlega kodowi.

Ponadto programowanie może uczyć cennych lekcji życiowych. 6 nawyków życiowych, których programowanie może cię dzisiaj nauczyć 6 nawyków życiowych, które programowanie może cię nauczyć dzisiaj Wszystko, co musisz wiedzieć o życiu, które można osiągnąć, można uzyskać z programu komputerowego. Nie wierzysz mi? Czytaj. . Jednak w swojej historycznej przeszłości kodowanie spowodowało również zniszczenie. Wystąpienie odrobiny złego kodu spowodowało katastrofę na dużym poziomie. Oto 10 najgorszych błędów programistycznych w historii.

1. Błąd Y2K

Błąd roku 2000, znany również jako Y2K Bug lub Millennium Bug, był problemem kodowym, który miał wywołać pandemonium komputerowe. W latach 90. większość programów komputerowych zawierała czterocyfrowe lata w wersji skróconej. Tak więc 1990 czytał 90, 1991 zapisany jako 91 itd. Skracając czterocyfrowe lata do dwóch cyfr, kodery zaoszczędzili w ten sposób cenną pamięć. Ale komputery nie były w stanie rozpoznać 2000 jako po prostu 00. Rok 2000 był rokiem przestępnym. Niektóre aplikacje nie uwzględniały dodatkowego dnia.

Wielu obawiało się, że Y2K może doprowadzić do upadku komputerów i elektroniki na całym świecie. Pamiętam mój pierwszy odtwarzacz DVD z błyszczącym światłem “Zgodny z Y2K” naklejka. Podczas gdy rok 2000 zadziałał dość spokojnie od strony oprogramowania, aktualizacja komputerów i aplikacji w każdej branży kosztowała około 300 miliardów dolarów. Komputery nie uległy awarii. Życie toczyło się normalnie. Ale nie bez mnóstwa pieniędzy i pracy, co według raportów Slate'a mogło być marnotrawstwem.

Dlaczego jest to jeden z najgorszych błędów programistycznych: Panika Y2K była niezwykle kosztowna, w wysokości 300 miliardów dolarów. Ponadto zasoby zostały przekierowane, aby rozwiązać ten potencjalny problem.

2. Błąd Heartbleed

Źródło obrazu: OpenClipart-Vectors przez Pixabay

Błąd Heartbleed pojawiający się w bibliotece OpenSSL stanowi niebezpieczną lukę w zabezpieczeniach Heartbleed - co można zrobić, aby zachować bezpieczeństwo? Heartbleed - Co możesz zrobić, aby zachować bezpieczeństwo? . Protokół Transport Layer Security (TLS) wykorzystuje bibliotekę kryptograficzną OpenSSL. Ze względu na szerokie zastosowanie w TLS, Heartbleed rozprzestrzenia się szybko. Ten błąd pozwala praktycznie każdemu w Internecie czytać pamięć na komputerach z uruchomionymi iteracjami OpenSSL. Można odczytać do 64 kb pamięci systemowej. Chociaż błąd Heartbleed został ujawniony opinii publicznej w 2014 r., Pojawił się w 2012 r.

Niepoprawne sprawdzenie poprawności danych wejściowych z powodu braku kontroli granic w rozszerzeniu pulsu TLS spowodowało błąd. Ponieważ był to błąd w rozszerzeniu pulsu, nazwa Heartbleed odrodziła się. Artykuł z 2014 roku w Rejestrze podał, że 1,5% najpopularniejszych witryn obsługujących TLS pozostaje podatnych na błąd Heartbleed. Jednak implementacje TLS oprócz OpenSSL pozostały nietknięte. W związku z tym błąd Heartbleed nie wpłynął na wersję TLS dla Windows i usługi bezpieczeństwa sieci Mozilli. Łatka ostatecznie rozwiązała problem z OpenSSL w wersji 1.0.1g. Dodając kontrole granic, aby zapobiec przepełnieniu bufora, błąd Heartbleed został pomyślnie załatany.

Dlaczego jest to jeden z najgorszych błędów programistycznych: Błąd Heartbleed stworzył poważne zagrożenie bezpieczeństwa. Czas między uruchomieniem a łataniem pozostawiał zagrożone systemy przez lata. Za każdym razem, gdy pojawia się problem podatności na atak komputera, stwarza to poważne zagrożenie bezpieczeństwa danych.

3. Wirus World of Warcraft potraktowany zbyt dosłownie

Źródło zdjęcia: WoW Wiki

World of Warcraft kiedyś doznał wirusa komputerowego innego rodzaju. W 2005 roku plaga cyfrowa przeniknęła do kilku serwerów gier. Tysiące postaci padło ofiarą Wirusa Krwi. Łał twórca Blizzard przedstawił Hakkara, boga krwi. Znaczny wróg zainfekował postacie z zepsutą krwią. Podczas gdy infekcja krwi pierwotnie miała na celu dotknięcie graczy w pobliżu ciała Hakkara, przeniesienie gracza z gracza miało miejsce poza krajem. Ten niezamierzony sposób rozprzestrzeniania wirusa krwi odradzającego się od zwierząt domowych w grze. Co więcej, postacie nieosobowe (NPC) stały się nosicielami.

Archimonde stał się pierwszym zainfekowanym serwerem. Postacie niskiego poziomu natychmiast zginęły. Nawet potężne postacie nie trwały długo. Chociaż usterka kodująca utrwaliła wirusa za pośrednictwem postaci niezależnych i zwierząt domowych, wirus nie był planowany do uwolnienia poza królestwem Hakkara. Podczas gdy tysiące graczy zginęło, World of Warcraft nie ma perma-śmierci. Blizzard naprawił wirusa krwi przy ciągłym ponownym uruchomieniu serwera. Ale nie wcześniej, niż zwłoki gracza zaśmiecają Łał krajobraz.

Dlaczego jest to jeden z najgorszych błędów programistycznych: Ok, więc World of Warcraft może nie przedstawiać problemu z bezpieczeństwem danych lub scenariusza zagrażającego życiu - ale gracze poważnie podchodzą do rozrywki. Blizzard spędził godziny na resetowaniu serwerów. Co ciekawe, zachowanie graczy w grze naśladowało to, co może się wydarzyć w prawdziwej epidemii z szalejącą epidemią, paniką i upadkiem cywilizacji. Nie grałem Łał? Rozpocznij z tym kompletnym przewodnikiem dla początkujących Rozpoczęcie pracy z World of Warcraft: Kompletny przewodnik dla początkujących Rozpoczęcie korzystania z World of Warcraft: Kompletny przewodnik dla początkujących Oto, co musisz wiedzieć, jeśli nigdy wcześniej nie próbowałeś World of Warcraft. .

4. Therac-25

Podczas gdy wiele błędów programistycznych powoduje luki w zabezpieczeniach lub martwych graczy w grze, tak naprawdę zły kod mogą zabić. Katastrofa Therac-25 miała miejsce w przypadku radioterapii Therac-25. Wyprodukowany przez Kanadę Atomic Energy Therac-25 spowodował przypadkowe przedawkowanie promieniowania, zabijając co najmniej sześciu pacjentów. Badania wykazały, że słabe oprogramowanie i niewystarczający rozwój systemu spowodowały przedawkowanie promieniowania. W dużej mierze wynikały one z trudności w wykonywaniu automatycznych testów oprogramowania.

Przedawkowanie promieniowania Therac-25 służy jako przypomnienie do stworzenia kodu, który można łatwo przetestować. Maszyny zabijające ludzi mogą brzmieć jak science fiction, ale incydent z Therac-25 dowodzi, że jest inaczej. Ale tak naprawdę był to wynik błędu ludzkiego w kodzie, który spowodował te problemy. Eksperci, w tym Nancy Leveson, odkryli, że niedoświadczeni koderzy stworzyli błędne oprogramowanie. Co więcej, tylko jeden programista stworzył oprogramowanie i było ono oparte na kodzie z Therac-6 i Therac-20.

Dlaczego jest to jeden z najgorszych błędów programistycznych: Ilekroć dochodzi do utraty życia, błąd programowy jest absolutnie jednym z najgorszych przykładów złego kodu.

5. Lot starożytnego żeglarza 1

NASA wykorzystuje sporo technologii. Sonda New Horizons Probe wykorzystuje procesor PlayStation. Wiceprezes ds. Architektury i inżynierii rozwiązań w firmie NVIDIA Marc Hamilton regularnie bloguje na temat wykorzystania przez NASA sprzętu NVIDIA. Rakieta Mariner 1 wystrzelona z sondą kosmiczną, która ma eksplorować Wenus. Jednak nieco po wystrzeleniu rakieta zboczyła z zamierzonego toru lotu. Mariner 1 został zniszczony wkrótce po starcie.

Drobny błąd programisty spowodował błąd Mariner 1. Chociaż raporty różnią się, znaki wskazują brakujący łącznik. Według dokumentów archiwalnych NASA, “komisja rewizyjna Mariner 1 po locie ustaliła, że ​​pominięcie łącznika w zakodowanych instrukcjach komputerowych w programie do edycji danych umożliwiło przesyłanie nieprawidłowych sygnałów nawigacyjnych do statku kosmicznego.” Znany autor Arthur C. Clarke (2001: A Space Odyssey) nazwano katastrofą Mariner 1 “najdroższy łącznik w historii.”

Dlaczego jest to jeden z najgorszych błędów programistycznych: Pomyłki Mariner 1 można było łatwo uniknąć. Ogłoszenie usługi publicznej: drodzy programiści, proszę przetestować swoje oprogramowanie.

6. Sieć AT&T przestaje działać

Źródło obrazu: Unsplash przez Pixabay

Słyszysz mnie teraz? Nie. 15 stycznia 1990 r. Ponad 50 procent sieci AT&T uległo awarii. W ciągu dziewięciu godzin 75 milionów połączeń pozostało bez odpowiedzi. Podczas gdy wstępne raporty obwiniały hakerów, faktyczny winowajca był znacznie gorszy: standardowa aktualizacja oprogramowania. Pamiętaj, że następnym razem, gdy będziesz skarżyć się na aktualizacje systemu Windows 10, aktualizacje systemu Windows będą mniej denerwujące. Aktualizacje systemu Windows będą mniej denerwujące W nowym systemie aktualizacje systemu Windows 10 powinny być mniejsze, pobierane wydajniej i mniej obciążające na zasoby systemowe. Zmiana, której prawdopodobnie nawet nie zauważysz. . Błąd w jednym wierszu kodu spowodował uszkodzenie sieci AT&T na kilka godzin. Przełącznik zresetował się sam, ale błąd oznaczał, że drugi przełącznik wysłał kolejną wiadomość. Zasadniczo rozpoczął się efekt domina, a sieć nadal powtarzała swój błąd. Ostatecznie AT&T opracowało rozwiązanie zmniejszające obciążenie sieci. Następnie przełączniki same się resetują.

Pomimo ciężkich testów jedno stwierdzenie sparaliżowało sieć. Program został napisany w C. Instrukcja break wewnątrz klauzuli if pozostała zagnieżdżona w klauzuli switch. Wielka awaria AT&T w 1990 roku wydaje się prostym problemem. Wiele nieodebranych połączeń, a tak jak dzisiaj, kilka nieodebranych SMS-ów, Instagram, Twitter i powiadomienia Snapchat. Jednak brak komunikacji miał ogromny wpływ na finanse. Firmy takie jak American Airlines poniosły straty finansowe. American Airlines otrzymała o dwie trzecie mniej połączeń z powodu awarii. Awaria w 1990 roku nadal stanowi doskonały przykład tego, dlaczego testowanie jest ważne. Ponadto awaria AT&T służy jako przypomnienie nieodłącznego związku między technologią a ekonomią.

Dlaczego jest to jeden z najgorszych błędów programistycznych: Sieć AT&T nie tylko rozpadła się, ale kilka godzin jej awarii spowodowało upadek finansowy.

7. Dzień żywych trupów: Szpital Miłosierdzia Najświętszej Maryi Panny

Źródło obrazu: Vitalworks przez Pixabay

W 2003 r. Oprogramowanie nieprawidłowo działało “zabity” 8500 osób. Centrum medyczne St. Mary's Mercy Medical Center w Grand Rapids w stanie Michigan błędnie zgłosiło, że wielu pacjentów zmarło z powodu usterki w oprogramowaniu do zarządzania pacjentami. Ta katastrofa spowodowana złym kodem jest raczej nieszkodliwa w porównaniu z ofiarami Therac-25, ponieważ tak naprawdę nikt nie umarł. Jednak czytanie o własnej śmierci jest niepokojące - szczególnie gdy żyjesz i czujesz się dobrze.

Zgłoszenia fałszywych zgonów nie ograniczały się do pacjentów. Ta korespondencja trafiła do firm ubezpieczeniowych i urzędów zabezpieczenia społecznego. Ponieważ ubezpieczyciele społeczni i ubezpieczyciele zapewniają, że uprawnieni pacjenci mają Medicare, stanowiło to dość poważny problem. Pracownicy Maryi Miłosierdzia poinformowali pacjentów, agencje rządowe i ubezpieczycieli o błędzie. Ostatecznie błąd programowy nie zyskał dużej uwagi. Nie jest jasne, czy błąd kodowania został kiedykolwiek skorygowany. Jednak nie pojawiły się żadne dalsze doniesienia o fałszywej śmierci. Szpital St. Mary's Mercy po prostu zmienił oprogramowanie do zarządzania pacjentami.

Dlaczego jest to jeden z najgorszych błędów programistycznych: Na szczęście nikt nie umarł. Ale kontrola szkód w zapewnieniu ciągłości opieki zdrowotnej była bałaganem.

8. Prisoner Pre-Alpha: Early Release

Źródło obrazu: Alexas_Fotos przez Pixabay

Michigan doznało usterki w przetwarzaniu danych w latach 2003-2005. W tym czasie błąd w programowaniu komputerowym spowodował wcześniejsze zwolnienie 23 więźniów poprzez zniesienie wyroków dla więźniów stanu Michigan. Szczęśliwi więźniowie skorzystali z wyroków zredukowanych w dowolnym miejscu z 39 do 161 dni. Chociaż każde przypadkowe zakończenie kary więzienia jest problematyczne, na szczęście były to mniejsze wykroczenia, takie jak oskarżenia o narkotyki i malwersacje.

Oprogramowanie często ma na celu automatyzację procesów. Ograniczając zadania ręczne, nasze życie jest teoretycznie łatwiejsze. Jednak ten przypadek, gdy więźniowie Michigan wychodzą z więzienia wczesnymi kartami, ponownie potwierdza wartość testowania oprogramowania. Drobny błąd programowy ma ogromne konsekwencje, szczególnie w tym przykładzie. Wyobraź sobie tylko, czy więźniowie wypuszczani byli pogrążeni w poważniejszych przestępstwach.

Dlaczego jest to jeden z najgorszych błędów programistycznych: Ten incydent mógł być znacznie gorszy, ale wcześniejsze zwolnienie więźnia jest przerażające.

9. Hartford Coliseum Falls

Chociaż zawalenie Hartford Coliseum w 1978 r. Kosztowało 90 milionów dolarów straty, mogło być znacznie gorzej. Hartford Coliseum upadło kilka godzin po tym, jak fani opuścili halę. Dach ze stalowymi kratami nie wytrzymał ciężaru mokrego śniegu. Budynek zawalił się z powodu prostego błędu programowania. Koder oprogramowania CAD używanego do projektowania Hartford Coliseum nie uwzględnił wielu zmiennych. Zamiast tego programista założył, że stalowe wsporniki dachowe napotkają jedynie czystą kompresję.

Inżynierowie stają przed wieloma wyzwaniami. Korzystanie z oprogramowania powinno ułatwić ich pracę. Jednak nieuwzględnienie kilku zmiennych prowadzi do ogromnych wyzwań. Chociaż możesz po prostu załatać błąd Minecraft, Oprogramowanie CAD wpływa bezpośrednio na struktury świata rzeczywistego.

Dlaczego jest to jeden z najgorszych błędów programistycznych: Cóż, przynajmniej nikt nie umarł. Ale ekonomiczna dewastacja straty szacowanej na 90 milionów dolarów jest ogromna.

10. Mam 99 problemów i Pentium to jeden

Generalnie procesory Intel mają lepszą wydajność niż odpowiedniki AMD. Jednak AMD oferuje doskonały stosunek ceny do wydajności Nowy plan AMD: Spraw, by wirtualna rzeczywistość była tańsza dla Ciebie Nowy plan AMD: Spraw, aby wirtualna rzeczywistość była tańsza dla Ciebie AMD wydaje się zmieniać biegi w 2016 roku, a jeśli wszystko pójdzie dobrze, są będzie dużym graczem na rynku rzeczywistości wirtualnej. . Ale w 1994 r. Mikroprocesory Pentium Intela napotkały poważny problem. Procesory 486DX i Pentium miały jednostkę zmiennoprzecinkową (FPU). Ten FPU był koprocesorem matematycznym. Procesory Intel poprzedniej generacji przetwarzały matematykę liczbami całkowitymi. Dzięki wbudowanemu FPU ten procesor Pentium nowej generacji obiecał znacznie szybsze obliczenia numeryczne.

Pentium FPU wykorzystywał algorytm radix 4 STR. Niepoprawnie wprowadzone informacje spowodowały nieco niepoprawne obliczenia. Ale nawet niewielka odmiana może oznaczać ogromne problemy, jak pokazano w przypadku upadku Hartforda lub Therac-25. Zostało pominiętych około pięciu wpisów na tysiąc, odrzucając możliwości długiego podziału Pentium. Intel oficjalnie stwierdził, że błąd skryptu spowodował problemy z wejściem wyszukiwania. Tak czy inaczej, matematyka Pentium jest przypisywana złemu kodowi.

Dlaczego jest to jeden z najgorszych błędów programistycznych: Kilka znaczących liczb może wydawać się mało, ale w przypadku inżynierii lub opieki zdrowotnej jest to niezbędne.

Zły w kodzie: Wystąpiły błędy programistyczne

Błędy programistyczne występowały od początku kodowania. Ponieważ stosowanie kodu w różnych polach stale się rozwija, ten trend prawdopodobnie nie zniknie w najbliższym czasie.

Istnieje wiele przykładów błędów programistycznych. Niektóre są dość nieszkodliwe jak World of Warcraft pluskwa. Inne skutkują śmiercią albo rzeczywistą (Therac-25), albo wyobrażoną (St. Mary's). Nie pozwól, aby te słynne przykłady zniechęciły Cię do kodowania. Zapoznaj się z tym przewodnikiem wyboru odpowiedniego języka programowania w sieci Jak wybrać odpowiedni język programowania w sieci Jak wybrać odpowiedni język programowania w sieci Dlaczego w danym scenariuszu należy wybierać określone języki? Ten artykuł zawiera listę kontrolną pytań, które programiści powinni zadać, aby wybrać język, który ma być używany. .

Jakie historyczne przykłady złego kodu pamiętasz? Zostaw komentarz poniżej ze swoimi typami błędów programowania!

Zdjęcie: nouskrabs i McIek za pośrednictwem Shutterstock.com




Jeszcze bez komentarzy

O nowoczesnej technologii, prostej i niedrogiej.
Twój przewodnik w świecie nowoczesnych technologii. Dowiedz się, jak korzystać z technologii i gadżetów, które nas otaczają każdego dnia i dowiedz się, jak odkrywać ciekawe rzeczy w Internecie.