Byl to Alexander Pope, kdo řekl: „Naděje pramení věčně v lidských prsou“? Pope byl básník, ne hacker, ale věřím, že by pochopil očekávání spojené s objevením nového programovacího jazyka. Věděl by, že vývojáři softwaru navždy doufají, že tento jazyk se svou jedinečnou kombinací znaků Unicode konečně vyřeší všechny naše problémy a zjednoduší kódování pomocí pouhých několika kliknutí.
Papež by jistě pochopil touhu po nové syntaxi tak intuitivní, že si odpověď musíme jen představit, a viděl by ji převedenou do logických pravidel, která jsou úžasná, propracovaná a především správná. Ocenil by touhu v našich prstech točit nový kód, který vypadá stejně nenuceně a elegantně jako trojitý axel, vnitřní tři a půl v pozici štiky nebo obří slalom na olympijských hrách.
Většina moderních jazyků však není stavěna pro rozmar nebo demonstraci naší schopnosti kódování. Jsou vyrobeny v reakci na běžný problém, který se tvůrci snaží vyřešit. Zatímco většina vývojářů bude i nadále provádět naše každodenní kódování v jednom nebo více starších, zavedenějších jazycích, neustále hledáme nové nástroje, které nám pomohou vyřešit naše problémy s kódováním. Tuto tendenci můžeme pozorovat zejména ve vzestupu doménově specifických jazyků neboli DSL. Tyto jazyky jsou kompaktní a zaměřené. Nejsou určeny pro všeobecné použití. Ale někteří by si právě z tohoto důvodu mohli vydobýt zvláštní místo ve vaší sadě nástrojů.
Zde je 11 novějších jazyků, které si našly své místo. Některé jsou DSL, navržené tak, aby dělaly jednu věc a dělaly to dobře. Jiní, zdánlivě, touží zachránit svět. I když nejsou tím, co právě potřebujete, všichni vás mohou něco naučit o tom, jak zajistit, aby naše počítače dělaly to, co dělají, ale lépe.
Reactive Clojure
Když si vezmete Clojure s Reactem, získáte toto: systém, který kombinuje všechny možnosti reaktivních předních částí s pevnou a funkční silou Clojure. Reactive Clojure vám ve své nejlepší podobě umožňuje rozložit komplexní kolekci front-endových komponent a spojit je dohromady s funkcemi. Rámec Reactive vyplní detaily a zajistí hladký tok dat aplikace mezi vašimi komponentami a databází. Clojure přináší funkční základ umožňující i neobyčejné případy použití – a laditelné.
Je to zápas vyrobený v nebi? Čas ukáže. Reactive Clojure je dobrá volba pro psaní kódu lepidla, který drží pohromadě přední komponenty. Jeho vícevláknový model se přirozeně hodí ke komplexním a reaktivním řídicím panelům, které hlásí více úloh současně.
Nickel
Jednou z ironičtějších her, které programátoři hrají, je přesunutí většiny naší práce do konfiguračních souborů. Tyto soubory, často kódované v JSON, YAML nebo dokonce XML, jsou dobrým nápadem na kódování, který se metastazuje do propracovaného rituálu. V některých případech dokonce nemusíte psát skutečný kód; jen donekonečna přehazujte různé konfigurační soubory, abyste udělali to, co potřebujete.
Dává tedy smysl, že máme Nickel: programovací jazyk pro vytváření konfiguračních souborů. Nickel je jako šablona s vloženou logikou, kterou můžete použít k vytvoření konfiguračních souborů, které nejsou statické. Parametr může mít jednu hodnotu během týdne a jinou o víkendu. Když běží, Nickel vytvoří nový konfigurační soubor, který vyhovuje všem parametrům, které obdržel.
Nickelova struktura je z velké části funkční a pokud to náhodou pomůže, je k dispozici kontrola typu. Velkým tématem je „správnost“, protože dobře napsaný kus niklového kódu do značné míry zaručuje, že výstup bude splňovat jak syntaktická pravidla, tak všechna další pravidla, která potřebujete vynutit. Kompilátor Nickel vám umožňuje psát smlouvy a poté zkontroluje, zda je výstup dodržuje. Jistě, na psaní kódu pro vytváření konfiguračních souborů, které pak řídí váš kód, je něco legračního. Ale je to velmi praktické řešení pro moderní architektury.
Kobra
Tvůrci Kobry chtěli jazyk, který zpřístupní strojové učení inženýrům, vědcům a dalším ne tak profesionálním kodérům. Výsledkem je to, čemu říkají vizuální jazyk pro strojové učení. Editor Kobra sestavuje sekvence podobné kódu s dlaždicemi typu drag-and-drop, které představují běžné vestavěné rutiny pro statistickou analýzu a strojové učení. Proces vypadá jako R s datovými rámci vytvořenými z tabulkových dat a sbírkou funkcí grafického zobrazení pro vytváření řídicích panelů a dokumentů.
Bicep
Jednou z nejužitečnějších funkcí cloudu je schopnost spouštět a rušit servery, aby zvládly nápor dat. Jednou trvalo týdny, než hardwarový tým datového centra vyžádal, nainstaloval, otestoval a nakonfiguroval počítač. Nyní vám cloud umožňuje udělat to vše během několika minut nebo dokonce sekund.
Mnoho vývojářských týmů začalo psát kód pro různá rozhraní API podporovaná různými cloudy. Microsoft se rozhodl jít ještě o něco dále a vytvořit zjednodušený jazyk pro spouštění strojů v Azure v rámci své filozofie infrastruktury jako kódu.
Jazyk zvaný Bicep nabízí účinný, deklarativní formát pro vysvětlení většiny různých bitů, které by vývojář mohl chtít přehodit v nové instanci. Některá základní typová bezpečnost může pomoci předcházet chybám a ve VS Code je k dispozici editor s ohledem na syntaxi. Samotný jazyk je navržen pro uvažování vyššího řádu o infrastruktuře se silně deklarativní strukturou, která vám umožňuje zahrnout pokyny v libovolném pořadí a poté nechat správce prostředků Azure optimalizovat provádění.
Frink
Přítel tvrdí, že jeho jediným požadavkem při výběru banky je zajistit, aby účetní software banky používal k počítání haléřů celá čísla a ne čísla s pohyblivou řádovou čárkou za zlomky dolaru. Nebezpečí chyb s pohyblivou řádovou čárkou je dobře známé a příliš velké. Kolik chyb bylo způsobeno přehazováním čísel bez velké péče?
Frink je jazyk „s vědomím jednotek“ vytvořený právě pro tento problém. Každá proměnná ve Frink obsahuje nejen číslo, ale také označení měrné jednotky, ať už jsou to tuny, watty, stopy nebo metry. Převod jednotek je snadný díky konfiguračnímu souboru Frink. Frinkův základní mechanismus také používá libovolná přesná čísla ke snížení problémů se zaokrouhlováním. Je to jako kontrola typu, ale pro číselné jednotky měření.
Faust
Syntéza zvuku se může zdát jako úzké zaměření, ale je velmi užitečná pro vývoj her, virtuální realitu a jakoukoli aplikaci, která spoléhá na dobrou kvalitu zvuku. Vstupte do Faust, jazyka specifického pro doménu, který získal svůj název podle amalgámu funkčního audio streamu. Faustova struktura je čistě funkční a všechny její funkce tvoří potrubí pro zpracování zvuku. Jeho zadní část rozděluje příchozí zvuk na číselnou reprezentaci a samotný kód je sada funkcí, které lze skládat nebo kombinovat do konečného výsledku. Jako příklad můžete vytvořit echo nebo reverb rozdělením výstupu kódu a zavedením zpoždění. Faustův kód je transpilován do C++, C, bitového kódu LLVM, WebAssembly, Rust a několika dalších jazyků, takže jej můžete použít téměř v jakémkoli projektu.
Melrōse a Glicol
Každý, kdo píše kód, ví, jak by programátor založil kapelu: Namísto zveřejnění inzerátu na hledání bubeníka a následného rozhovoru s každým, kdo odpovídá, stačí napsat nějaký kód, který vysvětlí rytmy pro bicí automat. Jakmile to uděláte, můžete také nahradit všechny ostatní členy kapely podprogramy. Dokonce byste tak mohli postavit celý symfonický orchestr.
Melrōse a Glicol jsou dva hudební programovací jazyky navržené pro tento styl tvorby hudby. Obojí vám umožní vytvořit propracované kompozice pomocí několika úhozů. Melrōse pracuje na vysoké úrovni kolem standardní dvanáctitónové oktávy běžné v západní hudbě. Noty jsou seskupeny do sekvencí a software zvládá většinu práce se scutem, jako je transpozice. Výstup jde do jakéhokoli nástroje s podporou MIDI a kód může také reagovat na příchozí signály přes port MIDI, takže kód Melrōse může být členem kapely.
Glicol je nástroj založený na Rustu, který provádí většinu stejných úkolů, ale z nižší úrovně. Kód se integruje s digitálním zpracováním signálu a nabízí širokou škálu hudebních možností. Tento nástroj je navržen tak, aby produkoval zvuky připravené pro prohlížeč pomocí svého open source audio motoru. Vývojář Glicolu říká, že jazyk má „nízký vstupní poplatek a vysoké stropy“, aby podpořil spolupráci s ostatními na všech úrovních dovedností.
WebAssembly and Wase
Nejúčinnějším způsobem, jak poslat instrukce do počítače, je zakódovat je binárně a omezit je na základní sadu operací používaných CPU. Každý čip má svou vlastní oblíbenou binární syntaxi a některé jazyky jako Pascal nebo Java mají neutrální binární formát určený pro běh na místním virtuálním počítači. WebAssembly (Wasm) jde v těchto stopách a nabízí webovým prohlížečům předtrávený binární kód kombinovaný s textem ve standardním formátu. Cílem WebAssembly je nahradit miniifikovaný kód JavaScript, který tvoří páteř webových aplikací, něčím, co je ještě připravenější ke spuštění, s rychlostí blízkou nativní.
Mnoho vývojářů bude používat WebAssembly, aniž by jej přímo psali, pomocí kompilátorů, které převádějí jazyky vyšší úrovně na WebAssembly, které poběží v prohlížečích. Je zde také posun k vytvoření nízkoúrovňových jazyků, které odhalují většinu základní struktury WebAssembly v lidsky čitelné formě. Wase je jednou z takových možností, která nabízí syntaxi podobnou C se silným psaním.
WebAssembly také nachází využití mimo webové prohlížeče jako obecný způsob kódování instrukcí se zásobníkem podobným JVM v Javě. Redpanda je například platforma pro streamování dat, která vývojářům nabízí možnost vyladit nebo upravit data, jak přicházejí, pomocí kódu napsaného ve WebAssembly.
Java 17
Technicky Java není nový jazyk. Jednou z největších věcí na Javě je skutečně to, že její vývojáři odvedli skvělou práci při udržování kompatibility se staršími verzemi. Obvykle je docela snadné zkompilovat kód, který je 10 nebo dokonce 20 let starý pro nejnovější JVM. Není zaručeno, že kód bude fungovat, ale jeho kompilace je stále snazší než téměř jakýkoli jiný jazyk. Java tým má sadu milionů integračních testů a je to vidět.
Do tohoto seznamu zařazuji Javu 17, protože byla tak modernizována, že by ji cestovatel časem z 90. let téměř nepoznal. Java 17 má tolik dalších funkcí a rozšíření, které mění způsob, jakým kódujeme.
Některé, jako vylepšený generátor náhodných čísel nebo přísnější matematická sémantika s plovoucí desetinnou čárkou, řeší problémy psaní velmi složitého číselného kódu. Vývojáři, kteří píší účetní systémy, se mohou obejít bez použití celých čísel k udržení počtu centů, ale ti, kteří řeší algoritmy umělé inteligence a komplexní lineární algebru, potřebují plovoucí desetinnou čárku.
Jiné, jako je silné zapouzdření a rozšířená sémantika přepínačů, přinášejí do základního jazyka směs disciplíny a flexibility. Celkově je díky všem těmto vylepšením jednodušší než kdy jindy psát silnější, bezpečnější a bezpečnější kód. Ve svém jádru je to stále Java, ale doplňky dělají rozdíl.