Az informatika gremlinjei

"Én viszont a következőt állítom: sokkal jobban kéne félni a számítógépek múltjától, mint jövőjétől (bár inkább egyiktől sem kéne). Képzeljük el, ha nem a jövő zsenijeitől kell tartanunk, hanem azoktól a múltbeli tudósoktól, mérnököktől vagy programozóktól, akik néha az abszolút minimumot csinálták csak meg annak idején, vagy akár mindent rendben csináltak anno, de különböző okokból a terveik sohasem voltak befejezve, karbantartva, vagy csak egyszerűen elavultak."

Várady Csongor Huba


gremlin - /ɡrɛmlɪn/, főnév, jelentése szörnyecske; a szó a második világháborúból ered, amikor az angol pilóták vagy mérnökök valamilyen nem kívánt zakatolást hallottak a repülők motorházfedelei alatt, akkor a zajt viccesen kis szörnyecskék, gremlinek rosszalkodásának tulajdonították.


Munkahelyi gremlines biztonsági tájékoztatók a második világháborúból


Az első rádió, tévé és mozivászon felfedezése óta azzal bombáznak bennünket, hogy hányféleképpen fogják a technológia vívmányai az emberiség vesztét okozni. Ezek kisebb-nagyobb pánikot keltettek az közösségükben az idő folyamán: míg az egyik első sci-fi rádiójátékban futurisztikus űrlények támadtak az emberiségre, később, a moziban már terminátorok hozták a világ végét, vagy a szürke „izé”, ahogy a nanotechnológia lassan beépült a köztudatba. Ezek legtöbbször viszont nem őrült tudósok malefikus terveinek az eredményei, hanem jóhiszemű, de naiv zsenik idézik elő a világvégét, akik, mint Ikarusz, túl közel repültek a naphoz.


Manapság az egyik leggyakoribb téma a mesterséges intelligencia, a machine learning (gépi tanulás) vagy a deep learning (mélytanulás) tudományágai keltik a tömegekben a nagyobbnál nagyobb aggodalmakat. Felszólalt ellene már Bill Gates, Stephen Hawking, Noam Chomsky meg még sokan mások, és hétről hétre jönnek az újdonságok, hogy milyen határáttörések történnek a szakmában. Az emberek úgy gondolják, hogy megalapozott az okosabbnál okosabb számítógépektől való félelmük.


Én viszont a következőt állítom: sokkal jobban kéne félni a számítógépek múltjától, mint jövőjétől (bár inkább egyiktől sem kéne). Képzeljük el, ha nem a jövő zsenijeitől kell tartanunk, hanem azoktól a múltbeli tudósoktól, mérnököktől vagy programozóktól, akik néha az abszolút minimumot csinálták csak meg annak idején, vagy akár mindent rendben csináltak anno, de különböző okokból a terveik sohasem voltak befejezve, karbantartva, vagy csak egyszerűen elavultak.


Mint a szakma jártasa, hadd nyújtsak egy kis betekintést a kíváncsi olvasónak.


A programozói állás korántsem olyan nyugis, mint azt az átlagember gondolná.


Sokan úgy gondolhatják, jogosan, hogy programozónak lenni király, és a jelenlegi helyzetben az egyik legstabilabb és legjövedelmezőbb szakma. Bár, mint szakmabeli, egyetértek, ez nem jelenti azt, hogy nincsenek hátulütői. A szakmába van csomagolva minden az irodai testi sérülésektől, a lelki problémákon keresztül, egészen a pszichés veszélyekig.

A legszembetűnőbb probléma a programozási projektek beláthatatlansága, legalábbis egy oxfordi kutatás szerint, ahol 5400 software és hardware projektet mértek fel, arra jutottak, hogy egy projekt átlagban a teljes határidejét 7%-kal haladja meg, a becsült költségeit pedig 45%-kal. A még meglepőbb szám, hogy az 5400 projekt elcsúszása miatti becsült pénzügyi károk nagysága 66 milliárd dollárral meghaladja Luxemburg GDP-jét.

Ezeknek a számoknak általában a menedzserek nem nagyon örülnek, úgyhogy a többnyire a dolgozókon, ezekben az esetekben a programozókon próbálják ezt behajtani. Így a projektek utolsó szakaszaiban általában megnő a nyomás rajtuk, és elvárhatják tőlük akár azt is, hogy heti 80 órát dolgozzanak, ami eltarthat hetekig, hónapokig. Ezt Edward Yourdon azonos című könyvében „Death March"-nak, azaz Halálmenetnek, nevezi.

