Programavimas jau seniai nustojo būti asocijuojamas su gykais (technologijų entuziastais) ir hakeriais (įsilaužėliais) iš dešimtojo dešimtmečio filmų. Šiandien tai gerokai aukštesnes už vidutines pajamas garantuojanti prestižinė profesija.

„Kompiuterių programavimas yra skaitmeninio amžiaus, kuriame gyvename, pagrindas. Kiekvieną kartą, kai socialiniame tinkle spaudžiate mygtuką „patinka“, siunčiate el. laišką ar nusistatote žadintuvą telefone, kompiuterinė programa užkulisiuose, vaizdžiai kalbant, trauko virveles“, – sako Šarūnas Žukas, „Omnisend“ inžinerijos skyriaus vadovas.

Algoritmas analitiniam varikliui

Beje, jei manote, kad programavimo istorija prasidėjo vos prieš kelis dešimtmečius, kai buvo išrasti pirmieji spintų dydžio kompiuteriai, jūsų laukia staigmena. Pirmoji programavimo kalba sukurta dar 1883 m. Šis nuopelnas priskiriamas kompiuterių mokslo pioniere vadinamai Adai Lovelace – garsaus anglų poeto lordo Bairono dukrai.

Ji sukūrė specialų algoritmą, skirtą kolegos matematiko Charleso Babbage‘o sugalvotai skaičiavimo mašinai – primityviam mechaninam kompiuteriui, pavadintam „Analitiniu varikliu“. Algoritmas buvo skirtas kalkuliuoti Bernulio skaičius (tai tikimybių teorijos dalis).

Be to, ji pirmoji pasaulio istorijoje iškėlė mintį, kad mašina galėtų „mąstyti“.

Charleso Babbage‘o mechaninis kompiuteris. Wikimedia Commons (Mrjohncummings) nuotr.
Foto: Organizatorių nuotr.

Tiesa, pastarasis ir kitos ankstyvosios „programos“ bei jų rašymo instrukcijos („programavimo kalbos“) buvo labai specializuotos. Dažnai skirtos tik vienam uždaviniui spręsti. Pavyzdžiui, minėtų Bernulio skaičių kalkuliavimui.

Šiuolaikinėmis laikomos programavimo kalbos, skirtos elektra varomiems kompiuteriams, atsirado 20-ajame amžiuje – beveik šimtmečiu vėliau nei A. Lovelace algoritmas.

Foto: Shutterstock

Senosios kalbos

Pirmąją aukšto lygio (ne vienam uždaviniui skirtą) programavimo kalbą „Plankalkül“ Antrojo pasaulinio karo pabaigoje sukūrė vokiečių inžinierius Konradas Zuse. 1949-aisiais pasirodė dar viena mokslui skirta kalba „Assembler“. Ji sukurta Kembridžo universitete ir buvo skirta vienam pirmųjų britiškų kompiuterių „Electronic Delay Storage Automatic Calculator“ (EDSAC). Kitoje Atlanto pusėje (JAV) tais pačiais metais pasirodė „Shortcode“. Ją pasiūlė fizikas Johnas McCauley, vienas iš pirmojo bendrosios paskirties kompiuterio ENIAC kūrėjų.

Bene seniausia iki šiol naudojama programavimo kalba yra FORTRAN arba FORmula TRANslation, kurią 1954-1956 m. pasiūlė IBM. Dėl itin didelio našumo vadinamasis „Modernusis Fortran“ šiandien naudojamas superkompiuteriuose, pavyzdžiui, žvaigždžių sistemų ir galaktikų modeliavimui. Taip pat klimato modelių sudarymui ir kt.

FORTRAN programavimo kortos. Arnoldo Reinholdo nuotr.
Foto: Organizatorių nuotr.

Savo vietą istorijos puslapiuose išsikovojo ir ALGOL (Algoritminė kalba) bei LISP (List Processor). Pirmoji, sukurta jungtinio Amerikos ir Europos mokslininkų komiteto, tapo atspirties tašku kuriant tokias kalbas kaip „Pascal“, „C“, ir „Java“.

O 1958 m. Masačusetso technologijos institute (MIT) gimusi LISP paklojo dirbtinio intelekto (DI) pamatus.

Verslui iki šiol svarbi ir 1959 m. pasirodžiusi COBOL (angl. Common Business Oriented Language). Ji iki šiol naudojama programuojant įterptines ir inžinerines sistemas. Pavyzdžiui, bankomatus ir šviesoforų valdymo sistemas.

Tūkstantmečio kartos atstovams tikriausiai dar iš mokyklos žinomos yra dvi mokymui skirtos kalbos: BASIC (Beginner’s All-Purpose Symbolic Instruction Code) ir PASCAL, dažnai vadinamos „Microsoft“ ir „Apple“ kalbomis. Pirmąją „Microsoft“ septintojo dešimtmečio pabaigoje perėmė iš Dartmuto koledžo studentų. Tuo metu „Apple“ inžinieriai labai pamėgo 1970 m. sukurtą PASCAL ir netrukus sukūrė savo atšaką „Apple Pascal“.

Viena populiariausių ir galingiausių aukšto našumo kalbų laikoma „Bell Telephone Laboratories“ („Bell Labs“) 1972 m. gimusi „C“, skirta naudoti su „Unix“ operacine sistema. Daugelis dabartinių pirmaujančių kalbų yra „C“ išvestiniai dariniai.

Verta paminėti ir tais pačiais metais pristatytą SQL (angl. Structured Query Language), skirtą darbui su duomenų bazėmis.

