Jei veikia – kam taisyti? Dalis pasaulio vis dar naudoja senoviškas kompiuterių programas

2025 m. gruodžio 20 d. 09:27
Lrytas.lt
Šių metų pradžioje technologijų pasaulis pasveikino seniai prarastą draugę. Pirmasis pasaulyje dirbtinio intelekto pokalbių robotas Eliza, praėjusio amžiaus septintojo dešimtmečio viduryje savo gebėjimu užmegzti iš pažiūros prasmingą pokalbį sužavėjo kompiuterių mokslininkus. Tačiau dešimtmečius Eliza buvo laikoma dingusia – nes jos kūrėjas Josephas Weizenbaumas iš Masačiusetso technologijos instituto (JAV) taip ir nepublikavo 420 eilučių kodo, kurį panaudojo jai sukurti.
Daugiau nuotraukų (4)
„Tais laikais publikuoti kodą iš tikrųjų nebuvo įprasta, – sako Jeffrey Shrageris iš Stenfordo universiteto JAV. J. Weizenbaumas galbūt net manė, kad niekam jis niekam nebus įdomus.
Tačiau laikai stipriai pasikeitė: J. Shrageris ir jo kolegos taip susižavėjo J. Weizenbaumo pasiekimu, kad įkūrė „Elizos archeologijos“ projektą ir pradėjo gilintis į senovinio pokalbių roboto istoriją. Prieš kelerius metus jų pastangos buvo atlygintos – kai MIT senų J. Weizenbaumo dokumentų dėžėje jie aptiko trūkstamą kodą ir taip sudarė sąlygas neseniai atgaivinti Elizą.
Nuostabu, kad vėl galime kalbėtis su pokalbių robotu, kuris užima tokią svarbią vietą dirbtinio intelekto istorijoje. Bet gali kilti klausimas: ar ELIZA kodas yra pats seniausias, ar yra dar senesnių kompiuterinio kodo fragmentų, vis dar atliekančių įspūdingas ar svarbias užduotis? „New Scientist“ žurnalisto Matthew Sparkeso kelionė ieškant seniausio kodo nuvedė jį į šiuolaikinių operacinių sistemų širdį – ir bent jau perkeltine prasme, už Saulės sistemos ribų.
Mes vertiname antikvarinius daiktus, todėl paprastai nesunku nustatyti seniausią tam tikros technologijos pavyzdį. Pavyzdžiui, paieškoję internete seniausio skraidančio lėktuvo, sužinosite, kad Jungtinėje Karalystėje yra restauruotas lėktuvas „Blériot XI“, kuris, praėjus daugiau nei 115 metų nuo jo pagaminimo, vis dar tinkamas skraidyti. Jei paklausite, kas yra seniausia pasaulyje veikianti elektros lemputė, gausite nuorodą į Šimtmečio lemputę – kaitrinę lemputę, kuri šviečia praėjus net ir 124 metams po to, kai buvo pirmą kartą įjungta Livermore, Kalifornijoje. Tačiau jei ieškosite seniausio veikiančio kompiuterio kodo, atsakymus rasti bus ne taip paprasta.
Pavyzdžiui, jums gali būti pasakyta, kad Ados Lovelace užrašai, padaryti 1840 m., yra seniausia pasaulyje kompiuterio programa. Tačiau mechaninis kompiuteris, kuriam buvo skirta A. Lovelace programa – Charleso Babbage'o analitinė mašina – niekada nebuvo sukurtas, todėl A. Lovelace kodas niekada nebuvo paleistas.
Didesnis pretendentas yra vienas pirmųjų pasaulyje bendrosios paskirties kompiuterių – Kembridžo universitete sukurtas elektroninis uždelsto saugojimo automatinis skaičiuotuvas (Electronic Delay Storage Automatic Calculator, EDSAC). Nacionalinio kompiuterijos muziejaus Bletchley parke (Jungtinė Karalystė) savanoriai konstruoja veikiančią EDSAC mašinos kopiją. Kai ji bus baigta, joje bus galima paleisti EDSAC programinę įrangą, kuri buvo publikuota moksliniuose straipsniuose, parašytuose XX a. penktajame ir šeštajame dešimtmečiuose. Toks kodas gali būti vienas iš seniausių pasaulyje – tačiau iš tikrųjų jis neveiks tol, kol nebus baigta kurti EDSAC kopija.
Dėl to M. Sparkesui kilo įtarimas, kad geresnė vieta ieškoti seno, bet vis dar veikiančio kodo gali būti šiuolaikinė programinė įranga. Ši idėja nėra tokia tolima, kaip gali pasirodyti. Maždaug tuo pačiu metu, kai buvo naudojami EDSAC kompiuteriai, kompiuterių mokslininkai pradėjo tobulinti kodo rašymo būdus, todėl atsirado pirmosios „aukšto lygio“ kompiuterių kalbos – arba kalbos, kurių struktūra panaši į žmonių kalbų struktūrą, todėl programavimas tampa intuityvesnis. Bėgant metams buvo sukurta daug aukšto lygio kompiuterių kalbų, įskaitant IBM „Fortran“ (1957 m.), COBOL (1959 m.) ir „JavaScript“ (1995 m.). Labai svarbu, kad net ir iš bendro naudojimo iškritusi kalba nėra visiškai pamiršta. Taip yra todėl, kad šiandieninėse programose gali būti kodas, parašytas keliomis kalbomis, o tai reiškia, kad seno kodo, parašyto dešimtmečių senumo kalba, fragmentai gali likti paslėpti šiandien naudojamų programų pagrinduose.
Turėdamas šią informaciją, M. Sparkesas pasakoja tęsęs paieškas – ir greitai radęs užuominą. Guinnesso rekordų knygoje teigiama, kad šiuolaikinėse interneto svetainėse, kurias naudojame lėktuvų bilietams rezervuoti ir užsisakyti, paprastai naudojama 1960 m. „American Airlines“ sukurta programinė įranga, vadinama „Sabre Global Distribution System“.
„Supratau, kad tai reiškia, jog kai kurie šiandieninės programinės įrangos versijos kodai gali būti senesni nei ELIZA. Susisiekiau su „Sabre“, kad sužinočiau daugiau, bet atsakymo negavau. Nepasidaviau ir kreipiausi į susijusias įmones, įskaitant „Delta Airlines“ – didžiausią pasaulyje oro linijų bendrovę pagal pajamas – „American Airlines Group“, „United Airlines Holdings“, „Lufthansa“ ir „British Airways“. Deja, nė viena iš jų taip pat neatsakė į mano užklausas, – pasakoja žurnalistas.
Technologijų įmonės ir bankai
M. Sparkesas nusprendė užmesti dar platesnį tinklą – tačiau rezultatas buvo toks pat. Stengdamasis surasti seniausias kompiuterinio kodo dalis, kurios tebenaudojamos šiuolaikinėje programinėje įrangoje, ji pateikė prašymus apklausti technologijų įmones, įskaitant „Apple“, „Microsoft“, HP ir „Texas Instruments“.
„Man nepasisekė. Jungtinės Karalystės bankininkystės „didysis ketvertas“ – „HSBC Holdings“, „Lloyds Banking Group“, „NatWest Group“ ir „Barclays“ – taip pat neatsakė. Neatsakė ir „Lloyd's of London“ bei „PayPal“. Iš pradžių „Visa“ ir „Mastercard“ atrodė susidomėjusios, bet galiausiai pareiškė negalinčios man padėti. Kuo galima paaiškinti tokį keistą nenorą aptarti seną kodą?“, – klausia žurnalistas.
„Jie tikriausiai dėl to nervinasi“, – sako labdaros organizacijos „LEO Computers Society“, siekiančios išsaugoti Jungtinėje Karalystėje sukurto nebeegzistuojančio kompiuterių prekės ženklo istoriją, patikėtinis Vincentas Bodsworthas. Jis spėja, kad įmonės gali nenorėti atkreipti dėmesį į tai, kad jų gaminiuose yra senovinio kodo, jei toks yra – nes gali nežinoti, kaip jis veikia arba kaip jį prižiūrėti, kad jis ir toliau veiktų.
V. Bodsworthas papasakojo istoriją, kurią išgirdo savo karjeros pradžioje, apie neįvardytą Londono banką, susidūrusį su problema, kai 1971 m. Jungtinė Karalystė perėjo prie dešimtainės valiutos. Bankas turėjo kompiuterinę programą, kuri įvairius finansinius skaičiavimus atlikdavo naudodama JK valiutą iki dešimtainės trupmenos. Tačiau kažkas pametė pirminį kodą, todėl nebuvo galimybės pakeisti programos, kad ji galėtų atlikti skaičiavimus nauja dešimtaine valiuta.
Užuot brangiai mokėjęs už programinės įrangos perrašymą iš naujo, bankas paprasčiausiai sukūrė kodą, kuris sumas dešimtainiais svarais ir pensais perskaičiuodavo į prieš dešimtainę valiutą buvusius svarus, šilingus ir pensus. Tada perskaičiuotas sumas buvo galima įkelti į senąją programą ir atlikti finansinius skaičiavimus. Galiausiai kita kodo dalis šių skaičiavimų rezultatus iš priešdešimtainio skaičiaus vėl pavertė dešimtainėmis vertėmis.
„Teko girdėti istorijų“, – sako V. Bodsworthas, kuris priduria, kad šis gremėzdiškas bankininkystės pataisymas yra būtent toks kodas, kuris gali būti iškritęs iš modernizavimo sistemos ir naudojamas iki šiol.
Kai programinės įrangos inžinieriai išeina į pensiją
Net jei pirminis kodas nėra prarastas, gali būti prarastos žinios, reikalingos jam suprasti ir pakeisti. Pavyzdžiui, COBOL programavimo kalba, kuri XX a. viduryje buvo labai svarbi sklandžiam įmonių darbui. Vienas iš konsultacinės įmonės „COBOL Cowboys“, įsikūrusios Teksase, įkūrėjų Billas Hinshaw 1970 m. parašė pirmąją programinę įrangą bankomatui, kurią sukūrė naudodamas COBOL.
Šiandien COBOL nebėra kompiuterių programuotojų pasirenkama kalba. Tačiau ji vis dar atlieka nedidelį, bet svarbų vaidmenį kai kuriose programinėse įrangose. B. Hinshaw apskaičiavo, kad šiandien egzistuoja 800 milijardų COBOL eilučių. Problema ta, kad tik nedaugelis dabartinių programuotojų moka šią kalbą, o iš tų, kurie moka, daugelis netrukus išeis į pensiją. Taigi, kai jiems prireikia pagalbos, jie kreipiasi į B. Hinshaw vadovaujamą senojo kodo ekspertų būrį. Jauniausiam šios grupės rangovui yra 40 metų, o daugumai jų – 60–70 metų. Pačiam B. Hinshaw yra 82 metai. „Šiuo metu nematome problemų, susijusių su COBOL. Po dešimties metų – galbūt“, – sako jis.
Teoriškai tai neturėtų kelti daug galvos skausmo, nes kodas iš tikrųjų nesusidėvi ir nesugenda. Tačiau atnaujinant programinę įrangą seno kodo dalys netyčia gali tapti nesuderinamos su likusia programos dalimi – tarsi įmantrios dėlionės dalys, kurios nebesutampa. Pavyzdžiui, 2024 m. liepą kibernetinio saugumo įmonės „CrowdStrike“ išleisto programinės įrangos atnaujinimo klaida išvedė iš rikiuotės milijonus kompiuterių oro uostuose, ligoninėse ir bankuose visame pasaulyje. Šiuo konkrečiu atveju klaida buvo greitai identifikuota ir išleistas naujas atnaujinimas, todėl dauguma kompiuterių vėl pradėjo veikti per kelias valandas. Tačiau jei tokia klaida būtų susijusi su seno kodo nesuderinamumu, kurį mažai programuotojų moka valdyti, ją ištaisyti gali būti daug sunkiau.
Esant tokiam susirūpinimui, technologijų įmonių galimas nenoras diskutuoti apie seną kodą būtų logiškesnis, kaip ir kartais pasitaikančios pastangos pašalinti seną kodą iš šiuolaikinės programinės įrangos. Garsiausias šio proceso pavyzdys įvyko maždaug prieš 25 metus. Tuo metu daugelis kompiuterių mokslininkų ėmė nerimauti, kad esama programinė įranga, kurioje metai paprastai žymimi tik dviem skaitmenimis, nesugebės atskirti 2000 m. nuo 1900 m., todėl tūkstantmečio sandūroje gali kilti pasaulinių skaičiavimo problemų. Pasak V. Bodswortho, po to prasidėjo desperatiškas bandymas prievarta pašalinti ir pakeisti seną kodą, kad būtų išvengta vadinamosios Y2K klaidos.
Tačiau nepaisant šių pastangų, kai kurie seni kodai vis dar naudojami stebėtinai svarbioje programinėje įrangoje. Pavyzdžiui, „Perl Foundation“ prezidentas Stuartas Mackintoshas, prižiūrintis programavimo kalbą, kurios vardu pavadintas fondas, kūrimą, sako, kad naujausioje „Perl“ versijoje, išleistoje 2024 m., neabejotinai yra pirmosios versijos, išleistos 1987 m., kodo fragmentų.
Nors „Perl“ pavadinimas daugeliui mūsų gali būti nežinomas, tačiau daugelis iš mūsų ja naudojasi kasdien: ji palaiko „Amazon Web Services“, kurią savo ruožtu naudoja tokios svetainės kaip Booking.com ar „Apple iCloud“. „Perl“ naudoja ir svarbios organizacijos, įskaitant NASA ir CŽA JAV bei MI5 ir MI6 Jungtinėje Karalystėje. Kai mes arba šių organizacijų nariai naudojame „Amazon Web Services“, naudojame beveik 40 metų senumo kodą, pastebi M. Sparkesas.
Kai kuriose šiuolaikinėse programose naudojamas dar senesnis kodas. Mike'as McGrathas iš programinės įrangos bendrovės „Red Hat“, platinančios atvirojo kodo operacinės sistemos „Linux“ distribuciją, teigia, kad komandai „indent“, kuri įtraukta į daugelį „Linux“ versijų, naudojamas 1976 m. kodas. „Beprotiška manyti, kad dirbtinio intelekto ir debesų kompiuterijos eroje vis dar kuriame ir naudojame beveik prieš 50 metų sukurtą kalbą“, – sako jis.
Pasak S. Mackintosho, yra paprasta priežastis, kodėl toks senas kodas išliko: „Jis tiesiog veikia.“ Nuolatinį susirūpinimą, kad toks kodas gali būti nesuderinamas su naujesniu kodu, atsveria faktas, kad per dešimtmečius daugybei senų kodų taip nenutiko. Dėl to susidaro tam tikras paradoksas: laikui bėgant programinės įrangos inžinieriai vis labiau nerimauja, kad senas kodas gali sukelti trikdžių, tačiau tuo pat metu jie vis labiau įsitikina, kad jis gali duoti patikimus ir tikslius rezultatus.
Kosmoso pramonės programinė įranga
To įrodymų galima rasti ir kosmoso pramonėje. Jamesas Egglestonas dirba Europos kosmoso agentūroje (EKA) kompiuterinių sistemų srityje. Jo teigimu, kosminių misijų projektavimas, kūrimas ir paleidimas kainuoja brangiai, todėl tikslinga jas vykdyti naudojant patikimą seną kodą, o ne rizikuoti naudojant visiškai naują kodą, kuriame gali atsirasti problemų. „Tai milijardus dolerių kainuojantys palydovai, todėl juos valdantys žmonės tikrai nenori daryti nieko, kas nėra visiškai garantuota, kad veiks, – sako jis. – Jei tai sugadinsite, jūsų erdvėlaivis bus sudegintas. Misijos pabaiga.“
Todėl kai kurių iš seniausių vis dar naudojamų kodų gali nebelikti mūsų planetoje ir net mūsų Saulės sistemoje. Gali būti, kad „Voyager“ zondai, dabar esantys už daugiau nei 20 milijardų kilometrų nuo Žemės, šiandien naudoja beveik tą pačią programinę įrangą, kaip ir 1977 m., kai buvo paleisti. Anoniminis kosmoso pramonės atstovas pasakojo, kad NASA kartais turi pasitelkti vyresnius programuotojus, kad šie prižiūrėtų ar modifikuotų senoms misijoms parašytą kodą, kaip tai su draudimo ir bankininkystės bendrovėmis daro B. Hinshaw.
Tačiau kosmoso pramonė, atrodo, nenori kalbėti apie savo priklausomybę nuo seno kodo. NASA neatsakė į M. Sparkeso prašymą aptarti šią temą, ir net J. Egglestonas pripažįsta, kad EKA vadovybė atsargiai vertino jo pokalbio su „New Scientist“ idėją – jei dėl to, kad EKA naudoja seną kodą, susidarytų klaidinantis įspūdis, jog agentūros misijos yra mažiau vertos finansavimo.
Įvertinus visas šias aplinkybes, galima teigti, kad įmonių ir organizacijų požiūris į seną kodą yra labai įvairus, rašo M. Sparkesas. Vieni juo nepasitiki, kiti juo tiki ir beveik visi nenori apie jį kalbėti.
Ką tai reiškia, kai ieškome seniausio šiandien veikiančio kodo? Galime tik spėlioti, bet V. Bodsworthas įtaria, kad jis gali tyliai veikti senoviniame kompiuteryje, metai iš metų atlikdamas tą pačią užduotį. Viena iš galimybių yra ta, kad minėtas kompiuteris yra valstybinėje įstaigoje, galbūt jis taip patikimai ir efektyviai atlieka svarbius fiskalinius skaičiavimus, kad visi patenkinti leidžia jam veikti toliau. Ir nors toks senas kodas ilgainiui gali sukelti programinės įrangos gedimą, galima tik spėlioti, kiek ilgai jis gali veikti be sutrikimo.
„Esame pačiame pirmajame ankstyviausio skaitmeninės revoliucijos etapo blyksnyje, – sako S. Mackintoshas. – Žvelgiant į tai, kur viskas bus po 500 metų, mes kursime tą pačią infrastruktūrą.“
Kitaip tariant, kai kurių senų kodų ateitis gali būti stebėtinai šviesi, apibendrina „New Scientist“ žurnalistas Matthew Sparkesas.

UAB „Lrytas“,
A. Goštauto g. 12A, LT-01108, Vilnius.

Įm. kodas: 300781534
Įregistruota LR įmonių registre, registro tvarkytojas:
Valstybės įmonė Registrų centras

lrytas.lt redakcija news@lrytas.lt
Pranešimai apie techninius nesklandumus pagalba@lrytas.lt

Atsisiųskite mobiliąją lrytas.lt programėlę

Apple App StoreGoogle Play Store

Sekite mus:

Visos teisės saugomos. © 2026 UAB „Lrytas“. Kopijuoti, dauginti, platinti galima tik gavus raštišką UAB „Lrytas“ sutikimą.