Egyes kutatások szerint a férfi programozók több mint 35% szenved az imposztor-szindrómában, míg a nő programozók 60%-a érez ugyanígy, ami tovább tetézi az átlag programozói stressz-szintet. Ekkor még nem is beszéltünk az átlag fizikai egészségügyi helyzetről, ami gyakran abból adódik, hogy egy programozó élete nagy részében szedentárisan egy zárt irodában, számítógép előtt ül, ha lehet napi 8 órát, amiből rengeteg szem-, ízületi-, csont- és izomkárosodásnak van kitéve.


De a legnagyobb gond valószínűleg mégis a változás sebessége. Gondoljunk csak bele, hogy 10 éve még Windows XP-t használtunk a legtöbben és a Nokia telefon volt a legmenőbb. A baj ezekkel az, hogy azok teljesen más technológiák voltak alapszinten, mondhatni más volt az alapanyaguk. Akik azokat megtanulták programozni, azóta teljesen újra kellett profilálódjanak, hogy a mai korban még megállják a helyüket a fiatal programozók között, akik már a vadonatúj technológiákon nevelkednek fel. Ezért nagyon ritka, hogy egy 35 évnél idősebb programozóval találkozunk, mert a legtöbben megpróbálják kinőni ezt a szakmát és a menedzsment felé kezdenek el kacsintgatni.

Azt gondolná az ember, hogy ez nem tűnik olyan nehéznek, mert a mindennapjainkban nem vesszük észre a technológiai fejlődés sebességét. Sokszor elhangzik a klisé, hogy manapság egy mobiltelefon erősebb, mint a számítógépek 50 éve, amivel a holdra szálltak. Ez nem csak hogy igaz, de olyannyira, hogy a hasonlat olyan, mint egy csirkét egy BMW-vel összevetni. Egy valósabb hasonlítási alap, hogy 20 évvel később, tehát 1990-ben, a világ akkori leggyorsabb szuperszámítógépénél (Cray-2), ami 200 kW-t fogyasztott, egy iPhone 5-ös, ami egy 6 éves telefon, is 10-szer gyorsabb. Az 1997-es Deep Blue, az első szuperszámítógép, ami megvert sakkban egy bajnokot, Gary Kasparovot, is még mindig gyengébb, mint egy ma már elavultnak számító Samsung telefon. Ha belegondolunk, valószínűleg van még olyan ember, aki a Deep Blue-n dolgozott, és még ma is pályán van. Az ilyen szintű technológiai fejlődéssel lépést tartani nem kis munka és nem kis stressz egy ember életében.


Cray-2 szuper-számítógép


De ha a programozók egy része érzelmileg, pszichésen és fizikailag instabil is, emellett még fáradtak és vannak köztük lusták is, nem csoda, hogy becsúsznak kisebb nagyobb hibák, vagy csak egyszerűen nem gondolnak valamit végig és így jutunk a jelenlegi helyzetbe, ahol …


A kedvenc weboldalaink csak hatalmas kártyavárak

Feltételezzük, hogy a kedves olvasó otthon ül és az internetet böngészi. Lehet, a Facebookon keresi fel régi osztálytársait, vagy épp egy receptet guglizik, akár ezt a cikket olvassa. Belegondolt valaha, hogy mi zajlik ezeknek a weboldalaknak a hátterében? Ha fiatalabb az olvasó, akkor lehet emlékszik a suliból a HTML-re, a CSS-re vagy akár a PHP-re. Bár ezek többnyire még mind használatban vannak, a saját problémáikkal, a szebbnél szebb weboldalak, és komplikáltabbnál komplikáltabb szolgáltatások miatt kellett egy újabb és népszerűbb gyerek a térre. Ezt úgy hívják, hogy JavaScript, ami lassan az évek alatt teret hódít a PHP-től, ami eddig a weboldalak igazi mozgatórugója volt, és mindenki utálta. Ma már többen programoznak JavaScriptben, mint bármelyik másik programozó nyelvben.

Ezzel nem lenne semmi baj, csak, hogy a JavaScript egy hatalmas kupi. Egy nagyon keskeny sávban próbál elhelyezkedni az Open Source és Closed Source között, azaz részben a programozói közösség ingyenes munkáján alapszik, és részben hatalmas multicégek belső projektjein.

