Prognozuojama, kad 2023 metais globalus programuotojų skaičius pasieks arti 28 mln. Pasaulyje šiuo metu priskaičiuojama daugiau kaip 1000 kompiuterių programavimo kalbų, todėl norintiems išmokti programuoti pasirinkimas – daugiau negu platus.
Kiek geras programuotojas turi mokėti kalbų? Kurias iš jų mokytis labiausiai verta? Ir ar sparčiai keičiantis technologijoms nenutiks taip, kad šiandien išmokta programavimo kalba jau rytoj bus niekur nebepritaikoma?
Pasak kalbintų KTU programavimo specialistų, didesnė dalis šio įspūdingo skaičiaus tėra eksperimentinės, vos po keletą metų gyvuojančios kalbos, kurias naudoja siauras vartotojų ratas. Tuo tarpu pagrindinės programavimo kalbos naudojamos dešimtmečiais.
Kauno technologijos universiteto Informatikos fakulteto (KTU IF) docentai Tomas Blažauskas ir Eimutis Karčiauskas įsitikinę – geri programuotojai neprivalo būti poliglotais. Vis dėlto, gebantys daugiau turi šansą tapti komandų vedliais.
Ne vieną Lietuvos programuotojų kartą išugdžiusių dėstytojų teigimu, programavimo kalbos, panašiai kaip ir įprastos, turi savą gyvavimo ciklą, todėl „išgyvena“ ir pakilimo, ir nuosmukio etapus. Tarkime, jau nebegyvybingos ir mirusios kalbos etiketę drąsiai galima priklijuoti PL1 programavimo kalbai. Ši IBM360 kompiuterių serijai ir jos klonams naudota kalba nebeteko prasmės, kai atsirado mikrokompiuteriai.
„Paradoksas, bet kai kurias senas kalbas labai sunku numarinti“, – pastebi T. Blažauskas, kaip pavyzdžius įvardindamas Fortran ar Cobol programavimo kalbas. Anot jo, tokių programavimo kalbų masiškai nesimokoma bene 3 dešimtmečius, bet yra daugybė didelių, tebeveikiančių ir šiomis kalbomis parašytų sistemų. Pavyzdžiui, kai kurias jų naudoja bankai.
„Sistemos perrašymas kainuotų tiek, kad to daryti neapsimoka – tokiems sprendimams palaikyti ieškomi arba apmokomi specialistai. Tuo tarpu naujas, lanksčias, suderinamas kalbas daug lengviau ir pakeisti, ir numarinti“, – juokauja jis.
Programų sistemų ir programų sistemų inžinerijos studentams dėstantys programuotojai pasakoja, kad kalbos gali ir mutuoti. Štai kažkada buvusi revoliucinga Pascal kalba plačiai naudota ir komerciniams projektams, ir mokyklose apmokant mokinius. Atėjo momentas, kai ji evoliucionavo į objektinį PascaL, tada tapo Delphi kalba, o pastaroji sėkmingai gyvuoja iki šios dienos.
– Kaip atsiranda programavimo kalbos? Kokia jų paskirtis?
T.Blažauskas: Jos atsiranda labai įvairiai. Kartais programavimo kalbos sukuriamos siekiant išspręsti tam tikras problemas – tarkime, našumo, patikimumo, naujos ar specifinės įrangos panaudojimo. Kai kurios jų skiriamos tam tikrai specializuotai sričiai: mokymuisi, žaidimų kūrimui, matematinių sprendimų ar verslo sistemų programavimui. Yra atvejų, kai suprogramuoti naują kalbą žmogų paskatino hobis.
E.Karčiauskas: Programavimo kalbos yra skirtos palengvinti programuotojų darbą, sprendžiant duomenų apdorojimo uždavinius. Atsiradus naujiems uždaviniams, prireikia ir naujų, efektyvesnių būdų tų uždavinių sprendimui.
– Ar programavimo kalbų autoriai yra tik pavieniai išradėjai? Ar tai labiau komandinis darbas? Kieno iniciatyva šios kalbos gimsta? Ir kiek jų kūrimu suinteresuotas verslas arba valdžia?
T.Blažauskas: Kalbą tikrai gali sukurti ir vienas žmogus, studijų metu patys tai išbandėme, tačiau sukurti tokią kalbą, kuri būtų plačiai naudojama, yra esminis pasiekimas. Juk nepakanka sukurti vien tik kalbos sintaksę, reikia ir daugybės bibliotekų, karkasų, kad programuojant ta kalba būtų galima išnaudoti modernias technologijas. Todėl dažniau tai daugelio žmonių darbas. Neretai populiarias kalbas kuria ir įveda į rinką stiprios įmonės. Kartais kalbai tobulinti ir palaikyti sukuriamos atskiros organizacijos. Taip atsitiko su populiaria Node.js kalba.
Kaip įdomesnį pavyzdį galima prisiminti JavaScript kalbos sukūrimą, kuri yra naršyklėms skirta programavimo kalba. Jos prototipą vienas žmogus Brendan Eich sukūrė vos per 10 dienų, o kalba lig šiol yra viena labiausiai paplitusių pasaulyje.
E.Karčiauskas: Pirmąsias programavimo kalbas kūrė patys kompiuterių gamintojai. Vėliau susiformavo savarankiška programuotojų profesija ir atsirado lyderiai, kurie kūrė kitų programuotojų darbui reikalingas priemones. Dažniausiai kalbas kuria kolektyvai, tačiau yra ir individualių autorių kūrinių. Konkrečiai Pascal kalbą 1970 m. sukūrė Šveicarijos mokslininkas Niklaus Wirth; C kalbą 1972-1973 metais – JAV kompiuterių mokslininkas Dennis M. Ritchie.; C++ sukūrė 1979 metais JAV dirbantis Danijos mokslininkas Bjarne Straustrup. Tuo tarpu PL1, Java, C# yra komandinio darbo pavyzdžiai.
Žinomiausias vyriausybės iniciatyva atsiradusios kalbos pavyzdys – ADA programavimo kalba, sukurta 1980 m. JAV gynybos ministerijos užsakymu. Deja, ji buvo labai griozdiška ir savo populiarumu už JAV ribų nepasižymėjo. O štai Java kalbos kūrimą inicijavo „Sun“ kompanija, planavusi ją panaudoti mikroįrenginių valdymui.
– Kodėl vienas programavimo kalbas moka milijonai programuotojų, o kitos taip ir neprigyja? Kokios priežastys tai lemia?
E.Karčiauskas: Turbūt pagrindinė priežastis yra rinka. Didžioji programuotojų dalis nori nuolatinio ir stabilaus darbo, o tai užtikrina populiariausių kalbų mokėjimas. Tik nedidelis programuotojų skaičius yra motyvuotas ieškoti naujoviškų sprendimų, susijusių su eksperimentinėmis kalbomis.
T.Blažauskas: Rinkai reikia naudoti patikimas, aukšto produktyvumo programavimo kalbas, todėl tokios kalbos prigyja lengviausiai. Bet tai nereiškia, kad nereikalingos kitos, mažesnio populiarumo ar specializuotos programavimo kalbos. Dažnai tokių kalbų žinovai uždirba daugiau nei populiarių kalbų žinovai, nes nėra plataus tokių specialistų pasirinkimo, taigi tenka jiems reikia mokėti daugiau.
– Kiek vienas programuotojas paprastai moka kalbų? Ar dažnai tarp jų būna poliglotų, t. y., mokančių įspūdingą skaičių?
E.Karčiauskas: Mūsų absolventai tikrai moka bent 4 programavimo kalbas: Java, C#, Matlab, JavaScript. Nemaža dalis turi įvairių eksperimentų patirtį dar su 3-5 kalbomis. Didžioji dalis programuotojų, išmanančių daugiau kalbų, tampa komandų lyderiais. Per savo karjerą man duoną teko užsidirbti naudojant 10-12 programavimo kalbų, dalis jų – šiandien jau praktiškai nebetaikomos.
T.Blažauskas: Studijuojantys Programų sistemas per 4 metus išmoksta nuo 5 iki 10 programavimo kalbų. Nemanau, kad apskritai privaloma būti poliglotais ir puikiai žinoti daugiau nei keletą kalbų. Tačiau labai svarbu turėti supratimą apie įvairias programavimo kalbų paradigmas, taikymo sritis, privalumus ir trūkumus. Programavimo kalba tėra įrankis ir programuotojui svarbu gebėti darbui pasirinkti tą įrankį, kuris tinkamiausias duotai problemai spręsti.
– Kurią iš programavimo kalbų asmeniškai Jūs rekomenduotumėte mokytis? Kodėl? Ir nuo ko tai reikėtų pradėti?
E.Karčiauskas: Šiais laikais mokytis programavimo siūlyčiau pradėti nuo Java kalbos, kadangi tai yra labiausiai išbaigtas ir pakankamai paprastas C kalbos šeimos atstovas, kas užtikrina komfortą darbo rinkoje. Tuo tarpu C# yra komplikuotesnė kalba, todėl norint jos mokytis, geriau turėti daugiau patyrimo. Python rekomenduočiau pradėti, kai labiau pribręs poreikis dirbtinio intelekto uždaviniams. Gaila, bet mūsų mokyklose yra dar vis užsilikusi C++ kalba, kuri Europoje jau seniai pripažinta netinkama dėl savo griozdiškumo ir dviprasmybių.
T.Blažauskas: Rekomenduoti konkrečią kalbą sunku, nes tai labai individualu. Ir iš tiesų niekas nežino, nuo ko pradėti, kuri kalba tinkamiausia pradėti mokytis programuoti. Kartais atrodo, jog sėkmė labiau priklauso nuo mokytojo patirties ir pastangų negu nuo konkrečios kalbos ar priemonės pasirinkimo. Manau, kad labai priklauso nuo besimokančiojo amžiaus. Mokant programavimo vaikus, labai svarbu neišgąsdinti sudėtingumu ir jų nenuvilti. Mokymuisi galima pasirinkti žaidimus, kurie moko programuoti. Pavyzdžiui, codecombat.com, codingame.com. Šiuose žaidimuose galima pasirinkti, kuria kalba spręsti uždavinius, valdyti sudėtingumą. Vėliau pereiti prie supaprastintų programavimo aplinkų, tarkime, scratch, greenfoot. Na, o tuomet naudoti pilnavertes programavimo aplinkas, kurios skatina kūrybiškumą. Beje, suaugę žmonės dažnai nori išmokti ne kiek konkrečią programavimo kalbą, kiek tam tikras technologijas ar tam tikros srities programų kūrimą, pavyzdžiui, tinklalapių kūrimą. Čia vėlgi svarbu pasirinkti tinkamas priemones, kursus, kurie leidžia metodiškai perprasti principus.