Daugiau 
 

Skaičiai, galintys sukelti katastrofas

05/08/2015 Aidas
science-945

1996 metų liepos 4 diena istorijoje įrašyta kaip viena liūdniausių Europos kosmoso agentūrai (EKA). Tą dieną buvo atliekamas pirmas raketos „Ariane 5“ skrydžio bandymas – ji į kosmosą turėjo iškelti itin brangius mokslinės paskirties palydovus. Bet skrydis netikėtai, milžiniškame dujų ir liepsnos kamuolyje, baigėsi jau 39 sekundę nuo starto. Nuostolis – apie 330 mln. eurų.

O kas nutiko? Problema buvo ne mechaninė. Ir niekas skrydžio nesabotavo. Raketą susprogdino elementari programinės įrangos klaida. Kompiuteris nesugebėjo susidoroti su matematinėmis užduotimis – jį iš proto išvarė didesnis, nei numatyta pagal apibrėžimą, skaičius. Ir, pasirodo, ši EKA raketos katastrofa – ne išimtinė. Panašios klaidos ne tik naikino raketas, bet ir pradangindavo kosminius zondus ar nukreipdavo karines raketas nuo numatyto kurso. Kas gi tai per klaidos? Ir dėl ko jos nutinka?

Nesėkmingas startas

Atlikus išsamų „Ariane“ raketos sprogimo tyrimą išaiškėjo, kad naujosios raketos kompiuteryje išliko programinės įrangos fragmentas iš senesnės kartos raketos, „Ariane 4“. Ir šiam fragmentui buvo nesuprantamas naujos, greitesnės raketos greitį registruojančių jutiklių siunčiami rodmenys. Dėl to kompiuteris, nesuprasdamas ką daryti su tokio dydžio skaičiais, inicijavo susinaikinimo funkciją. Po poros sekundžių ant žemės jau leidosi raketos nuolaužos.

Kaip bebūtų keista, analogiškos klaidos pasireiškia labai dažnai. Pavyzdžiui, įtariama, kad dėl tokios pačios klaidos JAV kosmoso agentūra NASA 2013 metais praganė savo zondą „Deep Impact“. O praėjusią savaitę pasklido informacija, kad panašiai klaidai neatspari ir keleivinio lėktuvo „Boeing 787“ programinė įranga. Jeigu valdymo modulis, kontroliuojantis energijos tiekimą lėktuvo varikliams, nepertraukiamai veiks ilgiau nei 248 dienas, jis pereis į saugų režimą ir išjungs visus variklius. Tai reiškia, kad hipotetiškai varikliai galėtų būti išjungti net vidury skrydžio.
Nors išsamesnės informacijos nepateikiama, kai kurie nepriklausomi stebėtojai nurodė, kad 248 dienos prilygsta 2 147 483 647 sekundėms, o šis skaičius programinėje įrangoje yra labai svarbus. Kuo gi svarbus? Pasirodo, 2 147 483 647 – tai maksimali teigiama reikšmė, kuri gali būti saugoma 32 bitų registre, naudojamame daugelio kompiuterių sistemų.

Keista riba

Skaičių aibė yra begalinė. Kodėl gi mes juos bandome sutalpinti į ribotą atminties kiekį? Atsakymas – tradicinis kompiuterių reikalavimas visur ir viskame siekti efektyvumo. Kadaise atmintis būdavo gerokai brangesnė nei šiais laikais, o didesnių reikšmių apdorojimas trukdavo ilgiau. Laikantis tam tikrų apibrėžtų apribojimų programinė įranga galėdavo veikti stabiliau, greičiau. Raketų valdymo sistemos itin greitai turi įvykdyti milžiniškus skaičiavimų kiekius, tačiau „Ariane 5“ katastrofa įrodė, kad ne visada galima iš anksto numatyti klaidų galimybę.

„Tenka pripažinti, kad programinėje įrangoje visuomet apytikriai vaizduojame realybę. Visada tenka ieškoti inžinerinio kompromiso tarp tikslesnio realybės atvaizdavimo kainos ir efektyvumo teikiamos naudos“, – sakė Carnegie Mellon universiteto programinės įrangos ekspertas Billas Scherlisas.