A felépítése úgy néz ki, mint egy kártyavár, könyvtár épül könyvtárra, és még több könyvtárra, és az egész sok száz könyvtárból áll. Könyvtáraknak nevezik a programozók, az olyan kódot, ami már más által el volt készítve és rendezve, és fel lehet használni, hogy ne kelljen mindent mindig alapjáról felépíteni. A könyvtárak egy nagy részét lelkes önkéntesek tartják karban, másokat pedig különböző cégek, saját kedvük szerint, mint a Facebook React nevű kód könyvtára vagy Google Angular nevűje. Bár egyik sem ideális, az első részre visszatérve, vannak olyan könyvtárak, amit sokszor egyetlen személy tart karban és websiteok százai/ezrei épülnek rá. Úgyhogy elképzelhetjük, hogy mi történik, ha elromlik ebből az egész kártyavárból egy nagyon kicsi könyvtár, ami az egésznek az alján van.

Pont ez történt 2016-ban, amikor egy 28 éves programozó kitörölte a 11 soros könyvtárát, bosszúból, mert meg akarták változtatni annak a nevét, és ezzel hűvösre tette a Googletól a Facebookig az internet egy nagy részét egy rövid időre.

De ha attól féltünk, hogy csak az internet működik úgy, mint egy remegő kocsonya, szeretném megnyugtatni az olvasót, hogy…

Egyik operációs rendszer sem teljesen biztonságos

Emlékezzünk vissza egy pár sorral korábbra, amikor azt mondtam, hogy a programozók lusták. Mit nem szeretnek csinálni a lusta emberek? Újra meg újra írni ugyanazt a kódot. Ennek a következménye, hogy sok program (vagy operációs rendszer részei) csak át vannak másolva egyik verzióból a következőbe.

Így jutunk oda, hogy a 10-es Windowsban, amit valószínűleg az olvasó most is használ, hogy olvassa ezt a cikket, olyan hibát találtak 2016-ban, amit még 1997-ben követtek el a programozók. Ez a hiba Windows 3.1 óta mindegyik verzióban meg volt és majd csak a következő verzióban (11?) tudják kijavítani.

Egyes olvasók most talán önelégülten dőlnek hátra, hogy ők nem az elcsépelt Windowsot használják, hanem a magasztos Apple-s macOSt. Hát rossz hírem van számukra is, és mint ahogy fennebb is céloztam rá: mindegyik operációs rendszernek megvannak a cyber-szivárgásai, amiket lelkes hackelők folyamatosan kihasználnak. Bár elterjedt az a tévhit egy ideje, hogy Mac-re nincsenek vírusok, ez abszolút nincs így. Egy idén februárban készült jelentés alapján a Mac-ek kevésbé biztonságosak, mint a Windowsok, olyan vicces vírus nevekkel, mint a Keydnap (kiejtve a jelentése emberrablás), amivel minden jelszót el lehet lopni a felhasználótól.

Na meg persze ott van a Linux is, amiről lehet, hogy átlagemberek nem is tudják, hogy mi az, mert többnyire programozók használják és a világ szervereinek 99%-át így működtetik, ahová nem sok mindenkinek van belátása. Számukra is rossz hírek várnak, mivel az elmúlt időben olyan biztonsági hibákat (bug) találtak, mint a DirtyCow meg a Shellshock, ez utóbbi nem mellesleg a macOSt is fenyegeti.



Manapság a vírusok meg hibák olyan menők, hogy logokat is csinálnak nekik. Itt látható Dirty Cow és Shellshock


Egy nagyobb probléma viszont az, hogy a világ tele van örökölt kóddal


Az örökölt (legacy) kód egy olyan kódbázist jelent, amit egy programozó csapat vagy nagyon rég írt, vagy egy régebbi technológiával, amit a jelenben már nehéz hozzáadni, alakítani vagy helyettesíteni. Mint amikor egy régi épületben egy nagyon régi liftberendezés van, elképzelhetjük, hogy egyre nehezebb hozzáértő szakembereket találni, hogy megjavítsák, ha elromlik, és hogy milyen nehéz és drága lenne egy ilyen rendszert kicserélni egy modernre.

Az emberben felmerül a kérdés, hogy hogy jutottunk ide? Hát egyfelől a technológiák folyamatosan javulnak, másfelől újraírni a programokat, amik megvannak és működnek ugyancsak nehéz és drága.

