CoffeeScript po devíti měsících

Před tři čtvrtě rokem, v prosinci 2010, jsme si na stránkách Zdrojáku představili CoffeeScript – nový jazyk, postavený nad JavaScriptem, který akcentuje třídy, lambda funkce a podobné rysy. Pojďme se podívat, jak se za tu dobu CoffeScript ujal (či neujal) a jak se proměnilo jeho vnímání.

Prostý výčet novinek a nových nástrojů pro CoffeeScript by byl poměrně nudný, proto jsem se tentokrát zeptal na názor lidí, co CoffeeScript používají. A myslím, že nejlepší bude dát si na úvod rovnou jeden citát:

Pochybuji, že se CoffeeScript ujme. Vlastně nepochybuji, jsem si zcela jist, neujme se, protože ekosystém. Široká audience nikdy CoffeeScript nepřijme, protože nejsou příklady, nejsou editory, nejsou code syntax highlightery, nejsou debuggery, nejsou přátelé na IM, prostě CoffeeScript je v ekosystému RIA aplikací vetřelec. Syntax pro rychlejší a přehlednější psaní js není to podstatné, ač jsem si sám dlouho myslel opak, co rozhoduje. Je smutné, když někdo investuje svůj čas do reimplementace ko­la…

psal Daniel Steigerwald v prosinci 2010. Jeho názor byl tehdy logický a samozřejmý. CoffeeScript ale prodělal intenzivní vývoj, stojí za ním jména jako 37signals, přilákal mnoho vývojářů pro Ruby, stal se součástí Rails… Zkrátka ukázal určitou životaschopnost. Po tři čtvrtě roce říká Daniel Steigerwald:

Ač jsem byl k Coffeescriptu zpočátku skeptický, dal jsem mu na pár týdnů šanci. Romantická koketérie záhy přerostla v strhující vášeň. Obavy, zda se podaří integrovat Coffeescript do již řadu měsíců běžícího projektu, se rozplynuly. Čím to?
Coffeescript je především krásný.
Whitespace syntax se s nadbytečným smetím C-like jazyků nedá srovnávat. Nejde jen o to ušetřit si pár znaků při psaní kódu, ale hlavně ulevit očím při jeho čtení. Kód se totiž násobně častěji čte, než píše. Představte si, že byste četli poezii, kde by každá řádka končila středníkem, a verše samy by byly uzavřené ve složených závorkách (tuším, že vogonská poezie se právě takhle píše).
Pominu-li syntax, co dalšího oblibuji? Coffeescript je chytrý. Není nutné psát var, deklarace jsou implicitní. Dále je tu elegantní a strohá definice třídy, skrze klíčové slovo class. Že všechno je v Coffeescriptu výraz. A že už nikdy nemusím přemýšlet, zdali iterovat pomocí for in, nebo $.each. A nikdy už volat bind jen proto, že chci užít closure a zachovat this. A lambda výrazy, must have každého funkcionálního jazyka. Taky to, že nelze (není snadné), psát dlouhé řádkové nudle usopleného kódu o > 120 znacích, tolik oblíbené ve světě jQuery.
Syntaxe Coffeescriptu je stabilní, a jeho autor natolik příčetný, aby odmítal radikálnější změny. Co ekosystém? Použitelné nástroje existují, a každý den se rodí nové. Jak už jsem psal, integrace do rozjetého projektu byla, navzdory nehostinným Windows a zkamenělému Visual Studiu, lehká.
Na závěr otázka: existují důvody, proč se Coffeescriptu vyhnout? Myslím, že ano. Například: „proto, že jsem ignorant a nové nástroje mne nezajímají, programování mě vlastně nebaví, navíc teď fakt nemám ani jeden volný den se něco učit, KTHXBY. V úctě Jaroslav Vogon“
PS: když dovolíte, jedna ukázka: https://gist.git­hub.com/969246

Obrácení svatého Šavla? Nebylo jediné, podobné diskuse probíhaly i ve světě (Diskuse: CoffeeScript a „nový JavaScript“). V lednu jsme přinesli zprávičku o nástroji Mug (Mug: kompilujte CoffeeScript do Javy (JVM)), v dubnu následovala už zmíněná integrace do Rails (Rails 3.1 s trochou kontroverze), integrace do SproutCore, vytvoření značkovacího jazyka se syntaxí CoffeeScriptu (CoffeeScript ve SproutCore i jako HTML markup), syntaktické zvýrazňovače a mnoho dalších nástrojů. Před měsícem vyšla kniha o CoffeeScriptu od Pragmatic Programmers a nic nenasvědčuje tomu, že by „hype opadal“.