Minesotos universiteto matematikas Douglasas Arnoldas „Ariane 5“ incidentą aprašo savo sdarbe, pavadintame „Kai kurios katastrofos, kurių priežastis yra blogas skaičių apdorojimas“. D. Arnoldas mini ir 1991 metais taip ir nepaleistą „Patriot“ karinę raketą, kuri turėjo perimti irakiečių „Scud“ raketą, Persijos karo metu paleistą į JAV kariuomenės stovyklą. Tąkart maksimalios skaitinės reikšmės viršijimas reiškė, kad priešraketinės gynybos sistema klaidingai nustatė „Scud“ raketos, skriejusios 1,7 km/s greičiu, poziciją ir jos ieškojo 500 metrų atstumu nuo tikrosios raketos vietos, o neradusi raketos numatytoje vietoje, jos sekimo ir sunaikinimo procedūrą nutraukė. Klaida kainavo 28 karių gyvybes, dar 98 žmonės buvo sužeisti.

Gangnam klaida

Laimei, ne visi maksimalios skaitinės reikšmės viršijimo klaidos rezultatai būna tokie tragiški. Kartais jie sukuria tiesiog komiškas ar nepatogias situacijas. Pavyzdžiui, kompiuteriniame žaidime „Civilization“ panašios kilmės klaida lėmė, kad įprastai labai taikus veikėjas, Indijos lyderis Gandhi žaidimo pabaigoje tampa nesuvokiamai karingu.

Pasirinkus tam tikrą žaidimo režimą, link žaidimo pabaigos reikšmė, nusakanti Gandhi agresyvumą, pasiekia nulį, per jį persirita ir tampa maksimalia. Dėl to šis taikus žmogus žaidimo oponentams pradeda kiekvieno ėjimo metu grasinti branduolinėmis raketomis.

O gruodį internetą apskriejo žinia, kad visų laikų populiariausias „Youtube“ vaizdo įrašas „Gangnam Style“ „sulaužė“ svetainės peržiūrų skaitliuką. Pasirodo, šis skaitliukas buvo užprogramuotas taip, kad jo maksimali reikšmė buvo tie patys 2 147 483 647. Bet galų gale paaiškėjo, kad tai suveikė kaip puiki „Youtube“ reklama: „Google“ programuotojai operatyviai pataisė skaitliuką, o viso pasaulio žiniasklaida negailėjo dėmesio populiariausiam pasaulyje vaizdo įrašui. Dabar nauja maksimali skaitliuko reikšmė yra gerokai didesnė už kvintilijoną.

B. Scherlisas pabrėžė, kad ankstesnis maksimumas atskleidžia, jog pirmieji „Youtube“ programuotojai nesitikėjo pasiekti tokio populiarumo. „Be jokios abejonės, kai buvo pradedama kurti „Youtube“ programinė įranga, manau, bet kokiam programuotojui buvo sunku įsivaizduoti, kad bus viršytas toks skaičius“, – sakė B. Scherlisas.

Kartais būtent toks trumparegiškas mąstymas, kuris tuo metu atrodo protingas, ilgainiui sukelia problemų. Pavyzdžiui, daugiausiai apkalbinėta kompiuterinė klaida istorijoje, kurią ir iki šiol tikriausiai prisimena daugelis, buvo kelis metus visoje pasaulio žiniasklaidoje linksniuojama „Tūkstantmečio klaida“. Ir nors visas pasaulio kompiuterines sistemas sugadinti grasinusi klaida atėjus lemtingai akimirkai pasirodė visiškai nepavojinga ir bedantė, galvos skausmo ji sukėlė tikrai nemažai.

Klaidos esmė labai paprasta. Kas nutinka, kai metus skaičiuoji vertindamas tik du paskutinius skaitmenis? 2000-ieji metai tampa identiškais 1900-iesiems metams. Daug žmonių laiku suvokė, kad bet kokiai kompiuterinei sistemai, operuojančiai tokio tipo duomenimis, prasidėjus naujam tūkstantmečiui gali kilti nemenkų problemų. Dėl to dar iki šio svarbiojo datos virsmo buvo publikuota gausybė patarimų programuotojams, kurie galėtų iki 2000 metų sausio 1 dienos pakoreguoti savo sistemose veikiančias programas. Išmušus dvyliktai valandai lėktuvai iš dangaus kristi nepradėjo, bet būta keleto smulkių incidentų. Pavyzdžiui, Japonijos Išikavos prefektūroje liovėsi veikti radiacijos stebėjimo įranga, JAV Delavero valstijoje sutriko 150 lošimų aparatų, o keliose svetainėse pirmą 2000 metų dieną buvo rodoma data „19100 metų sausio 1 d.“.