Ezáltal hadd mutassam be, hogyan működnek a banki szoftverek. 2017-ben Reuters kiderítette, hogy a bankok belső programjainak 43%-a, az ügyfélszolgálati programoknak 80%-a és a bankautomaták 95%-a COBOL-ban volt programozva. Ezzel nem is lenne semmi baj, csak a COBOL-t 1960-ban készítették és egy szuper-elavult technológia. A programozási nyelvek hieroglifa ekvivalense: komplikált és nem túl kifejező, és hogy egy viszonyítási alapot adjak: körülbelül hússzor (igen 20) annyi sor kódot kell írni belőle, hogy ugyanannyit csináljon, mint egy modern programozási nyelv, mint például a Java.

Felmerül a kérdés: ez azt jelenti, hogy rossz, vagy hogy nem biztonságos? Nem feltétlenül. Csak az előbbi liftes hasonlatra visszautalva, semmilyen programozó nem mer hozzányúlni, mert senki sem a szakértője. Olyan, mint elvárni egy pár autószerelőtől, hogy megjavítsanak egy gőzmozdonyt. Újra lehetne írni persze az egészet, de egy akkora monumentális projekt lenne, hogy ismét csak, senki nem akar hozzányúlni.

A jó hír viszont, hogy még többé-kevésbé karban vannak tartva a banki programok, mert nap, mint nap használják őket, nem, mint a másik jelentkezőnk a legelavultabb technológia díjra: az Amerikai Egyesült Államok nukleáris programja.

Amellett, hogy ugyancsak COBOL-ban volt megírva a nagy része, míg a bankokban legalább a számítógépeket aktualizálták, a nukleáris rakéta programban még a számítógépek is, amin futnak a programok el vannak évülve egy fél évszázaddal. Még olyan floppy-lemezeket használnak, amiket már a privát szférában 1980-ban elavultnak tartottak.

A helyzet nem sokkal rózsásabb a keleti blokkban sem. Bár az oroszok nem nagyon szoktak ilyen infókat megosztani, a saját bevallásuk szerint is a Szovjetunió széthullása után, a 90-es évek elején „egy kicsit megfeledkeztek a nukleáris programjukról” és „kisebb mulasztások történtek”.

Ezek lehet lehangolónak hangzanak, és lehet megijednénk a régi technológiák biztonságosságától, de az igazság az, hogy…


Van fény az alagút végén

A célom nem az volt ezzel a cikkel, hogy egy új fóbiát generáljak, hanem hogy betekintést nyerhessünk egy olyan világba, amiről a legtöbb ember nem is sejti, hogy ott mi zajlik. Az ismert rossztól kevésbé tartunk, mint az ismeretlentől.

Minden példához, amit fentebb említettem kapcsolódik egy-egy jó hír is:

- A programozók szervezeti kultúrája javul és az ipar fejlődésével egyre jobban lekövethetőek és javíthatóak a hibáik

- Egyre több elavult website tér át JavaScript alapúra, ahol folyamatosan azon dolgoznak, hogy a most már ismert kártyavár-effektust csökkentsék

- Az operációs rendszerek generációról generációra biztonságosabbak és egyszerűbb a használatuk

- A nukleáris rakétatelepeket sorra állítják le vagy korszerűsítik (jó hír?) az Egyesült Államokban és Oroszországban.


És a személyes kedvencem:

- Megalakult 2013-ban két nyugdíjas programozó által a Cobol Cowboys nevű cég. A cég nevét a 2000-ben megjelent Space Cowboys nevű Clint Eastwood film mintájára választották, ahol a főhősök nyugdíjazott ex-NASA pilóták, akiknek fel kell menniük az űrbe, megjavítani egy régi szovjet szatellitet. Mint Eastwoodéknak, úgy a Cobol Cowboysnak is a célkitűzése, hogy nyugdíjas szakértőknek adjon munkalehetőséget, hogy szakértelmükkel a régi COBOL alapú rendszereket életben tudják tartani.

Igazán nagy konspirációs elmélet szintű problémák nincsenek a rendszerrel. Nem kell félni. Néha egy-egy dolog elromlik, és olyankor van egy kis közfelháborodás, de ahogy lassan kiszedtük a szigetelőanyagként használt azbesztet a falainkból, úgy lassacskán megszabadulunk az informatika gremlinjeitől is, akik a számítógépek motorházaiban rakoncátlankodnak.

Főtámogató:

© 2020 Éter - Érted.