CoffeeScript – Wikipedia, wolna encyklopedia
Logo języka | |
Pojawienie się | 13 grudnia 2009; ponad 15 lat temu |
---|---|
Paradygmat | wieloparadygmatowy: bazujący na prototypach, imperatywny, funkcyjny, skryptowy |
Typowanie | |
Aktualna wersja stabilna | 2.7.0 |
Twórca | Jeremy Ashkenas |
Licencja | |
Platforma sprzętowa | |
Platforma systemowa | |
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 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 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 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]- ↑ a b c d CoffeeScript [online], jashkenas.github.com, 1 marca 2010 [dostęp 2023-12-09] [zarchiwizowane z adresu 2010-03-01] (ang.).
- ↑ a b Jeremy Ashkenas , initial commit of the mystery language · jashkenas/coffeescript [online], GitHub, 13 grudnia 2009 [dostęp 2023-12-09] (ang.).
- ↑ Tags 0.1.x · jashkenas/coffeescript [online], GitHub [dostęp 2023-12-09] (ang.).
- ↑ zaach's jison at master - GitHub [online], github.com, 22 lutego 2010 [dostęp 2023-12-09] [zarchiwizowane z adresu 2010-02-22] (ang.).
- ↑ Carson, Ryan. „New Rails-like Framework from 37signals for HTML5 Mobile Apps”, Think Vitamin blog, Nov 8, 2010.
- ↑ Hacker News. CoffeeScript 1.0.0 announcement zamieszczone przez Jeremy Ashkenas 24 grudnia 2010 roku
- ↑ Hacker News. Original CoffeeScript announcement zamieszczone przez Jeremy Ashkenas 24 grudnia 2009 roku
- ↑ Ruby on Rails 3.1 Release Notes [online], Ruby on Rails Guides, 2011 [dostęp 2023-12-09] (ang.).
- ↑ a b c Brendan Eich , Harmony Of My Dreams [online], brendaneich.com, 2011 [dostęp 2023-12-09] .
- ↑ Funkcje, [w:] Nicholas C. Zakas , ECMAScript 6 : przewodnik po nowym standardzie języka JavaScript, Helion, 2016, s. 59-93 (pol.).
- ↑ ECMAScript® 2024 Language Specification [online], tc39.es [dostęp 2023-12-09] .
- ↑ Dan Wheeler , Ziga Mahkovec , Chris Varenhorst , Dropbox dives into CoffeeScript [online], 13 września 2012 [dostęp 2013-05-11] (ang.).
- ↑ David Goldstein , The Great CoffeeScript to Typescript Migration of 2017 [online], Dropbox.Tech, 13 maja 2020 [dostęp 2020-06-30] (ang.).
- ↑ Announcing CoffeeScript 2 [online], coffeescript.org [dostęp 2023-12-09] .
- ↑ Jeremy Ashkenas , CoffeeScript [online], jashkenas.github.com, 27 kwietnia 2012 [dostęp 2023-12-09] [zarchiwizowane z adresu 2012-04-27] (ang.).
- ↑ Mark Derricutt , talios/coffee-maven-plugin [online], 4 listopada 2022 [dostęp 2023-12-09] .
- ↑ Jeremy Ashkenas , Joshua Peek , Sam Stephenson , coffee-script - RubyGems [online], rubygems.org [dostęp 2023-12-09] (ang.).
- ↑ CoffeeScript [online], coffeescript.org [dostęp 2023-12-09] .
Linki zewnętrzne
[edytuj | edytuj kod]- CoffeeScript.org – oficjalna witryna
- Repozytorium kodu na GitHubie