Przejdź do zawartości

CoffeeScript

Z Wikipedii, wolnej encyklopedii
CoffeeScript
Logo języka CoffeeScript
Logo języka
Pojawienie się

13 grudnia 2009; około 16 lat temu

Paradygmat

wieloparadygmatowy: bazujący na prototypach, imperatywny, funkcyjny, skryptowy

Typowanie

dynamiczne, słabe

Aktualna wersja stabilna

2.7.0
(24 kwietnia 2022) [±]

Twórca

Jeremy Ashkenas

Licencja

Licencja MIT

Platforma sprzętowa

wieloplatformowy

Platforma systemowa

wieloplatformowy

Strona internetowa

CoffeeScript – język programowania transpilowany do JavaScriptu. CoffeeScript dodaje lukier składniowy zainspirowany przez Ruby’ego i Pythona, aby zwiększyć łatwość użycia[1]. Język oferuje także bardziej wyrafinowane możliwości, takie jak przetwarzanie tablic i dopasowywanie do wzorców.

CoffeeScript cieszy się stosunkowo dużą popularnością w społeczności programistów Ruby’ego. Twórcy Ruby on Rails stworzyli na jego bazie system szablonów i sam CoffeeScript był również jedną z bibliotek dostarczanych z Ruby on Rails od wersji 3.1. Brendan Eich stwierdził, że CoffeeScript miał wpływ na wersje ES6 języka JavaScript.

Historia

[edytuj | edytuj kod]

W dniu 13 grudnia 2009 roku Jeremy Ashkenas(inne języki) wykonał pierwszy commit (Git) dla CoffeeScript z komentarzem: „initial commit of the mystery language”[2]. Transpilator (parser i lekser) został napisany w języku Ruby[2]. Oficjalne, wstępne wydanie pojawiło się 24 grudnia tego samego roku[3].

Na początku 2010 roku Ashkenas wydał wersję 0.5, w której kluczową zmianą było zastąpienie Ruby'ego przez transpilator pisany w CoffeeScript z nakładką utworzoną za pomocą generatora parserów Jison (podobnego do Bisona)[1]. Jison tworzył kod JavaScript, więc możliwe stało się uruchomienie CS w Node.js[4]. Na tym etapie autor ostrzegał jeszcze o niestabilności CS, w szczególności o możliwych, znacznych zmianach składni CS[1].

W listopadzie 2010 twórcy Ruby on Rails wydali nowy system szablonów bazujący na CoffeScript[5]. Natomiast 24 grudnia 2010 roku Ashkenas na portalu Hacker News(inne języki) ogłosił wydanie stabilnej wersji 1.0.0[6][7]. W sierpniu 2011, wraz z wydaniem Ruby on Rails w wersji 3.1, CoffeeScript stał się jedną z bibliotek dostarczanych w ramach platformy RoR[8].

W 2011 Brendan Eich, jeden z członków komitetu TC39, przyznał, że CoffeScript jest „dobrze wykonany i wygodniejszy w użyciu niż JS” (wówczas ES5)[9]. Jednocześnie zauważył, że CS jako swoisty polyfill nie będzie miał szans osiągnąć podobnej wydajności do JS i to JS powinien się zmieniać w kierunku wygody użycia znanej z CS[9]. W swoim artykule porównywał CS z propozycjami, które zamierza przedstawić TC39 w pracach nad „Harmony” (wersja JS, która później przerodziła się w ES6)[9]. Parametry resztkowe oraz wyrażenia lambda (funkcje strzałkowe) znane z CS pojawiły się później w podobnej formie w JS, w tym w wersji ES6 znanej później jako ES2015[1][10][11].

13 września 2012 roku Dropbox ogłosił, że ich kod po stronie przeglądarki został przepisany z JavaScript na CoffeeScript, jednak w maju 2017 roku przeniesiono go do TypeScript[12][13].

18 września 2017 roku wydano wersję 2.0.0, która „ma na celu przyniesienie CoffeeScript do współczesnej ery JavaScript, zamykając luki w kompatybilności z JavaScript i jednocześnie zachowując czystą składnię, która jest znakiem rozpoznawczym CoffeeScript”[14].

Dystrybucja

[edytuj | edytuj kod]

Kompilator CoffeeScript jest self-hosting(inne języki) od wersji 0.5 i jest dostępny jako pakiet Node.js; jednak rdzeń transpilatora nie wymaga Node.js do działania i można go uruchomić w dowolnym środowisku JavaScript[15]. Jedną z alternatyw dla Node.js jest Coffee Maven Plugin, plugin dla systemu budowania Apache Maven[16]. Istnieje również oficjalny gem Ruby, który jest narzędziem pomostowym do kompilacji CS[17].

