Java, PHP či Kotlin: Aký programovací jazyk sa naučiť?
Ján Halaša|17.11.2022
Chcete sa naučiť programovať a neviete, s ktorým programovacím jazykom začať? Tento článok vám pomôže rozhodnúť sa.
Programovacie jazyky majú často svoje určenie, pre ktoré sú navrhnuté, alebo doménu, kde sa im podarilo vyniknúť. Väčšinou je ľahšie vybrať si jazyk podľa toho, aké typy aplikácií sa v ňom ľahko píšu, než len podľa charakteristík daného jazyka. Preto si prejdeme rôzne kategórie aplikácií, jazyky, ktoré sú pre ne vhodné, ako aj ich klady a zápory.
1. Mobilné aplikácie
Vývoj mobilných aplikácii sa hýbe pomerne rýchlym tempom, pretože mobil už má každé malé dieťa. Mobilné aplikácie môže vývojár programovať v natívnych jazykoch, pre Android je to Java/Kotlin a pre iOS je to Objective-C/Swift, alebo v takzvaných multiplatformových frameworkoch, v ktorých vývojár ideálne napíše zdrojový text aplikácie raz a aplikáciu vie zostaviť ako pre Android, tak aj pre iOS.
Android
Java
Java je objektovo orientovaný jazyk. Je obľúbeným jazykom už dve desaťročia a v roku 2018 bol vyhlásený za 5. najpopulárnejšiu technológiu. Je to multiplatformový jazyk, v ktorom ide vyvíjať ako desktopové, tak aj serverové a mobilné aplikácie pre všetky rozšírené operačné systémy.
Klady
Je to veľmi obľúbený a rozšírený jazyk, preto je dostatok materiálov na štúdium a obrovská komunita, ktorá pomôže pri prípadných ťažkostiach. Tak isto je pre tento jazyk viac pracovných ponúk, vzhľadom na jeho rozšírenosť. Ak sa človek naučí Javu, bude vedieť robiť viacero typov aplikácií.
Zápory
Google, ako spoločnosť vyvíjajúca Android, uprednostňuje Kotlin pre vývoj Android aplikácií. Je to dané asi hlavne licenčnými spormi s Oracle, ale je možné, že Google bude postupne Javu zanedbávať.
Taktiež podpora nových verzií Javy prichádza s oneskorením.
Java tiež neobsahuje niektoré moderné prvky jazyka, napr. podporu nemennosti objektov (immutability) alebo kontrolu neprázdnosti premenných – niektoré iné jazyky vyžadujú označiť premenné, ktoré môžu byť prázdne, čo znižuje náchylnosť na chyby v kóde.
Kotlin
Kotlin je staticky typovaný programovací jazyk, ktorý sa prekladá do Java bytecode, ktorý beží na Java Virtual Machine. Je to moderný objektovo orientovaný jazyk, ktorý umožňuje efektívne písať zdrojové texty.
Klady
Kotlin je navrhnutý tak, aby zápis jeho kódu bol efektívny, takže ak porovnáte aplikáciu napísanú v Jave s aplikáciou napísanou v Kotline, tak tá v Kotline bude obsahovať menej zdrojového textu. Keď si na Kotlin zvyknete, bude sa vám zdrojový text jednoduchšie čítať a bude pre vás prehľadnejší. V Kotline viete používať aj knižnice napísané v Jave a dokonca používať súčasne v jednom projekte aj Javu aj Kotlin, keďže sa oba jazyky prekladajú do Java bytecode.
Zápory
Kotlin sa zatiaľ od svojho vzniku v roku 2016 príliš nerozšíril, a teda je dostupných menej materiálov na štúdium a menšia komunita, ktorá by mohla v prípade problémov pomôcť. Kotlin je tiež pomalší pri kompilácii v porovnaní s Javou.
Kotlin má zložitejšiu syntax (zápis kódu) ako Java a treba vynaložiť viac úsilia na jej naučenie sa.
iOS
Swift
Swift je kompilovaný programovací jazyk od Apple. Je relatívne nový a slúži hlavne pre vývoj aplikácií pre Apple platformy (macOS a iOS), je ale dostupný aj pre Linux a Windows. Pre vývoj iOS aplikácií je potrebné mať počítač Apple (napr. MacBook). Pre vývoj slúži hlavne prostredie XCode.
Klady
Oproti jazyku Objective-C, ktorého je nástupcom, obsahuje prvky moderných programovacích jazykov a znižuje náchylnosť na chyby odstránením niektorých prvkov zdedených z jazyka C.
Zápory
Jazyk je využiteľný takmer výhradne len pre Apple platformy a je ťažké odhadnúť, či sa jeho využiteľnosť rozšíri v budúcnosti.
2. Multiplatformové mobilné aplikácie
Ide o aplikácie, ktoré napíšete raz a viete ich zostaviť pre viacero operačných systémov. Nástrojov, pomocou ktorých sa dajú písať multiplatformové aplikácie, je viac. Napríklad Flutter, React Native, Cordova, Xamarin. Flutter je z nich najmladší, ale stal sa za krátku dobu asi najpoužívanejším z nich.
Flutter
Technológia Flutter používa Dart ako programovací jazyk pre tvorbu aplikácií. Je to objektovo orientovaný jazyk s množstvom vymožeností, ktoré moderné jazyky používajú. Ak chcete napísať aplikáciu vo Flutteri, stačí sa naučiť jediný jazyk – tým je práve Dart, a poznať komponenty, ktoré Flutter používa. Žiadnu inú technológiu k tomu ovládať nepotrebujete.
Klady
Dart má jednoduchú syntax pripomínajúcu C#, Java. Veľmi ľahko sa učí, a preto je vhodný aj pre začiatočníkov. Je intuitívny a efektívny na písanie.
Zápory
Jazyk Dart sa okrem frameworku Flutter nerozšíril do iných technológií, aj keď boli snahy ho používať v Angulari (aplikácie bežiace v prehliadači) a dá sa použiť aj na písanie serverových aplikácií. Preto jeho naučením sa nezískate takú výhodu ako keby ste sa naučili napríklad jazyk Java, ktorý má širšie použitie.
3. Aplikácie bežiace v prehliadači
Ide o aplikácie typu klient-server, kde klientská časť (používateľské rozhranie) beží vo webovom prehliadači. Príkladom môže byť emailový klient (Gmail) alebo e-shop. Tieto aplikácie väčšinou vyžadujú serverovú stranu ako poskytovateľa dát a iných služieb. Je ale možné spraviť aj samostatné aplikácie. Tieto aplikácie sa typicky neinštalujú, treba ich ale nasadiť na server s verejnou URL adresou. Tiež majú svoje obmedzenia dané prehliadačom – napr. nemôžu jednoducho pristupovať k súborom uloženým na disku používateľa.
JavaScript
V prehliadačoch sa dá spúšťať len kód v jazyku JavaScript. Existujú jazyky, ktorých zdrojové kódy sa dajú transformovať do JavaScriptu, takže nie je nutné použiť priamo JavaScript, ale je veľmi dobré ho poznať. JavaScript je interpretovaný (nekompilovaný) jazyk, ktorý nevynucuje deklaráciu typov premenných.
Klady
Hlavnou výhodou je asi to, že JavaScriptový program bude schopný bežať v každom modernom prehliadači. Vývoj JavaScriptu je štandardizovaný, akurát si treba dať pozor na to, že nie všetky prehliadače podporujú všetky nové funkčnosti.
Pre vývoj JavaScriptových aplikácií nie je potrebné žiadne špeciálne vývojové prostredie – stačí napísať kód a otvoriť ho v HTML stránke v prehliadači. Prehliadače poskytujú aj nástroje (developer tools) pre debugovanie a ladenie výkonu.
JavaScript z veľkej časti využíva syntax (formu zápisu) spoločnú s jazykmi, ako sú C, Java či C#, a teda je výhodné ho poznať, ak sa chcete neskôr naučiť niektorý ďalší z týchto jazykov.
Zápory
JavaScript má inú koncepciu objektového programovania ako väčšina iných bežných jazykov (Java, C#, Python). Jej porozumenie vyžaduje extra štúdium, ale nie je nutné na začiatku – väčšinou stačí vedieť, ako používať existujúce triedy.
Beztypovosť premenných zvyšuje náročnosť údržby alebo rozvoja väčších programov.
Treba si dať pozor hlavne na porovnávanie objektov pomocou operátora “==”, ktoré môže produkovať neočakávané výsledky (napr. [ ] == 0). Stačí ale namiesto neho používať alternatívny operátor “===”.
Pre vytvorenie väčšej aplikácie je potrebné vybrať si a naučiť sa nejaký framework typu Angular, React.js, Vue.js.
TypeScript
TypeScript je jazyk rozširujúci JavaScript hlavne o typované premenné. Je to veľmi nápomocné pri tvorbe väčších aplikácií, lebo nám prekladač jazyka vie odhaliť viac chýb a vývojové prostredie (IDE) môže byť nápomocnejšie pri písaní kódu – viac rozumie tomu, čo daný kód robí.
TypeScript sa prekladá do JavaScriptu a preberá všetky jeho existujúce funkčnosti, takže prechod naň je jednoduchý, akurát už vyžaduje extra krok prekladu – nedá sa priamo spustiť v prehliadači.
HTML, CSS
HTML ani CSS nie sú programovacie jazyky, ale sú to technológie, ktoré je potrebné poznať pre tvorbu aplikácií pre webové prehliadače. HTML je jazyk pre štruktúrovanie dokumentov alebo aplikácií. CSS je jazyk pre vizuálne štýlovanie HTML prvkov. Je jednoduché sa ich naučiť a na začiatku stačí vedieť len malú časť týchto jazykov.
4. Desktopové aplikácie a hry
Windows s oknami
C#
Jazyk C# bol vytvorený Microsoftom ako jeho alternatíva k Jave. Jedná sa o objektovo orientovaný, kompilovaný, typovaný jazyk. Podobne ako u Javy, C# sa kompiluje do IL bytecode formátu a ten je pri spustení prevádzaný na natívny kód. Je dosť zviazaný s .NET frameworkom a existuje preň aj obľúbený nástroj pre tvorbu hier – Unity.
Výhody
Jedná sa asi o najvhodnejší jazyk pre vývoj Windows aplikácií, u ktorých nie je výkon najpodstatnejším faktorom. Jazyk obsahuje mnohé moderné prvky a má veľké množstvo knižníc, ktoré sa dajú použiť pri tvorbe aplikácií.
Nevýhody
Vývoj aplikácií s grafickým rozhraním v C# je stále len pre Windows. Ich rýchlosť je vo všeobecnosti nižšia oproti tomu, keby boli napísané v C++.
C++
Jazyk C++ vznikol z jazyka C pridaním podpory tried a objektov a vytvorením väčšej štandardnej knižnice. Je to kompilovaný, typovaný jazyk. Najväčšiu popularitu zažil v 90-tych rokoch. V C++ sú napísané mnohé hry. Najznámejším nástrojom pre tvorbu hier je asi Unreal Engine. Je v ňom tiež možné písať aplikácie pre mnohé platformy.
Výhody
Jeho hlavnou prednosťou je možnosť písať veľmi optimalizovaný kód. Je v ňom tiež možné písať aplikácie, ktoré sa dajú preniesť na iné platformy.
Nevýhody
Jazyk nesie mnohé nevýhody jazyka C – hlavne náchylnosť na chyby spojené so správou operačnej pamäte a nutnosť tvorby hlavičkových súborov.
Bez GUI
Táto kategória je dosť všeobecná a nemá nejaké výrazné obmedzenia. Programy bez grafického prostredia – pre spúšťanie z príkazového riadku sa dajú vytvoriť väčšinou programovacích jazykov. Často ide o programy pre spracovanie dát alebo automatizáciu procesov operačného systému.
Python
Python je skriptovací, netypovaný všeobecný jazyk. Je často používaný pre matematické výpočty, štatistiku, machine learning. Jeho výhodou je, že preň existuje veľké množstvo knižníc. Aplikácie napísané v ňom môžu byť spustiteľné na rôznych platformách, na ktorých je Python dostupný. Dá sa použiť aj na tvorbu multiplatformových desktopových aplikácií s grafickým prostredím (cez PyQT).
Bash
Bash je jazyk slúžiaci hlavne ako shell (interpreter príkazového riadku) v operačných systémoch, ako sú Linux alebo macOS. Je preto na týchto systémoch takmer vždy dostupný, čo robí skripty napísané v ňom ľahko použiteľnými. Jeho základná znalosť je veľmi užitočná pre pokročilých používateľov týchto operačných systémov. Jazyk vie ľahko využívať funkčnosti externých programov a kombinovať ich. Nie je ale vhodný na písanie všeobecných aplikácií.
5. Serverové aplikácie
Ide o aplikácie bežiace na serveroch, ku ktorým sa pristupuje cez sieť. Väčšinou majú svoje klientske aplikácie bežiace v prehliadači alebo mobilné aplikácie. Sú teda vhodnou voľbou pre programátorov, ktorí nemajú radi tvorbu používateľského rozhrania.
Java
Java je asi najrozšírenejší jazyk pre písanie serverových aplikácií. Už asi 20 rokov existuje veľká aktívna komunita vyvíjajúca nástroje pre tvorbu týchto aplikácií – či už štandardizovanú verziu (nazývanú teraz Jakarta EE) alebo nezávislé nástroje (napr. Spring framework). Pre Javu existuje veľké množstvo knižníc a technológií, ktoré uľahčia tvorbu aj komplikovaných aplikácií.
Aplikácie v Java sú schopné bežať na ľubovoľnej platforme, pre ktorú je dostupný Java Runtime Environment (JRE). Java ako jazyk sa stále aktívne vyvíja a vylepšuje, ale jej vývoj nie je divoký – nehrozí, že by dnes napísaná aplikácia prestala fungovať o pár rokov kvôli zmenám v jazyku.
Pre vývoj malých súkromných aplikácií nemusí byť Java úplne vhodnou voľbou, lebo nasadenie aplikácie väčšinou vyžaduje cloudovú službu, čo môže byť komplikácia. Viacerí poskytovatelia týchto služieb však majú jednoduché programy zdarma.
C# a .NET
C# sa dá použiť pre tvorbu serverových aplikácií s .NET frameworkom. Ten bol vytvorený Microsoftom, ale dnes ide o open-source nástroj dostupný na rôznych platformách.
Porovnanie s Javou
Vývoj aplikácií na oboch platformách je veľmi podobný, keďže sa v nich riešia rovnaké problémy (spracovanie requestu, uloženie do DB a pod.). Oba tieto svety sa navzájom ovplyvňujú – preberajú prvky, ktoré sa osvedčili druhej strane. Ak má človek skúsenosti s tvorbou serverových aplikácií v Jave, je pre neho ľahké naučiť sa ich robiť aj v .NET a opačne. Jednotlivé výhody alebo nevýhody sú často subjektívne – napr. či je lepší prístup do databázy cez JPA/Hibernate v Jave alebo cez Entity Framework od Microsoftu.
PHP
PHP vzniklo pôvodne ako možnosť skriptovania HTML stránok. Inšpirované bolo hlavne jazykom C, z ktorého prebralo syntax a nejakú časť funkcií zo štandardnej knižnice. Neskôr pridalo objektovo orientované prvky a začali sa z jazyka vyhadzovať prvky, ktoré sa ukázali ako nevhodné. Ide však o netypovaný skriptovací jazyk.
PHP je veľmi rozšírený jazyk hlavne kvôli open source projektom pre tvorbu webových stránok, ako sú Wordpress, Joomla alebo Drupal, a tomu, že PHP podporuje väčšina webhostingových spoločností.
Aplikácie na serveri nebežia – kód sa spúšťa na vyžiadanie (napr. pre vytvorenie webovej stránky), čo môže byť problém pre aplikácie, ktoré vyžadujú stavovejšie spracovanie.
Klady
Asi najväčšou výhodou je jednoduchosť nasadenia aplikácie na bežnou webhostingu – stačí si kúpiť doménu, webhosting, nahrať súbory na server. Na začiatku nie je potrebné vytvárať komplikovanú aplikáciu – je možné PHP kód vložiť aj priamo k HTML. Pre serióznejšie aplikácie je však lepšie použiť niektorý z frameworkov (napr. Laravel alebo Yii).
Zápory
Jazyk samotný nie je zložitý, ale relatívne často sa mení a aplikácie je potrebné aktívne prispôsobovať novším verziám jazyka, inak môžu prestať fungovať. Platí to tiež pre frameworky. Jazyk tiež obsahuje niektoré prvky, ktoré môžu byť mätúce až frustrujúce. Napríklad spôsob práce s pointermi (iné príklady sa dajú ľahko nájsť na webe).