Informacinės technologijos šiandien naudingos kiekvienam iš mūsų, o programavimas tampa ne tik darbe reikalinga kompetencija, bet ir laisvalaikio pomėgiu. Dažnai programavimo mokomasi mokykloje, specialiuose kursuose, tačiau būna atvejų, kai to išmokstama ir vaikystėje, dar nesuprantant, kad cikliškas simbolių rašymas vadinamas programavimu. Tokių neeilinių gabumų pavyzdys yra Vilniaus universiteto Matematikos ir informatikos fakulteto Informatikos instituto mokslininkas dr. Audrius Šaikūnas.

2020 02 20 A Saikunas380x250Programuoti pradėjo dar prieš įsigydamas kompiuterį

Dr. A. Šaikūnas kompiuteriais domėtis pradėjo dar vaikystėje, o programavimo ėmėsi net neturėdamas kompiuterio. „1980–1990 m. Japonijoje egzistavo atskira kompiuterių klasė, kurie buvo vadinami kišeniniais kompiuteriais. Jie priminė skaičiavimo mašinėles, tačiau juose buvo galima programuoti primityvia programavimo kalba. Būtent tokį kompiuterį man padovanojo tėtis“, – pasakoja dr. A. Šaikūnas.

Nors prie kompiuterio pridėtos instrukcijos vokiečių kalba jis nesuprato, kompiuteriu mokėsi naudotis kitais būdais.

„Prie kompiuterio buvo pridėti programavimo pavyzdžiai. Nuolat juos įvedinėdamas pradėjau suprasti, ką tos įvestos eilutės reiškia. Kai trejais metais vyresnis brolis pradėjo mokytis informatikos mokykloje ir namo parsinešė „Pascal“ kompiliatorių pastebėjau, kad šis programavimas labai panašus į tai, ką aš dariau su savo kišeniniu kompiuteriu. Tad programuoti išmokęs tarsi atgalinės inžinerijos būdu, gebėjau programuoti ir su „Pascal“, o vėliau ir kitomis programavimo kalbomis“, – teigia pašnekovas.

Informatika A. Šaikūnui patiko bei sekėsi ir mokykloje, tad pasirinkimas VU MIF studijuoti programų sistemų studijas buvo natūralus. Magistrantūroje A. Šaikūnas pasirinko informatikos studijas, jas sėkmingai tęsė ir doktorantūroje.

Mokslinių tyrimų temą padiktavo daugeliui informatikų aktuali problema

A. Šaikūno teigimu, jo pasirinkta mokslinių tyrimų sritis yra tarsi informatikos mokslo fundamentika. Mokslininkas pabrėžia, kad programavimo kalbų kūrimas – labai sudėtingas procesas, nes laikui bėgant pradeda ryškėti net ir pačių geriausių programavimo kalbų trūkumai. Tokiu atveju įprasta ne juos taisyti, o kurti naują programavimo kalbą.

„Sumanęs kurti savo programavimo kalbą, susidūriau su tais pačiais sunkumais, kaip ir kiti informatikai – ji turėjo trūkumų. Tad išsikėliau sau tikslą – sukurti tokią kalbą, kurią galima plėsti, nekeičiant programavimo kalbos kompiliatoriaus kodo, kitaip tariant – plečiamąją programavimo kalbą. Ją būtų galima papildyti parsisiunčiant nedidelį paketą prie programavimo kalbos, o juos kurti galėtų ne tik programavimo kalbos autoriai, bet ir jos naudotojai“, – pasakoja mokslininkas.

Pradėjęs kurti plečiamąją programavimo kalbą A. Šaikūnas suprato, kad to padaryti nepavyks, kol nebus tinkamo sintaksinės analizės metodo, leidžiančio plėsti pačią programavimo kalbą. Sintaksė kompiuterinėje lingvistikoje nagrinėja kompiuterinio kodo žodžių tarpusavio ryšius, sakinių sandarą, jų sudarymo būdus ir taisykles. Sukurti sintaksinės analizės metodą – tai sukurti simbolių eilutės struktūrą pasitelkiant gramatiką.

„Stengdamasis sukurti norimą programavimo kalbą, pirmiausia turėjau sukurti algoritmą, kuris palaikytų dinamiškai besikeičiančią gramatiką, tad mano disertacijos tema gimė iš praktinio poreikio. Aš norėjau programavimo kalbos, kurios nebuvo, nes nebuvo tinkamo sintaksinės analizės metodo, tad nusprendžiau sukurti patį metodą“, – teigia A Šaikūnas.

Earley virtualioji mašina palengvins programuotojų darbą

A. Šaikūno sukurtas sintaksinės analizės metodas dar vadinamas Earley virtualiąja mašina. Pagrindinė šios mašinos ypatybė – gebėjimas analizuoti programavimo kalbas, kurių gramatikos dinamiškai kinta.

„Paprastai kuriant programavimo kalbą leksinė analizė ir sintaksinė analizė yra atskiri žingsniai. Pirma vykdome leksinę analizę – įvestį verčiame į žodžius, tada vykdome sintaksinę analizę – tuos žodžius sugrupuojame į struktūras ir atvaizduojame jas kaip abstraktų sintaksės medį, kuris reikalingas tolimesniems kompiliavimo etapams“, – pasakoja mokslininkas.

Šios virtualios mašinos naudojimą kol kas riboja viena sąlyga – nėra tam pritaikytų programavimo kalbų. „Ją naudoti bus galima tada, kai sukursime naują programavimo kalbą, palaikančią šį analizės metodą, arba jį integruosime į jau egzistuojančias kalbas“, – teigia dr. A. Šaikūnas.

Mokslininko tikslas – kuo platesnis sukurto analizatoriaus naudojimas

Paklaustas, kaip greitai informatikos srityje pritaikomos naujos technologijos, dr. A. Šaikūnas pabrėžia, kad tai priklauso nuo informatikos srities. „Tam tikrose srityse, vos tik atsiranda nauja technologija, ją bandoma taikyti iškart. Kuriant programavimo kalbas, naujų technologijų taikymas yra konservatyvesnis, nes programinės kalbos kūrimo darbai užsitęsia: kalbą reikia išsamiai dokumentuoti, pateikti pavyzdžių, kad ją galėtų suprasti vartotojai“, – paaiškina mokslininkas.

Be to, svarbu, kad, pradėjus kalbą taikyti praktiškai, jos evoliucija sulėtėja: „Programavimo kalbas pradėjus naudoti vartotojams, svarbių inovacijų jau nebūna. Jeigu atsiranda sistemiškai naujų pakeitimų, atsiranda ir nauja programavimo kalba“, – sako dr. A. Šaikūnas.

Mokslininkas pabrėžia, kad svarbus kriterijus, apibūdinantis programavimo kalbos funkcionalumą – jos naudotojų skaičius. Todėl pačios populiariausios programavimo kalbos yra atviro kodo. Tai, anot dr. A. Šaikūno, dažnu atveju užkerta kelią programavimo kalbų komercializacijai.

„Programavimo kalbos augimą lemią jos prieinamumas, tad atviro kodo kalbos auga sparčiausiai. Komercinės programavimo kalbos yra nedideli projektai, turintys ribotas galimybes. Šiuo atveju analizatoriaus tikslas yra toks, kad ateityje kuo daugiau programavimo kalbų galėtų juo naudotis ir kad naujai kuriamos programavimo kalbos būtų geresnės už tas, kurios yra dabar. Šis analizatorius yra duoklė informatikos mokslui“, – teigia dr. A. Šaikūnas.