Přejít k navigační liště

Zdroják » Různé » CoffeeScript po devíti měsících

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?

Komentáře

Subscribe
Upozornit na
guest
13 Komentářů
Nejstarší
Nejnovější Most Voted
Inline Feedbacks
View all comments
Visgean Skeloru

Ale jo, CoffeeScript vypadá dobře, jen si tak říkám proč se učit novou syntax když je tu pyjamas které umožňuje v podstatě to samé… Výhodu bych viděl snad jenom v tom že CoffeeScript se zdá být o mnoho živější…

BTW: ta anketa je trochu vyhraněná…

blizz

veľmi pekný jazyk aj keď je to vpodstate stále len JS oblečený v inom kabáte. výhoda je že zdroják sa oproti JS scvrkáva na 1/3. bohužiaľ od JS zdedil aj nevýhody napr. nemôžem si overloadnuť operátor ako funkciu (čo sa dá perfektne využiť pri tvorbe DSLka) alebo nemôžem použiť operátor na mieste kde sa vyžaduje funkcia tak ako v pure funkcionálnych jazykoch.

napr. tento zápis by mal spočítať jedna plus jedna, ale ono to prekvapivo vyhadzuje chybu proste je to stále len JSko:

alert ((a, b, func) -> func a, b) 1, 1, (+)

musím operátor obaliť do funkcie tento zápis už funguje:

alert ((a, b, func) -> func a, b) 1, 1, (a, b) -> a + b

blizz

a inak CoffeeScript sa dá kompilovať aj priamo z .NET aplikácie stačí pridať do projektu CoffeeScript.dll http://ipremiere.sk/apps/Utils/CoffeeScriptNET.zip

var compiler = new CoffeeScript.Cof­feeScriptCompi­ler();
MessageBox.Show(com­piler.Compile(„dru­haMocnina = (x) -> x * x“));

bauglir

Jsem si říkal, že názor pana Steigerwalda bude zajímavý, ale konec

„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““

z něj dělá jenom nadšeneckou průpovidku typu „CS je cool a kdo není s námi je lama a 100 let za vopicema“….

ale jinak dík za přípomenutí… už koukám na dokumentaci… pak to zvážím :)

Filip Procházka

… mi chybí volba „Líbí se mi a co nejdříve ho použiji“

anonymní kecal

anebo „Zatím jsem něm jen slyšel, ale chystém se jej vyzkoušet“
anebo „Líbí se mi, ale sám pro něj praktické využití nemám“

asdasd

Přesně tyhle dvě odpovědi mi tam chybí taky, proto jsem nehlasoval. Nejspíš bych volil tu první.

Čelo

Využívám a sdílím nadšení. Od té doby je psaní čistého Javascriptu pro mne děsnej vo*rd.

Srigi

Dakujem za fajn clanok, ale neslo by tu osvetu spravit trosku praktickejsim sposobom. Pan Maly tu nedavno odbornikov vyzyval k akcii (publikovaniu svojich how-know) a takto si to fakt nepredstavujem.

Cim to, ze do dnes som nevidel (cez Twitter mi do feedu neprisiel) jediny clanok o persistencii dat v Node.js? V clanku sa pise o objavovani kolesa – je krajne neefektivne tu cesticku „persistencia dat v Node“ vykracat sam, ked niekto to koleso uz objavil, ale iba to nezdokumentoval.

absolutne chapem, ze podobny clanok/postup sa da vygooglit, skvor si povzdychujem rovnako ako @adent, nad nasou schopnostou prinasat hodnoty pre ostatnych formou tutoriaov

Michal

A cim prispejete vy?

Tharos

Bohužel jsem se netrefil. Auto komentáře část svého know-how veřejně sdílí a je autorem i zde na Zdrojáku.

Enum a statická analýza kódu

Mám jednu univerzální radu pro začínající programátorty. V učení sice neexistují rychlé zkratky, ovšem tuhle radu můžete snadno začít používat a zrychlit tak tempo učení. Tou tajemnou ingrediencí je statická analýza kódu. Ukážeme si to na příkladu enum.