Programuotojai šią klaidą visiškai pamiršo, ir ji dar kartą parodė, kas nutinka, kai stinga atidumo: 2012 m. Švedijoje gyvenanti 105 metų moteris Anna Eriksson sulaukė laiško, raginančio atvykti į ikimokyklinę grupę. Mat laiškų siuntinėjimą valdanti programinė įranga kvietė visus žmonės, gimusius „07“ metais. Bet niekas nesuko galvos, kad kvietimą gaus ne tik tie, kurie gimė 2007 metais, bet ir gimusieji dar 1907 metais.

Kita svarbi data – 2038 metai

Maždaug prieš 15 metų programuotojas Williamas Porquetas toliaregiškai numatė ir dar vieną svarbią datą – 2038 metų sausio 19 d., 3:14:07 val. Grinvičo laiku. Tą akimirką sekundžių, prabėgusių nuo 1970 metų sausio 1 dienos pradžios, kiekis viršys maksimalią daugelio šiandienių kompiuterių sistemose saugomo datos ir laiko registro vertę. Jei šiai klaidai nebus pasiruošta taip, kaip artėjant 2000-iesiems, galime sulaukti nemenkų nemalonumų ir kompiuterio veikimo bėdų.

„Pirmąkart apie tai parašiau 1999 metais. Įsigijau domeno pavadinimą 2038.org ir iš pradžių maniau, kad iš to gali gautis neblogas pokštas. Tai buvo tarsi satyra, papokštavimas, skirtas kitiems kompiuterių moksliukams, kurie sakytų „be problemų, 2037 metais ištaisysime...“ O paskui susipratau, kad ši klaida ir iš tiesų gali sukelti nemenkų bėdų“, – pasakojo programuotojas.

W. Porquetas labiausiai nerimauja dėl senų programinės įrangos elementų, veikiančių kompiuteriuose, kurie jau seniai niekam nebeįdomūs – senuose, sustabarėjusiuose tinkluose arba šiaip senuose kai kuriose pasaulio vietose naudojamuose kompiuteriuose. Kiek jų bus vis dar naudojami po 23 metų ir kokios gali būti šios datos pasekmės – galima tik spėlioti.

Laiko klaidos

Kembridžo universiteto kompiuterių mokslininkas Markusas Kuhnas aiškina, kad su laiku susijusios klaidos visuomenę domina iš dalies dėl to, kad jų pasekmės yra neprognozuojamos, bet taip pat ir todėl, kad jos „nėra netikėtos“ ir kad žmonės turi progą dar iki klaidos pasireiškimo galimybės paspėlioti, kas galėtų nutikti atėjus lemtingai akimirkai. M. Kuhnas mano, kad 2038 metų problema bus kur kas mažiau reikšminga, nei 2000-ųjų, nes tūkstantmečio klaida jau išmokė kompiuterių pramonę parengti reikiamas pataisas.

Tuo tarpu pačiam M. Kuhnui už 2038 metų įvykius kur kas įdomiau, kas nutiks šių metų birželį. 2015 metai bus viena sekunde ilgesni nei 2014 metai – taip vykdoma astronominio laiko (skaičiuojamo pagal mūsų planetos sukimąsi) bei atominio laiko (paties tiksliausio dabar žinomo laiko skaičiavimo sekundėmis būdo) neatitikimo korekcija. Nors atominis laikas, kuris šiemet bus koreguojamas keliamąja sekunde, yra beveik nesuvokiamai tikslus, jis šiek tiek nedera su astronominiu laiku, kadangi Žemės sukimasis labai pamažu lėtėja. Planetos sukimosi greičiui įtakos turi geologiniai reiškiniai, tokie kaip Žemės drebėjimai, todėl iš anksto numatyti, kada prireiks keliamosios sekundės, iš esmės neįmanoma. Paskutinė tokia sekundė į metus buvo įterpta 2012 metais – dėl to sutriko daugybės kompiuterių veikla. Belieka tikėtis, kad prieš trejus metus programuotojai pasisėmė patirties ir šiemet bus geriau pasirengę.

 
 

Susijusios naujienos


„Čikagos aidas“ – tai NEMOKAMAS laikraštis, įsteigtas 2003 m., o taip pat interneto puslapis bei ETHNIC MEDIA, USA dalis. „Čikagos aidas“ yra vienas didžiausių Jungtinėse Amerikos Valstijose leidžiamų lietuviškų savaitraščių. Savaitraštyje rasite daug įdomios informacijos apie lietuvių bendruomenę Amerikoje, taip pat žinių apie Lietuvą, pasaulį, kitų naujienų aktualiais, socialiniais, kultūriniais, ekonominiais, politiniais, švietimo, sveikatos klausimais bei laisvalaikiui skirtų straipsnių.

Prenumeruoti naujienas

Gauti naujienas el.paštu