Modernios kalbos

Po beveik dešimtmečio (1983 m.) „Bell Labs“ gimė ir „C++“, kuri nuo 1986 m. nesitraukia iš TOP 10 programavimo kalbų sąrašo. 1983 m. pasirodė ir „Objective-C“, kuri tapo viena iš pagrindinių kalbų, naudojamų rašyti „macOS“ ir „iOS“ programinę įrangą.

Devintąjį dešimtmetį pasirodė „Perl“, kurią pamėgo Holivudo specialiųjų efektų kūrėjai. O dešimtąjį dešimtmetį atsirado „Python“. Šią britų komikų trupės „Monty Python“ vardu pavadintą kalbą 1991 m. sukūrė Guido Van Rossumas.

Tais pačiais metais „Microsoft“ pristatė „Visual Basic“. Iš kitų ši kalba išsiskiria tuo, kad leidžia iš dalies programuoti „drag-and-drop“ būdu.

1993 m. pasirodžiusi „Ruby“ yra pirmoji kalba sukurta ne vakariečių. Jos autorius - japonas Yukihiro Matsumoto.

Po poros metų (1995 m.) gimė „Java“, tapusi viena iš populiariausių programavimo kalbų pasaulyje. Įdomu tai, kad ją Jamesas Goslingas kūrė kaip kalbą interaktyviam televizijos projektui.

Programavimas
Foto: Shutterstock

Taip pat 1995 m. dienos šviesą išvydo dvi „interneto kalbos“ PHP ir „JavaScript“. Jos naudojamos žiniatinklio paslaugų ir platformų programavimui, svetainių kūrimui, priežiūrai ir darbui su serveriais.

Šio tūkstantmečio kalbos ir „Google“ indėlis

XXI amžius pradžią žymi „C#“. Ją 2000 m. sukūrė „Microsoft“, siekdama suderinti plačias „C ++“ galimybes su „Visual Basic“ paprastumu.

Netrukus po to (2003 m.) pasirodė „Groovy“ ir „Scala“. Pastaroji sujungia matematinį funkcinį ir organizuotą objektinį programavimą. Be to, yra suderinama su „Java“. Dėl to ji naudojama vystant „Android“ operacinę sistemą.

Visgi, „Google“ to neužteko. 2009 m. paieškos milžinė pristatė „Go“. Kompanija šią kalbą sukūrė siekdama išspręsti problemas, kylančias didelės apimties sistemose. Dėl savo paprastos ir modernios struktūros „Go“ greitai išpopuliarėjo. Lietuvoje bene pirmoji aktyviai naudoti „Go“ ėmė rinkodaros automatizavimo sprendimų bendrovė „Omnisend“.

Tiesa, kai ji pradėjo veiklą, „Go“ dar ne buvo. Kompanija startavo su PHP, bet greitai išaugo jos galimybes ir perėjo prie „Node.js“ (tai „JavaScript“ aplinka). Visgi, netrukus paaiškėjo, kad „Node.js“ turi esminių našumo trūkumų.

„Kadangi „Omnisend“ nuo pat pradžių dirbo su dideliais kiekiais duomenų, ir buvo aišku, kad jų tik daugės, labai svarbus buvo itin efektyvus infrastruktūros – tiek procesorių, tiek darbinės atminties (RAM) – panaudojimas. Dar vienas svarbus aspektas, lėmęs pasirinkimą, toks, kad „Go“ nereikalinga specifinė aparatinė įranga. Tai labai patrauklu, nes specifiškumas dažnu atveju reiškia didesnę kainą“, – komentuoja „Omnisend“ inžinerijos skyriaus vadovas Šarūnas Žukas.

Taigi įmonė vėl ėmė ieškoti naujos kalbos. Kaip tik tuo metu „Google“ buvo išleidusi pirminę „Go“ versiją.

„Dar nebuvo stabilios versijos. Lietuvoje iš esmės nebuvo daug žmonių, kurie mokėtų šią kalbą. Bet buvo tikėjimas, kad „Google“, kuri dirba su tikrai dideliais kiekiais duomenų, skirs pakankamai dėmesio infrastruktūros našumui užtikrinti. Aišku, „Google“ mėgsta savo produktus ir numarinti, tad rizika buvo, – šypteli Š. Žukas. – Be to, žmonėms teko per kelis mėnesius išmokti kalbą ir perrašyti programinę įrangą. Bet statymas atsipirko – „Go“, palyginti su kitomis tai pačiai sričiai skirtomis kalbomis, naudoja tikrai nedaug atminties ir procesorių resursų“.

Beje, „Omnisend“, iš Silicio slėnio semiasi ne tik technologinio įkvėpimo. Bendrovė perima ir kultūrą bei geriausias praktikas. Pavyzdžiui, reguliarius „paklausk manęs bet ko“ susitikimus su vadovu. Taip pat veiklos metodikas, tokias kaip GIST planavimas.

Verta pridurti, kad „Go“ yra viena šviežiausių kalbų pasaulyje. Už ją jaunesnė yra tik „Swift“, kurią 2014 m. pristatė „Apple“, ieškodama alternatyvų „C“, „C ++“ ir „Objective-C“.

„Programavimo kalbos leidžia žmonėms bendrauti su mašinomis. Ir, nepaisant pastaraisiais metais populiarėjančio „No-Code“ judėjimo bei negausių eksperimentų su programomis rašančiomis kitas programas, išlieka bene vienintelis tiltas jungiantis žmones ir mašinas“, – sako „Omnisend“ inžinerijos skyriaus vadovas.