Někteří lidé se na učení nového programovacího jazyka dívají s nevolí a raději se mu vyhnou. Proč, ptají se, potřebujeme další jazyk? Nestačí nám už ty stávající nástroje? Nevykonávají svou práci dostatečně dobře?
Na druhou stranu existují i nadšení objevitelé, kteří s radostí zkoušejí nové věci a hledají skryté poklady. Pro ně je samotné učení cílem a nepotřebují žádné zvláštní motivace, aby trávili víkendy vývojem karetní hry na konzoli v nějakém málo známém novém jazyce.
Ať už patříte do kteréhokoli tábora, jedno je jisté: všichni chceme investovat čas do něčeho, co má perspektivu do budoucna.
Pro zastánce existujících jazyků je jejich oblíbený nástroj již dobře zavedený a má slibnou budoucnost. Nicméně je potřeba si uvědomit, že i tyto dnes zavedené technologie byly kdysi novinkou, kterou mnozí odmítali. A tak je tomu i dnes; vznikají nové technologie, které řeší nové problémy nebo usnadňují vývoj. Pokud se nějaká z nich prosadí, má šanci získat si popularitu a stát se trendem. A to je chvíle, kdy nechcete zůstat pozadu.
A pro ty, kteří rádi zkoušejí nové a zajímavé technologie, je zde varování: zábava je pro programátora důležitá, ale je třeba dávat si pozor, abychom zbytečně nemrhali energií. Jistě, Brainfuck je neuvěřitelně zamotaný, hádankovitý a zábavný malý jazyk, ale je velmi nepravděpodobné, že by vám jeho důkladné studium přineslo nějaký užitek. Chcete něco, co je nové, rozumné a má solidní základy.
Jak byly tyto jazyky vybrány
Výběr programovacího jazyka je náročná úloha, zvláště pokud uvažujete o nových jazycích pro budoucí uplatnění a spokojenost. Každý autor jazyka je přesvědčen, že vytvořil dokonalý jazyk, který řeší všechny problémy. Jak tedy vybírat?
Pro tento článek jsem se zaměřil na několik parametrů, abych zúžil hledání na rozumnou míru.
Datum vydání
Záměrně jsem se vyhýbal jazykům, které jsou příliš nové.
Pod novými jazyky mám na mysli ty, které jsou mladší než 5-6 let v době psaní a které ještě nedosáhly stabilní verze (1.0). To bohužel vylučuje některé skutečné skvosty jako Crystal, ale doufám, že se k němu někdy vrátím a napíšu o jeho úspěchu.
Fragment kódu v Crystal („Rychlý jako C, elegantní jako Ruby“)
Za ideální považuji období 5-12 let, kdy se jazyk stabilizuje a pracuje se na dalších vylepšeních. Samozřejmě existují výjimky, které budou zváženy.
Další důležitou věcí, která se často ignoruje, je podpora ze strany velké společnosti. Pro mnoho lidí je to dostatečný důkaz úspěchu, ale není to tak vždy.
Ano, Apple Objective-C a nyní Swift se daří, protože to byly jediné možnosti v přísně kontrolovaném ekosystému. Nicméně Facebook D a Hack (který považuji za ošklivý pohled na již tak ošklivý jazyk) zůstávají spíše experimenty.
Ideální kombinací by byl jazyk podporovaný velkou stabilní společností a s rostoucí popularitou (jako React).
Nejdůležitější je ale komunita. Pokud jazyk nevzbuzuje zájem a nemá dostatek vývojářů, kteří by ho propagovali, nedostane se ze svého hrobu na GitHubu.
Z tohoto důvodu jsem vyřadil vyspělé a fascinující jazyky jako Racket a Erlang, protože jejich růstová křivka je stagnující.
Zaměřené, dobře definované USP
Třetí věcí, kterou u jazyka hledám, je jasný účel. Například mi nevyhovuje vylepšená verze PHP, která opravuje problémy s pojmenováním a kompiluje se do nativního PHP.
Výhody jsou příliš malé na to, aby ospravedlnily přechod všech vývojářů na nový jazyk. Na základě tohoto měřítka musím odmítnout pokusy jako CoffeeScript a mnoho dalších podobných jazyků, které se kompilují do JavaScriptu.
Upřímně řečeno, musím okamžitě odmítnout pouze vylepšení syntaxe. Historie ukázala, že užitečnost má přednost před příjemností, takže pokud se nové jazyky zaměří pouze na lepší uživatelský zážitek, obávám se, že se do tohoto seznamu nedostanou.
Jasná, konzistentní syntaxe
Ano, vím. Právě jsem řekl, že na syntaxi nezáleží. Přesněji jsem řekl, že na „vylepšeních pouze syntaxe“ nezáleží. Nicméně syntaxe zůstává důležitým faktorem produktivity a udržovatelnosti, takže ji musím vzít v úvahu.
Spolu se syntaxí jde ruku v ruce konzistence. Pojmenování funkcí, strukturování modulů atd. jsou klíčové aspekty, které jazyk nemůže ignorovat. Je rok 2018 a další jazyk podobný PHP by byl pro nás všechny zklamáním. Takže bez dalších okolků přejdeme k našim pěti nejlepším doporučením.
1. Julia
Pro odborníky z MIT byly jazyky dostupné pro datovou vědu v nejlepším případě kompromisem. Python, i přes svou srozumitelnost a popularitu, postrádal nativní konstrukce pro práci s datovými objekty. Navíc byl pro ně kvůli svému interpretovanému charakteru pomalý (samotné knihovny jsou však většinou napsané v C).
Největší překážkou byl ale neohrabaný model souběžnosti a absence paralelního výpočetního modelu, který je klíčový pro superpočítače.
V důsledku toho se zrodila Julia.
Julia dosáhla stabilního vydání 29. září 2018, jen pár dní před napsáním tohoto článku (to je načasování!). Oficiální web o jejích schopnostech říká:
Julia vyniká v numerických výpočtech. Její syntaxe je ideální pro matematiku, podporuje mnoho numerických datových typů a paralelismus je k dispozici hned po vybalení. Juliina vícenásobná distribuce se přirozeně hodí pro definování numerických datových typů a datových typů podobných polím.
Z pohledu syntaxe lze Julii považovat za kombinaci Pythonu a C. Ano, je to pravděpodobně poprvé, kdy se jazyk zaměřil na tyto dvě vlastnosti a uspěl.
Aby to nebylo jednoduché, Julia je rychlá a nevyžaduje striktní typování. Zde je několik srovnávacích testů:
Oficiální srovnávací testy Julie
Jak můžete vidět, Julia je o něco pomalejší než C, ale výrazně překonává Javu a Python. A co se týče syntaxe, jak Julia vypadá?
Zde je implementace funkce pro výpočet přepony pravoúhlého trojúhelníku:
Ačkoli je většina ekosystému Julie zaměřena na matematické výpočty, věřím, že má jasnou budoucnost i pro obecné účely.
Pokud je mi známo, je to první jazyk, který nabízí prvotřídní podporu pro paralelní výpočty, takže by mě nepřekvapilo, kdyby si získal větší oblibu i v oblasti webu a IoT.
2. Rust
Pokud jste zkoušeli nové verze prohlížeče Firefox, jistě jste si všimli, že po letech práce se mu konečně daří ukrojit podíl na trhu Chromu.
Pokud je prohlížeč lehký, svižný a rychle se vykresluje, je to všechno díky jazyku, který Mozilla speciálně vyvinula: Rust.
Tvrdit, že Rust má světlou budoucnost, by nebylo pravda; tento jazyk je již obrovským úspěchem. Pokud jste o něm ještě neslyšeli, je to proto, že se používá ve specifických oblastech a jeho cíl je ambiciózní: nahradit C++! Ano, konečně máme jazyk, který to nejen umí, ale už to dělá.
Pro lidi frustrované složitým designem a problémy se správou paměti v C++ je Rust jako závan čerstvého vzduchu.
Takhle vypadá program v Rustu:
Stručné a elegantní, řekl bych. Rust se řídí funkčním programováním, díky kterému je váš kód složitější a neexistují žádné objektově orientované hierarchie, se kterými byste museli bojovat.
Čím tedy Rust dodává odvahu jít po C++? Je to nový model paměti. Namísto spoléhání se na starý tanec new()/delete(), Rust zavádí koncept vlastnictví.
Místo přímého přidělování paměti a přístupu k ní si proměnné v Rustu „půjčují“ jedna od druhé, s přísnými omezeními ze strany kompilátoru. Celý koncept je příliš složitý na vysvětlení v několika slovech, proto se neváhejte podívat do oficiální dokumentace, kde se dozvíte více.
Výsledkem je 100% bezpečnost paměti bez nutnosti garbage collectoru, což je velká výhoda.
Rust ovládl svět systémového programování. Je již podporován na mnoha platformách, pohání prohlížeče a vykreslovací motory, rychle nahrazuje kód C/C++ v produkčních systémech a používá se pro tvorbu operačních systémů.
Samozřejmě, ne každý chce vytvářet další prohlížeč nebo ovladač zařízení, ale Rust se již rozšiřuje do dalších oblastí. V Rustu již máme několik plně funkčních a rychlých webových frameworků a vyvíjí se stále více aplikačních knihoven.
Upřímně řečeno, pokud máte zájem o zajímavou budoucnost, je Rust perfektní jazyk a nyní je ideální čas na jeho osvojení. Rust je letadlo, které už vzlétlo, ale stále je čas naskočit na palubu a vydat se ke hvězdám!
Naučte se Rust od Dmitrije Nesteruka.
3. Elixir
Mezi jazyky, které se zaměřují na spokojenost vývojářů, si Ruby trvale drží první místo. Je to jazyk, který se čte jako poezie a má dostatek zkratek, které usnadňují práci. Proto není divu, že framework Rails i nadále dominuje vývoji full stack pro seriózní vývojáře a startupy. Nicméně ne všichni byli s Rails spokojeni, zejména jeden z jeho hlavních vývojářů – José Valim. Myslím, že sám tvůrce nejlépe vysvětluje vznik tohoto jazyka v rozhovoru:
Je to dlouhý příběh, ale pokusím se ho zkrátit. V roce 2010 jsem pracoval na zlepšení výkonu Rails při práci s vícejádrovými systémy, protože naše stroje a produkční systémy mají stále více jader. Celá zkušenost byla ale docela frustrující, protože Ruby neposkytuje správné nástroje pro řešení problémů se souběžností. Tehdy jsem se začal poohlížet po jiných technologiích a nakonec jsem se zamiloval do virtuálního stroje Erlang.
Začal jsem Erlang používat stále více a postupně jsem si uvědomil, že mi chybí některé konstrukce dostupné v mnoha jiných jazycích, včetně funkčních. Tehdy jsem se rozhodl vytvořit Elixir, jako pokus přinést různé konstrukce a vynikající nástroje nad Erlang VM.
A tak se zrodil Elixir!
Stejně jako Scala vylepšuje Javu, ale používá stejný virtuální stroj (JVM), Elixir využívá desítky let starý, v praxi ověřený virtuální stroj Erlang.
Diskuse o Erlangu je nad rámec tohoto článku, ale minimálně byste měli vědět, že je to nejtajnější tajemství telekomunikačního průmyslu: pokud jsou naše telefonní sítě mnohem spolehlivější než naše webové systémy, je to díky Erlangu.
Jednoduše řečeno, pokud vytváříte systém v reálném čase, například chat, je Elixir mnohem méně náročný na paměť a stabilnější než Ruby (nebo PHP, Python a Java).
Stroj, na kterém běží Ruby a dosáhne maximálně 10 000 souběžných připojení, může snadno zvládnout 200 000 připojení s Elixirem a stále mít dostatek paměti pro spuštění 2D her!
Fragment kódu Elixiru
Z hlediska syntaxe Elixir bezostyšně kopíruje Ruby a jeho dominantní webový framework Phoenix bezostyšně kopíruje Rails. Řekl bych, že je to dobře, protože společně s Laravel, Grails, Masonite atd. se dostáváme do bodu, kdy všechny jazyky mají frameworky podobné Rails, což usnadňuje přechod. Někdo by se mohl posmívat „nedostatku originality“, ale já si alespoň nestěžuji.
A konečně, Elixir je jednou z těch technologií, které jsou osvěžující, příjemné a praktické. Několik společností používajících Ruby (i těch, které Ruby nepoužívají) přechází na Elixir a velké firmy, jako je Pinterest, jej používají v produkci s uspokojivými výsledky.
Mnoho lidí si myslí, že Node.js byl provizorní pokus o souběžnost, který brzy nahradí Elixir. Musím říct, že s nimi souhlasím. 🙂
4. Kotlin
V roce 2017 Google na konferenci I/O šokoval publikum. Společnost oficiálně oznámila Kotlin jako primární jazyk pro vývoj Androidu, čímž vyvolala vlnu překvapení v celém odvětví.
Vzhledem k tomu, že se Google aktivně snaží nahradit Javu poté, co ho zasáhl soudní spor s Oracle, to není překvapivé. Přijetí Kotlinu však bylo poněkud nečekané a stále existuje šance, že Google brzy přijde s vlastním virtuálním strojem. Zatím si však Kotlin užívá úspěchu.
Kotlin byl vyvinut společností JetBrains, která je známá především svými kvalitními editory kódu. Jeden z nich, IntelliJ IDEA, tvoří základ Android Studia. Cílem Kotlinu je bezpečnost, stručnost a 100% interoperabilita s Javou.
Kompilátor Kotlin se snaží eliminovat výjimky nulových ukazatelů, které jsou v Javě tak běžné. Zjednodušuje také výřečnost Javy, což mnozí uvítají.
Zde je porovnání kódu v Javě a Kotlinu:
Zdroj obrázku: hype.codes
Kód v Kotlinu je výrazně kratší a méně náročný na kognitivní zatížení.
Nicméně je nepravděpodobné, že by Kotlin nahradil Javu, i když se rychle stává oblíbeným. Věřím, že za deset let se malé a střední týmy zaměří na Kotlin, zatímco velké skupiny budou i nadále používat Javu kvůli legacy kódu.
To znamená, že Kotlin má světlou budoucnost, protože dělá vše, co Java, může se bez problémů kombinovat s Javou a je mnohem příjemnější na používání!
5. TypeScript
S tímhle místem jsem měl velký problém! Všechno ve mně křičelo „Elm! Elm!“, ale i když jsou jeho myšlenky revoluční a syntaxe úžasná, Elm zatím není považován za běžnou alternativu pro front-endovou práci. 🙁 Každopádně, přejděme k tomu, co je běžné: TypeScript.
JavaScript je jako lesní plody: ošklivý a nechutný, ale pokud chcete přežít v džungli front-endového vývoje, musíte se s ním smířit. Bylo provedeno mnoho pokusů o jeho nahrazení (a s největší pravděpodobností uspěje nový standard WebAssembly), ale nejvíce pozornosti upoutala supermnožina vyvinutá společností Microsoft.
Je velká šance, že jste slyšeli o TypeScriptu: Angular byl prvním frameworkem, který ho přijal od verze 2 a lidé si ho rychle oblíbili. Je to proto, že TypeScript přidává do nejpopulárnějšího programovacího jazyka na světě některé potřebné a fantastické superschopnosti.
Ano, konečně je možné psát nativní JavaScript bez utrpení a nadávání!
Zde jsou vylepšení, které TypeScript přináší:
✓ Silné typování: A konečně, řetězec není číslo a číslo není objekt, který není prázdné pole!
✓ Kontrola typů při kompilaci: Pokud se váš kód zkompiluje bez problémů, je téměř zaručeno, že v něm nebudou chyby z runtime prostředí JavaScriptu.
✓ Třídy a moduly: Ano, třídy jsou standardní v ES6, ale jsou zahrnuty i v TypeScriptu, kromě promyšleného systému modulů.
✓ Odvozování typů: U složitých typů může kompilátor snadno určit typ, čímž vám ušetří starosti.
✓ Async/await: Klíčová slova a vzory async/await jsou základní, takže už žádné problémy se sliby a zpětnými voláními!
Jmenné prostory, generika, n-tice . . . Můžu pokračovat donekonečna, ale stačí říci, že TypeScript mění jeden z nejhorších vývojových zážitků na jeden z nejlepších.
Fragment kódu TypeScriptu
Vliv TypeScriptu nelze popřít. Vytlačil z trhu podobné pokusy, jako je Dart od Googlu (i když se pokouší o comeback prostřednictvím Flutteru, mobilního vývojového frameworku) a otevřel oči vývojářům JS ohledně výhod silnějšího typování.
Výsledkem je, že významné knihovny, jako jsou React, D3, Vue (dokonce i jQuery!) nyní mají verzi pro TypeScript a ve všech kvalitních softwarových společnostech je veškerý JavaScript psán jako TypeScript. Hlavičky TypeScriptu jsou nyní dostupné i pro Node.js (upřímně řečeno, pokud Node dokáže vylepšit svůj příběh o souběžnosti a opravit svou hroznou správu paměti, vydrží věčně).
Možná vás překvapí, že tvůrce Node.js, poté co veřejně litoval svůj výtvor, pracuje na novém runtime (zatím neexistuje oficiální web; pouze repozitář na GitHubu), který používá jako primární jazyk TypeScript.
Nejlepší zpráva? TypeScript je malý jazyk, který se snadno učí a má značné výhody do budoucna. Pokud jste pokročilý vývojář v JavaScriptu, naučíte se dostatek TypeScriptu, abyste do dvou dnů mohli převést veškerý svůj existující kód!
Závěr a vyloučení odpovědnosti
Existují i jiné jazyky, které si získávají na popularitě, ale z různých důvodů nebyly zařazeny do tohoto seznamu. Zde je krátký přehled:
- Golang: Již je zaveden jako běžný, i když ne příliš populární jazyk. V současné době věřím, že má několik konkurentů, kteří udrží jeho podíl na trhu nízký.
- R: R je mezi datovými vědci již velmi oblíbený a je nepravděpodobné, že by příliš oslovil vývojáře aplikací. Kromě toho nesmíme zapomenout, že knihovny strojového učení se pomalu dostávají do všech hlavních jazyků (už je má i PHP!), takže je jen otázkou času. 🙂
- Swift: Apple má železný úchop svého ekosystému a Swift je jediný dostupný jazyk. Dříve byl populární Objective C, stejně jako nyní Swift. Považuji to za podvod, a proto jsem ho zde nezařadil. 😀
Budoucnost je vždy nejistá a jeden ze způsobů, jak pokračovat ve své kariéře, je držet se toho, co již funguje, a nenechat se „rozptylovat“. Pokud se pro to rozhodnete, Java, PHP, Python, Ruby atd. jsou skvělé jazyky, u kterých můžete zůstat. Některým z nás však norma nestačí. Chtějí jít do neznáma, prozkoumávat a sázet na budoucnost. Pokud patříte do druhého tábora, jeden z těchto pěti jazyků by měl být na prvním místě vašeho seznamu úkolů.
A konečně, při hodnocení jazyka se nenechte odradit námahou, protože jí není tolik. Pokud již umíte několik programovacích jazyků, můžete se kterýkoli z nich naučit maximálně do dvou měsíců, pokud na to budete týdně věnovat 5-6 hodin. Zatímco výhody a finanční výnosy, které by se v budoucnu mohly generovat, budou mnohonásobně vyšší.
Chybí mi tu nějaký důležitý jazyk? Nebo se snad mýlím ohledně některého ze zde uvedených jazyků? Pokud ano, zanechte prosím komentář a pomozte mi se zlepšit. 🙂