10 najgorih grešaka u programiranju u povijesti

  • Michael Fisher
  • 0
  • 1571
  • 292
Oglas

Kod je gotovo svugdje. Pojava modernih računala stigla je 40-ih godina. U svojoj bogatoj povijesti programiranje je omogućilo bolju komunikaciju i dovelo do napretka u bezbroj industrija. Sve, od svemirskog putovanja do telekomunikacija i zdravstvene zaštite, revolucionirano je i pod utjecajem koda.

Osim toga, programiranje može naučiti vrijedne životne lekcije. 6 životnih navika koje vas danas može naučiti 6 životnih navika koje bi vas danas programiranje moglo naučiti Sve što je važno što biste trebali znati o uspješnom životu, možete dobiti iz računalnog programa. Ne vjerujete mi? Nastavi čitati. , Međutim, u svojoj priče o povijesti, kodirao je i uništenje od kovanih metala. Primjeri malo lošeg koda uzrokovali su katastrofu na velikoj razini. Slijedi 10 najgorih programskih pogrešaka u povijesti.

1. Bugarska Y2K

Greška u godini 2000, zvana Y2K Bug ili Millennium Bug, problem je kodiranja za koji se predviđa da će uzrokovati računalni parandemonij. U 90-ima većina računalnih programa nabrajala je četverocifrenu godinu u skraćenoj verziji. Tako je 1990. čitao 90, 1991. napisan kao 91, itd. Skraćivanjem četveroznamenkaste godine na dvije znamenke, koderi su tako sačuvali dragocjeno pamćenje. Ali računala nisu uspjela prepoznati 2000 kao samo 00. Daljnje pogoršanje problema 2000 je bila prestupna godina. Određene softverske aplikacije nisu obračunavale dodatni dan.

Mnogi su se bojali da Y2K može srušiti računala i elektroniku u cijelom svijetu. Sjećam se da je moj prvi DVD player nosio sjajan “Y2K kompatibilno” naljepnica. Dok je 2000. godina odjeknula prilično nesmetano s softverske strane, ažuriranje računala i aplikacija u svakoj industriji koštalo je otprilike 300 milijardi dolara. Računala se nisu srušila. Život je tekao normalno. Ali ne bez gomile novca i rada, što je, prema izvješćima Slate, možda gubitak.

Zašto je to jedna od najgorih grešaka u programiranju: Panika Y2K bila je izuzetno skupa, u iznosu od 300 milijardi dolara. Osim toga, resursi su preusmjereni kako bi riješili ovaj potencijalni problem.

2. Heartbleed Bug

Kreditna slika: OpenClipart-Vectors putem Pixabay-a

Pojavljujući se u knjižnici OpenSSL, Heartbleed Bug opasna je sigurnosna ranjivost Heartbleed - Što možete učiniti da ostanete sigurni? Srčano srce - što možete učiniti da ostanete sigurni? , Sigurnost protokola transportnog sloja (TLS) koristi knjižnicu kriptografije OpenSSL. Zbog široke upotrebe u TLS-u, Heartbleed se brzo proširio. Ova greška omogućava gotovo svima na internetu da čitaju memoriju na računalima koji pokreću iteracije OpenSSL-a. Može se pročitati do 64 kb sistemske memorije. Dok je Heartbleed Bug otkriven javnosti 2014. godine, on se sproveo 2012. godine.

Nepravilna provjera unosa zbog provjere nedostajućih granica unutar TLS ekstenzije rada srca uzrokovala je bugu. Budući da se radilo o pogrešci u ekstenziji otkucaja srca, tako se rodilo ime Heartbleed. Članak iz 2014. iz Registra izvijestio je da je 1,5% najpopularnijih web lokacija s omogućenom TLS-om ostalo ranjivo na Heartbleed bug. Međutim, TLS implementacije osim OpenSSL-a nisu bile netaknute. Zbog toga Bug Windows ne utječe na verziju TLS-a i Mozilline mrežne sigurnosne usluge. Flaster je na kraju riješio problem s OpenSSL verzijom 1.0.1g. Dodavanjem čekova granica kako bi se spriječilo pretjerano čitanje međuspremnika, Heartbleed Bug je uspješno zakrpljen.

Zašto je to jedna od najgorih grešaka u programiranju: Greška u obliku srca stvorila je veliku sigurnosnu prijetnju. Vrijeme između pokretanja i krpljenja ostavilo je ranjive sustave godinama. Kad god postoji problem ranjivosti računala, to stvara veliku zabrinutost za sigurnost podataka.

3. Virus World of Warcraft shvaćen previše doslovno

Kreditna slika: WoW Wiki