Jak to máte s CoffeeScriptem?

Coffee a Node.js

CoffeeScript se velmi dobře sžil s další „novinkou“, totiž javascriptovým nástrojem Node.js. Zde opět dám slovo člověku, který obojí používá – na otázku Proč právě CoffeeScript a Node.js? odpověděl Jiří Knesl:

JavaScript přehlušil Ruby, dá se říct, že lidé snad i migrují k JavaScriptu a dělají z něj jazyk budoucnosti. Pardon, z CoffeeScriptu (nestačí už jen to, že v Railsech si nenaprogramujete v JavaScriptu ani řádku, dokud ten Coffee nevypnete?). To je samo o sobě dost zvláštní, v souvislosti s rok starým Coffee obzvlášť.

Dobře si pamatuju, jak se mě i lidem okolo JavaScript roky zajídal. Na ty validace formulářů jsme ho použili s krajním zapřením, s křivou hubou jsme to odladili i pro internet průzkumník 6 a říkali si: „zlaté PHPčko“.

A najednou: Rhinoceros, V8, node.JS. Javascript je rychlý. Jako C++! Mnohdy rychlejší. Stalo se, že JavaScript přestal být nemanželským synovcem z šestého kolena s rumunskou matkou a podivným strýcem Igorem. Naopak by dnes JavaScript šel spíš přirovnat k příběhu ošklivého kačátka.

Ať už si myslíte cokoliv, ve skutečnosti je ten jazyk geniální. Funkcionální, objektový, má jen minimum funkcí v globálním namespace. Neskutečně dynamický – jde zasáhnout do globálního namespace, což ohromně zpřehlední kód (byť někteří puristé si pořád myslí, že když na svém malém webu změním globální Array, Bůh zabije koťátko).

Problém JavaScriptu je v jeho ukecanosti. Kéž by byl víc jako Listp, Smalltalk nebo Python! Uvnitř JavaScriptu tepe Scheme a Self, skvělé jazyky, s oběma bych dělal daleko radši než s čímkoli s C-čkoidní syntaxí. To je důvodem úspěchu Coffee – vytěžil z JS ohromné věci, dotáhl ho tak daleko, že když dnes píšu aplikaci v Coffee a node.js, stačí mi polovina řádků, co potřebuju v PHP. Je to jednoznačně tím, že Coffee odkrylo funkcionální část v JS, a zároveň ohromně silným návrhem, který JavaScript má, a který Coffee vytáhlo na světlo tím, že odstranilo snad 30 let zastaralou C-čkoidní syntax.

Další problém JS byl ten, že neexistovala cesta, jak ho pustit na serveru. A tento problém s příchodem node.js padl tak kolosálním způsobem, že v tom snad má prsty Chuck „Closure“ Norris. Že bude JavaScript (a tedy i Coffee) rychlejší než C++, Java, C#, Python, no to je bomba! Kdyby mi tohle někdo řekl před pěti lety, poklepu si na čelo a pošlu ho… vypnout si garbage collector.

Dnes se dá říct, že ten, kdo začne přinejmenším koukat po tom, jak psát v node.js, si do budoucna otevírá dveře pro extrémně rychlé aplikace napsané za velmi málo času.

A co vy? Dáte CoffeeScriptu šanci?

Začal programovat v roce 1984 s programovatelnou kalkulačkou. Pokračoval k BASICu, assembleru Z80, Forthu, Pascalu, Céčku, dalším assemblerům, před časem v PHP a teď by rád neprogramoval a radši se věnoval starým počítačům.

Jiří Knesl se zabývá hlavně Scrumem a správným vývojem software (prevence chyb, vyšší produktivita).

Independent software gardener, libertarian, web applications consultant and trainer. Google Developer Expert since 2012.

Věděli jste, že nám můžete zasílat zprávičky? (Jen pro přihlášené.)

Komentáře: 13

Přehled komentářů

Visgean Skeloru Re: CoffeeScript po devíti měsících
blizz Re: CoffeeScript po devíti měsících
blizz Re: CoffeeScript po devíti měsících
Martin Malý Re: CoffeeScript po devíti měsících
bauglir Chjo...
HosipLan V anketě...
anonymní kecal Re: V anketě...
asdasd Re: V anketě...
Čelo čtyři znaky
srigi fajn, ale co takto tutorial
Michal Re: fajn, ale co takto tutorial
Tharos Re: fajn, ale co takto tutorial
Martin Malý Re: fajn, ale co takto tutorial
Zdroj: https://www.zdrojak.cz/?p=3533