Oficjalna strona na CoffeeScript.org zawiera pola tekstowe, które nie tylko na żywo kompilują CoffeeScript do kodu JavaScript, ale również umożliwiają uruchomienie go bezpośrednio w przeglądarce[18].

Przykłady

[edytuj | edytuj kod]

Typowy fragment kodu JavaScript z użyciem biblioteki jQuery:

$(document).ready(function() {
  // Kod inicjalizacyjny
});

W CoffeeScript słowo kluczowe function jest zastąpione przez symbol ->. Wcięcia zastępują nawiasy klamrowe, podobnie jak w Pythonie. Dodatkowo, najczęściej nawiasy mogą być pominięte. Analogiczny do powyższego fragment kodu w CoffeeScript wygląda następująco:

$(document).ready ->
  # Kod inicjalizacyjny

Lub krócej, co wynika z definicji skróconego użycia kodu $(document).ready():

$ ->
  # Kod inicjalizacyjny

Od ES2015 ten sam kod w JavaScript można zapisać tak:

$(() => {
  // Kod inicjalizacyjny
});

Zobacz też

[edytuj | edytuj kod]

Przypisy

[edytuj | edytuj kod]
  1. 1 2 3 4 CoffeeScript [online], jashkenas.github.com, 1 marca 2010 [dostęp 2023-12-09] [zarchiwizowane z adresu 2010-03-01] (ang.).
  2. 1 2 Jeremy Ashkenas, initial commit of the mystery language · jashkenas/coffeescript [online], GitHub, 13 grudnia 2009 [dostęp 2023-12-09] (ang.).
  3. ↑ Tags 0.1.x · jashkenas/coffeescript [online], GitHub [dostęp 2023-12-09] (ang.).
  4. ↑ zaach's jison at master - GitHub [online], github.com, 22 lutego 2010 [dostęp 2023-12-09] [zarchiwizowane z adresu 2010-02-22] (ang.).
  5. ↑ Carson, Ryan. „New Rails-like Framework from 37signals for HTML5 Mobile Apps”, Think Vitamin blog, Nov 8, 2010.
  6. ↑ Hacker News. CoffeeScript 1.0.0 announcement zamieszczone przez Jeremy Ashkenas 24 grudnia 2010 roku
  7. ↑ Hacker News. Original CoffeeScript announcement zamieszczone przez Jeremy Ashkenas 24 grudnia 2009 roku
  8. ↑ Ruby on Rails 3.1 Release Notes [online], Ruby on Rails Guides, 2011 [dostęp 2023-12-09] (ang.).
  9. 1 2 3 Brendan Eich, Harmony Of My Dreams [online], brendaneich.com, 2011 [dostęp 2023-12-09].
  10. ↑ Funkcje, [w:] Nicholas C. Zakas, ECMAScript 6 : przewodnik po nowym standardzie języka JavaScript, Helion, 2016, s. 59-93 (pol.).
  11. ↑ ECMAScript® 2024 Language Specification [online], tc39.es [dostęp 2023-12-09].
  12. ↑ Dan Wheeler, Ziga Mahkovec, Chris Varenhorst, Dropbox dives into CoffeeScript [online], 13 września 2012 [dostęp 2013-05-11] (ang.).
  13. ↑ David Goldstein, The Great CoffeeScript to Typescript Migration of 2017 [online], Dropbox.Tech, 13 maja 2020 [dostęp 2020-06-30] (ang.).
  14. ↑ Announcing CoffeeScript 2 [online], coffeescript.org [dostęp 2023-12-09].
  15. ↑ Jeremy Ashkenas, CoffeeScript [online], jashkenas.github.com, 27 kwietnia 2012 [dostęp 2023-12-09] [zarchiwizowane z adresu 2012-04-27] (ang.).
  16. ↑ Mark Derricutt, talios/coffee-maven-plugin [online], 4 listopada 2022 [dostęp 2023-12-09].
  17. ↑ Jeremy Ashkenas, Joshua Peek, Sam Stephenson, coffee-script - RubyGems [online], rubygems.org [dostęp 2023-12-09] (ang.).
  18. ↑ CoffeeScript [online], coffeescript.org [dostęp 2023-12-09].

Linki zewnętrzne

[edytuj | edytuj kod]