World of Warcraft jednom pretrpio računalni virus drugačije vrste. U 2005. digitalna kuga upala je u nekoliko poslužitelja igara. Tisuće znakova postale su žrtva virusa krvi. WOW programer Blizzard predstavio je Hakkara, boga krvi. Znatan neprijatelj je zarazio lik pokvarenom krvlju. Dok je infekcija krvi prvobitno trebala pogoditi igrače u blizini Hakkarovog tijela, transfer igrača do igrača dogodio se izvan područja. Ovo nenamjerno sredstvo širenja virusa krvi nastalo je od kućnih ljubimaca u igri. Štoviše, likovi koji nisu igrači (NPC) postali su nositelji.

Archimonde je postao prvi zaraženi poslužitelj. Likovi niske razine odmah su umrli. Čak ni moćni likovi nisu dugo trajali. Iako je kodni propust ovjekovječio virus putem NPC-a i kućnih ljubimaca, virus nije planiran za puštanje izvan Hakkarovog kraljevstva. Dok su tisuće igrača umrle, World of Warcraft ne obilježava perma-smrt. Blizzard je popravio virus u krvi ponovnim pokretanjem poslužitelja. Ali ne prije nego što su igrači leševa zapalili WOW pejzaž.

Zašto je to jedna od najgorih grešaka u programiranju: Ok, tako je World of Warcraft možda neće predstavljati sigurnost podataka ili scenarij opasan po život - ali igrači svoju zabavu shvaćaju ozbiljno. Blizzard je proveo sate resetirajući poslužitelje. Zanimljivo je da je ponašanje igrača u igri oponašalo ono što se moglo dogoditi u epidemiji u stvarnom svijetu s jakom epidemijom, panikom i padom civilizacije. Nisam igrao WOW? Započnite s ovim cjelovitim priručnikom za početnike Prvi koraci sa World Of Warcraft: Potpuni vodič za početnike Prvi koraci sa World Of Warcraft: Kompletan vodič za početnike Evo što trebate znati ako prije nikad niste isprobali World of Warcraft. .

4. Therac-25

Iako mnoge programske pogreške uzrokuju ranjivosti ili mrtve igrače u igri, ustvari loš kod limenka ubiti. Do katastrofe Therac-25 došlo je s aparatom za zračenje Therac-25. Proizveden u Kanadskoj atomskoj energiji, Therac-25 uzrokovao je slučajno predoziranje zračenjem usmrtivši najmanje šest pacijenata. Istraživanja su otkrila da loš softver i nedovoljan razvoj sustava uzrokovali su predoziranje zračenjem. To je uglavnom posljedica poteškoća u provođenju automatiziranih testova softvera.

Predoziranja zračenja Therac-25 služe kao podsjetnik za stvaranje koda koji se lako testira. Strojevi ubijanja ljudi mogu zvučati kao znanstvena fantastika, ali incident Therac-25 dokazuje suprotno. Ali to je stvarno rezultat ljudske pogreške u kodiranju koja je uzrokovala ove probleme. Stručnjaci, uključujući Nancy Leveson, otkrili su da su neiskusni koderi stvorili buggy softver. Štoviše, samo je jedan programer stvorio softver koji se zasnivao na kodu iz Therac-6 i Therac-20.

Zašto je to jedna od najgorih grešaka u programiranju: Kad god postoji gubitak ljudskog života, programska greška apsolutno je jedan od najgorih primjera lošeg koda.

5. Let drevnog marinera 1

NASA koristi prilično malo tehnologije. Njegova sonda New Horizons koristi PlayStation CPU. VP za rješenja arhitekture i inženjeringa na NVIDIA-i Marc Hamilton redovno piše blogove o NASA-inoj upotrebi NVIDIA hardvera. Raketa Mariner 1 lansirana je svemirskom sondom za istraživanje Venere. Međutim, malo nakon lansiranja, raketa je odstupila od predviđenog puta leta. Mariner 1 uništen je ubrzo nakon uzlijetanja.

Manja pogreška programera uzrokovala je buku Mariner 1. Iako se izvješća razlikuju, znakovi ukazuju na crticu koja nedostaje. Prema arhivima NASA-e, “Odbor za ispitivanje leta Mariner 1 utvrdio je da je izostavljanje crtice u kodiranim računalnim uputama u programu za uređivanje podataka omogućilo prijenos neispravnih signala usmjeravanja u svemirski brod.” Poznati autor Arthur C. Clarke (2001: Svemirska odiseja) nazvao katastrofu Mariner 1 “najskuplji crtica u povijesti.”

Zašto je to jedna od najgorih grešaka u programiranju: Propust Mariner 1 mogao se lako izbjeći. Najava javnih usluga: dragi programeri, testirajte svoj softver.

6. Mreža AT&T propada

Kreditna slika: Upsplash preko Pixabay-a

