Java, PHP nebo Kotlin: Jaký programovací jazyk se naučit?
Ján Halaša|17.11.2022
Nevíš, který programovací jazyk se naučit? Přinášíme ti přehled jazyků, jako jsou Java, Kotlin, JavaScript nebo Python, s představením silných a slabých stránek.
Chcete se naučit programovat a nevíte, s jakým programovacím jazykem začít? Tento článek vám pomůže rozhodnout se.
Programovací jazyky často mají své určení, pro které jsou navrženy, nebo doménu, kde se jim podařilo vyniknout. Obvykle je snazší vybrat si jazyk podle toho, jaké typy aplikací se v něm snadno píšou, než jen podle charakteristik daného jazyka. Proto si projdeme různé kategorie aplikací, jazyky, které jsou pro ně vhodné, stejně jako jejich klady a zápory.
Mobilní aplikace
Vývoj mobilních aplikací se pohybuje poměrně rychlým tempem, protože mobil už má každé malé dítě. Mobilní aplikace může vývojář programovat v nativních jazycích, pro Android je to Java/Kotlin a pro iOS je to Objective-C/Swift, nebo v tzv. multiplatformních frameworcích, ve kterých vývojář ideálně napíše zdrojový text aplikace jednou a aplikaci lze sestavit jak pro Android, tak i pro iOS.
Android
Java
Java je objektově orientovaný jazyk. Je oblíbeným jazykem už dvě desetiletí a v roce 2018 byl vyhlášen za 5. nejpopulárnější technologii. Je to multiplatformní jazyk, ve kterém lze vyvíjet jak desktopové, tak i serverové a mobilní aplikace pro všechny rozšířené operační systémy.
Klady
- Je to velmi oblíbený a rozšířený jazyk, proto je dostatek materiálů na studium a obrovská komunita, která pomůže při případných potížích. Také je pro tento jazyk více pracovních nabídek, vzhledem k jeho rozšířenosti. Když se člověk naučí Javu, bude umět dělat více typů aplikací.
Zápory
- Google, jako společnost vyvíjející Android, upřednostňuje Kotlin pro vývoj Android aplikací. Je to dáno asi hlavně licenčními spory s Oracle, ale je možné, že Google bude postupně Javu zanedbávat.
- Také podpora nových verzí Javy přichází se zpožděním.
- Java také neobsahuje některé moderní prvky jazyka, např. podporu neměnnosti objektů (immutability) nebo kontrolu neprázdnosti proměnných – některé jiné jazyky vyžadují označit proměnné, které mohou být prázdné, což snižuje náchylnost na chyby v kódu.
Kotlin
Kotlin je staticky typovaný programovací jazyk, který se překládá do Java bytecode, který běží na Java Virtual Machine. Je to moderní objektově orientovaný jazyk, který umožňuje efektivně psát zdrojové texty.
Klady
- Kotlin je navržen tak, aby zápis jeho kódu byl efektivní, takže když porovnáte aplikaci napsanou v Javě s aplikací napsanou v Kotlinu, ta v Kotlinu bude obsahovat méně zdrojového textu.
- Když si na Kotlin zvyknete, bude se vám zdrojový text jednodušeji číst a bude pro vás přehlednější.
- V Kotlinu můžete používat i knihovny napsané v Javě a dokonce používat současně v jednom projektu i Javu i Kotlin, protože oba jazyky se překládají do Java bytecode.
Zápory
- Kotlin se zatím od svého vzniku v roce 2016 příliš nerozšířil, a tedy je dostupných méně materiálů na studium a menší komunita, která by mohla v případě problémů pomoci. Kotlin je také pomalejší při kompilaci v porovnání s Javou.
- Kotlin má složitější syntax (zápis kódu) než Java a je potřeba vynaložit více úsilí na jeho naučení se.
iOS
Swift
Swift je kompilovaný programovací jazyk od Apple. Je relativně nový a slouží hlavně pro vývoj aplikací pro Apple platformy (macOS a iOS), je ale dostupný i pro Linux a Windows. Pro vývoj iOS aplikací je potřeba mít počítač Apple (např. MacBook). Pro vývoj slouží hlavně prostředí XCode.
Klady
- Oproti jazyku Objective-C, kterého je nástupcem, obsahuje prvky moderních programovacích jazyků a snižuje náchylnost na chyby odstraněním některých prvků zděděných z jazyka C.
Zápory
- Jazyk je využitelný téměř výhradně jen pro Apple platformy a je těžké odhadnout, zda se jeho využitelnost rozšíří v budoucnosti.
Multiplatformní mobilní aplikace
Jde o aplikace, které napíšete jednou a můžete je sestavit pro více operačních systémů. Nástrojů, pomocí kterých lze psát multiplatformní aplikace, je více. Například Flutter, React Native, Cordova, Xamarin. Flutter je z nich nejmladší, ale stal se za krátkou dobu asi nejpoužívanějším z nich.
Flutter
Technologie Flutter používá Dart jako programovací jazyk pro tvorbu aplikací. Je to objektově orientovaný jazyk s množstvím vymožeností, které moderní jazyky používají. Chcete-li napsat aplikaci ve Flutteru, stačí se naučit jeden jazyk – tím je právě Dart, a znát komponenty, které Flutter používá. Žádnou jinou technologii k tomu ovládat nepotřebujete.
Klady
- Dart má jednoduchou syntax připomínající C#, Java. Velmi snadno se učí, a proto je vhodný i pro začátečníky. Je intuitivní a efektivní na psaní.
Zápory
- Jazyk Dart se kromě frameworku Flutter nerozšířil do jiných technologií, i když byly snahy ho používat v Angularu (aplikace běžící v prohlížeči) a dá se použít i na psaní serverových aplikací. Proto jeho naučením se nezískáte takovou výhodu jako kdybyste se naučili například jazyk Java, který má širší použití.
Aplikace běžící v prohlížeči
Jde o aplikace typu klient-server, kde klientská část (uživatelské rozhraní) běží ve webovém prohlížeči. Příkladem může být e-mailový klient (Gmail) nebo e-shop. Tyto aplikace většinou vyžadují serverovou stranu jako poskytovatele dat a jiných služeb. Je ale možné udělat i samostatné aplikace. Tyto aplikace se typicky neinstalují, je třeba je ale nasadit na server s veřejnou URL adresou. Také mají svá omezení daná prohlížečem – např. nemohou jednoduše přistupovat k souborům uloženým na disku uživatele.
JavaScript
V prohlížečích se dá spouštět jen kód v jazyku JavaScript. Existují jazyky, jejichž zdrojové kódy se dají transformovat do JavaScriptu, takže není nutné používat přímo JavaScript, ale je velmi dobré ho znát. JavaScript je interpretovaný (nekompilovaný) jazyk, který nevyžaduje deklaraci typů proměnných.
Klady
- Hlavní výhodou je asi to, že JavaScriptový program bude schopný běžet v každém moderním prohlížeči. Vývoj JavaScriptu je standardizován, akorát si je třeba dávat pozor na to, že ne všechny prohlížeče podporují všechny nové funkčnosti.
- Pro vývoj JavaScriptových aplikací není potřeba žádné speciální vývojové prostředí – stačí napsat kód a otevřít ho na HTML stránce v prohlížeči. Prohlížeče poskytují i nástroje (developer tools) pro debugování a ladění výkonu.
- JavaScript z velké části využívá syntaxi (formu zápisu) společnou s jazyky, jako jsou C, Java či C#, a tedy je výhodné ho znát, pokud se chcete později naučit některý další z těchto jazyků.
Zápory
JavaScript má jinou koncepci objektového programování než většina ostatních běžných jazyků (Java, C#, Python). Její porozumění vyžaduje extra studium, ale není nutné na začátku – většinou stačí vědět, jak používat existující třídy.
- Beztypovost proměnných zvyšuje náročnost údržby nebo rozvoje větších programů.
- Je třeba si dát pozor hlavně na porovnávání objektů pomocí operátoru “==”, které může produkovat neočekávané výsledky (např. [ ] == 0). Stačí ale místo něho používat alternativní operátor “===”.
- Pro vytvoření větší aplikace je potřeba vybrat si a naučit se nějaký framework typu Angular, React.js, Vue.js.
TypeScript
TypeScript je jazyk rozšiřující JavaScript hlavně o typované proměnné. Je to velmi nápomocné při tvorbě větších aplikací, protože nám překladač jazyka může odhalit více chyb a vývojové prostředí (IDE) může být nápomocnější při psaní kódu – více rozumí tomu, co daný kód dělá.
TypeScript se překládá do JavaScriptu a přebírá všechny jeho existující funkčnosti, takže přechod na něj je jednoduchý, akorát už vyžaduje extra krok překladu – nedá se přímo spustit v prohlížeči.
HTML, CSS
HTML ani CSS nejsou programovací jazyky, ale jsou to technologie, které je třeba znát pro tvorbu aplikací pro webové prohlížeče. HTML je jazyk pro strukturování dokumentů nebo aplikací. CSS je jazyk pro vizuální stylizaci HTML prvků. Je jednoduché se je naučit a na začátku stačí znát jen malou část těchto jazyků.
Desktopové aplikace a hry
Windows s okny
C#
Jazyk C# byl vytvořen Microsoftem jako jeho alternativa k Javě. Jedná se o objektově orientovaný, kompilovaný, typovaný jazyk. Podobně jako u Javy, C# se kompiluje do IL bytecode formátu a ten je při spuštění převáděn na nativní kód. Je dost vázaný na .NET framework a existuje pro něj i oblíbený nástroj pro tvorbu her – Unity.
Klady
- Jedná se asi o nejvhodnější jazyk pro vývoj Windows aplikací, u kterých není výkon nejdůležitějším faktorem. Jazyk obsahuje mnohé moderní prvky a má velké množství knihoven, které se dají použít při tvorbě aplikací.
Zápory
- Vývoj aplikací s grafickým rozhraním v C# je stále jen pro Windows. Jejich rychlost je obecně nižší oproti tomu, kdyby byly napsány v C++.
C++
Jazyk C++ vznikl z jazyka C přidáním podpory tříd a objektů a vytvořením větší standardní knihovny. Je to kompilovaný, typovaný jazyk. Největší popularitu zažil v 90. letech. V C++ jsou napsány mnohé hry. Nejznámějším nástrojem pro tvorbu her je asi Unreal Engine. Je v něm také možné psát aplikace pro mnohé platformy.
Klady
- Jeho hlavní předností je možnost psát velmi optimalizovaný kód. Je v něm také možné psát aplikace, které se dají přenést na jiné platformy.
Zápory
- Jazyk nese mnohé nevýhody jazyka C – hlavně náchylnost na chyby spojené se správou operační paměti a nutnost tvorby hlavičkových souborů.
Bez GUI
Tato kategorie je dost obecná a nemá žádná výrazná omezení. Programy bez grafického prostředí – pro spouštění z příkazového řádku se dají vytvořit většinou programovacích jazyků. Často jde o programy pro zpracování dat nebo automatizaci procesů operačního systému.
Python
Python je skriptovací, netypovaný všeobecný jazyk. Je často používaný pro matematické výpočty, statistiku, machine learning. Jeho výhodou je, že pro něj existuje velké množství knihoven. Aplikace napsané v něm mohou být spustitelné na různých platformách, na kterých je Python dostupný. Dá se použít i na tvorbu multiplatformních desktopových aplikací s grafickým prostředím (přes PyQT).
Bash
Bash je jazyk sloužící hlavně jako shell (interpreter příkazového řádku) v operačních systémech, jako jsou Linux nebo macOS. Je proto na těchto systémech téměř vždy dostupný, což dělá skripty napsané v něm snadno použitelnými. Jeho základní znalost je velmi užitečná pro pokročilé uživatele těchto operačních systémů. Jazyk snadno využívá funkčnosti externích programů a kombinuje je. Není ale vhodný na psaní obecných aplikací.
Serverové aplikace
Jde o aplikace běžící na serverech, ke kterým se přistupuje přes síť. Většinou mají své klientské aplikace běžící v prohlížeči nebo mobilní aplikace. Jsou tedy vhodnou volbou pro programátory, kteří nemají rádi tvorbu uživatelského rozhraní.
Java
Java je asi nejrozšířenější jazyk pro psaní serverových aplikací. Už asi 20 let existuje velká aktivní komunita vyvíjející nástroje pro tvorbu těchto aplikací – ať už standardizovanou verzi (nyní nazývanou Jakarta EE) nebo nezávislé nástroje (např. Spring framework). Pro Javu existuje velké množství knihoven a technologií, které usnadňují tvorbu i komplikovaných aplikací.
Aplikace v Java jsou schopné běžet na libovolné platformě, pro kterou je dostupné Java Runtime Environment (JRE). Java jako jazyk se stále aktivně vyvíjí a vylepšuje, ale její vývoj není divoký – nehrozí, že dnes napsaná aplikace přestane fungovat za pár let kvůli změnám v jazyce.
Pro vývoj malých soukromých aplikací nemusí být Java úplně vhodnou volbou, protože nasazení aplikace většinou vyžaduje cloudovou službu, což může být komplikace. Několik poskytovatelů těchto služeb ale má jednoduché programy zdarma.
C# a .NET
C# se dá použít pro tvorbu serverových aplikací s .NET frameworkem. Ten byl vytvořen Microsoftem, ale dnes jde o open-source nástroj dostupný na různých platformách.
Porovnání s Javou
Vývoj aplikací na obou platformách je velmi podobný, protože se v nich řeší stejné problémy (zpracování requestu, ukládání do DB atd.). Obo tyto světy se navzájem ovlivňují – přebírají prvky, které se osvědčily druhé straně. Pokud má člověk zkušenosti s tvorbou serverových aplikací v Javě, je pro něj snadné naučit se je dělat i v .NET a naopak. Jednotlivé výhody nebo nevýhody jsou často subjektivní – např. zda je lepší přístup do databáze přes JPA/Hibernate v Javě nebo přes Entity Framework od Microsoftu.
PHP
PHP vzniklo původně jako možnost skriptování HTML stránek. Bylo inspirováno hlavně jazykem C, z něhož převzalo syntax a některou část funkcí ze standardní knihovny. Později přidalo objektově orientované prvky a začaly se z jazyka vyhazovat prvky, které se ukázaly jako nevhodné. Jde ale o netypovaný skriptovací jazyk.
PHP je velmi rozšířený jazyk hlavně kvůli open source projektům pro tvorbu webových stránek, jako jsou Wordpress, Joomla nebo Drupal, a tomu, že PHP podporuje většina webhostingových společností.
Aplikace na serveru neběží – kód se spouští na vyžádání (např. pro vytvoření webové stránky), což může být problém pro aplikace, které vyžadují stavovější zpracování.
Klady
- Asi největší výhodou je jednoduchost nasazení aplikace na běžný webhosting – stačí si koupit doménu, webhosting, nahrát soubory na server. Na začátku není potřeba vytvářet komplikovanou aplikaci – je možné PHP kód vložit i přímo k HTML. Pro serióznější aplikace je ale lepší použít některý z frameworků (např. Laravel nebo Yii).
Zápory
- Jazyk sám o sobě není složitý, ale relativně často se mění a aplikace je potřeba aktivně přizpůsobovat novějším verzím jazyka, jinak mohou přestat fungovat. Platí to také pro frameworky. Jazyk také obsahuje některé prvky, které mohou být matoucí až frustrující. Například způsob práce s pointery (další příklady lze snadno najít na webu).