Možete li me sada čuti? Ne. 15. siječnja 1990. srušilo se preko 50 posto mreže AT&T-a. U devet sati 75 milijuna poziva otišlo je bez odgovora. Iako su u početnim izvješćima okrivljeni hakeri, stvarni je krivac bio još gori: standardno ažuriranje softvera. Zapamtite ovo sljedeći put kada se žalite na ažuriranja za Windows 10 Ažuriranja sustava Windows postavljena su tako da postanu manje neugodna. Ažuriranja sustava Windows postavljena su da postanu manje neugodna. U novom sustavu, ažuriranja sustava Windows 10 trebala bi biti manjih dimenzija, preuzimati se učinkovitije i manje opterećivati. na resursima vašeg sustava. Promjenu koju vjerojatno nećete ni primijetiti. , Pogreška u samo jednom retku koda rušila je AT&T mrežu nekoliko sati. Prekidač se resetira, ali bug je značio da je drugi prekidač poslao drugu poruku. U osnovi domino efekt započeo je s tim da je mreža i dalje ponavljala svoju pogrešku. Na kraju je AT&T osmislio rješenje smanjenjem opterećenja mreže. Prekidači se tada resetiraju.

Unatoč teškim testiranjima, jedna je izjava osakatila mrežu. Program je napisan u C. Izjava o prekidu unutar rečenice if ostala je ugniježđena u preklopnoj klauzuli. Čini se da je veliki nestašica AT&T-a 1990. izgledala kao jednostavan problem. Mnogo propuštenih poziva, ili kao što bi danas bio hrpa propuštenih tekstova, obavijesti na Instagramu, Twitteru i Snapchatu. Ipak, nedostatak komunikacije imao je ogromne novčane učinke. Tvrtke poput American Airlinesa pretrpjele su financijske gubitke. American Airlines primio je dvije trećine manje poziva zbog kvara. Prekid 1990. i dalje je izvrstan primjer zašto je testiranje važno. Uz to, prekid AT&T služi kao podsjetnik na svojstvenu povezanost tehnologije i ekonomije.

Zašto je to jedna od najgorih grešaka u programiranju: Ne samo da se mreža AT&T-a raspala, nekoliko sati koliko je propadalo stvorilo je financijski pad.

7. Dan živih mrtvaca: Bolnica milosrđa Svete Marije

Kreditna slika: Vitalworks putem Pixabaya

U 2003. Softver softver se pogrešno “ubijen” 8.500 ljudi. Medicinski centar Svete Marije Mercy u Grand Rapids, Michigan, pogrešno je izvijestio da je mnogo pacijenata umrlo zbog problema u svom softverskom sustavu za upravljanje pacijentima. Ova loša katastrofa kodova je prilično bezopasna u usporedbi sa smrtnim žrtvama Therac-25, jer zapravo nitko nije umro. Ipak, čitanje o vlastitoj smrti uzrokuje uznemirujuće stanje - posebno kada ste živi i zdravi.

Lažna izvješća o smrti nisu bila ograničena na pacijente. Ta je korespondencija otišla osiguravajućim društvima i uredima socijalnog osiguranja. Budući da socijalno osiguranje i osiguravatelji osiguravaju da bolesnici koji ispunjavaju uvjete imaju Medicare, to predstavlja prilično problem. Djelatnici Svete Marije milosrđe obavijestili su pacijente, vladine agencije i pružatelje osiguranja o pogrešci. Konačno greška u programiranju nije privukla puno pažnje. Nejasno je je li greška kodiranja ikad ispravljena. Međutim, daljnja lažna izvješća o smrti nisu objavljena. Bolnica St. Mary's Mercy jednostavno je prebacila softver za upravljanje pacijentima.

Zašto je to jedna od najgorih grešaka u programiranju: Srećom nitko zapravo nije umro. Ali kontrola štete zbog osiguravanja stalnog zdravstvenog osiguranja bila je nered.

8. Pre-alfa zatvorenika: prijevremeno puštanje na slobodu

Kreditna slika: Alexas_Fotos putem Pixabay-a

Michigan je pretrpio problem u obradi podataka između 2003. i 2005. Za to vrijeme nedostatak računalnog programiranja prouzročio je rano puštanje 23 zatvorenika izbacivanjem kazne za državne zatvorenike u Michiganu. Srećni zatvorenici imali su koristi od kazne smanjene bilo gdje sa 39 na 161 dan. Iako je bilo kakvo slučajno ukidanje zatvorske kazne problematično, na sreću to su bile manje prekršaje, poput optužbi za drogu i pronevjeru.

Softver često ima za cilj automatiziranje procesa. Smanjivanjem ručnih zadataka naši su životi teoretski lakši. No ovaj slučaj s Michiganskim zatvorenicima koji rano izlaze iz zatvora još jednom dokazuje vrijednost testiranja softvera. Manja greška u programiranju nosi snažne posljedice, posebno u ovom primjeru. Zamislite samo da li su zarobljenici pušteni zavađeni u teže zločine.

Zašto je to jedna od najgorih grešaka u programiranju: Ovaj je incident mogao biti puno gori, ali prijevremeno puštanje zatvorenika je zastrašujuće.

9. Koloseum Hartford pada

Iako je kolaps Hartford Coliseum 1978. koštao prijavljenih 90 milijuna dolara gubitka, mogao je biti i znatno gori. Hartford Coliseum se srušio nekoliko sati nakon što su navijači napustili mjesto. Njegov krov rešetkasti čelik nije podnio težinu mokrog snijega. Zgrada se srušila zbog jednostavne programske pogreške. Koder CAD softvera koji se koristi za dizajn Hartford Coliseum nije uspio uzeti u obzir više varijabli. Umjesto toga, softverski programer pretpostavljao je da će se čelični nosači krova suočiti samo s čistom kompresijom.

Inženjeri se suočavaju s mnogim izazovima. Korištenje softvera trebao bi im olakšati posao. Međutim, nepoštivanje nekoliko varijabli dovodi do ogromnih izazova. Iako jednostavno možete zakrpiti pogrešku Minecraft, CAD softver izravno utječe na strukture u stvarnom svijetu.

Zašto je to jedna od najgorih grešaka u programiranju: Pa, barem nitko nije umro. Ali ekonomska devastacija procijenjenog gubitka od 90 milijuna dolara je ogromna.

10. Imam 99 problema i jedan pentium je jedan

Intel procesori obično imaju bolje performanse od AMD-ovih kolega. Međutim, AMD nudi odličan omjer cijene i performanse AMD-ovog novog plana: Napravite virtualnu stvarnost jeftinije za vas Novi plan AMD-a: Napravite virtualnu stvarnost jeftinije za vas AMD čini se da će tijekom 2016. mijenjati prijenosnike, a ako sve pođe dobro, oni su postat će veliki igrač na tržištu virtualne stvarnosti. , No 1994. Intelov mikroprocesor Pentium pretrpio je veliki problem. 486DX i Pentium CPU-ovi imali su jedinicu s pomičnom zarezom (FPU). Ovaj FPU bio je matematički koprocesor. Intelovi procesori prethodne generacije obrađivali su matematiku s cijelim brojevima. Uključivanjem ugrađenog FPU-a, ovaj čip sljedeće generacije Pentium obećao je znatno brže numeričke proračune.

Pentium FPU koristio je algoritam radix 4 STR. Nepravilno unesene informacije uzrokovale su malo pogrešne izračune. Ali čak i mala varijacija može značiti ogromne probleme kao što je pokazano u slučaju kolapsa Hartforda ili Therac-25. Oko pet ulazaka u tisuću izostavljeno je, što je odustalo od mogućnosti Pentiuma za duge podjele. Intel je službeno tvrdio da je greška kod skripta uzrokovala probleme prilikom ulaska u pretraživanje. Bilo kako bilo, Pentiumu se matematika pripisuje loš kod.

Zašto je to jedna od najgorih grešaka u programiranju: Nekoliko značajnih podataka možda neće izgledati mnogo, ali u slučajevima inženjerstva ili zdravstvene zaštite to je nužno.

Loše za kod: Programiranje pogrešaka se događa

Greške u programiranju nastale su od početka kodiranja. Kako se upotreba koda u raznim oblastima i dalje širi, ovaj trend vjerovatno neće uskoro nestati.

Postoji puno primjera programskih pogrešaka. Neki su prilično bezazleni poput a World of Warcraft buba. Drugi rezultiraju smrću bilo stvarnom (Therac-25) ili zamišljenom (St. Mary's). Ne dopustite da vas ovi poznati primjeri odvraćaju od kodiranja. Pogledajte ovaj vodič za odabir ispravnog programskog jezika web-mjesta Kako odabrati pravi jezik web-programiranja za korištenje Kako odabrati pravi jezik web-programiranja za upotrebu Zašto bi se određeni jezici trebali odabrati u odnosu na druge u bilo kojem scenariju? U ovom će se članku naći popis pitanja koje programer treba postaviti kako bi odabrao koji će jezik koristiti. .

Kojih povijesnih primjera lošeg koda pamtite? Ostavite komentar ispod sa svojim odabirom programskih pogrešaka!

Kreditna slika: nouskrabs i McIek putem Shutterstock.com




Još ne komentari

O modernoj tehnologiji, jednostavnoj i pristupačnoj.
Vaš vodič u svijetu moderne tehnologije. Naučite kako koristiti tehnologije i uređaje koji nas okružuju svaki dan i naučite kako otkriti zanimljivosti na Internetu.