_ _    _ _____  ___   __                       
 __      _(_) | _(_)___ / ( _ ) / /_   ___ ___  _ __ ___  
 \ \ /\ / / | |/ / | |_ \ / _ \| '_ \ / __/ _ \| '_ ` _ \ 
  \ V  V /| |   <| |___) | (_) | (_) | (_| (_) | | | | | |
   \_/\_/ |_|_|\_\_|____/ \___/ \___(_)___\___/|_| |_| |_|

CoffeeScript

W tym artykule zbadamy fascynującą historię CoffeeScript, tematu, który wzbudził zainteresowanie ludzi w każdym wieku i o każdym pochodzeniu. Od swoich początków po dzisiejsze znaczenie, CoffeeScript odegrał kluczową rolę w społeczeństwie i kulturze. Przez lata wywoływał debaty, generował pasje i ewoluował na wiele sposobów. Przeanalizujemy jego wpływ w różnych obszarach i jego wpływ na życie codzienne. Dodatkowo przeanalizujemy różne perspektywy związane z CoffeeScript, od opinii ekspertów po osobiste doświadczenia osób, których to zjawisko dotknęło. Ostatecznie ten artykuł ma na celu przedstawienie kompleksowej i wzbogacającej wizji CoffeeScript, zachęcając czytelnika do refleksji, kwestionowania i docenienia jego złożoności.
CoffeeScript
Logo języka CoffeeScript
Logo języka
Pojawienie się

13 grudnia 2009; ponad 14 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

CoffeeScriptjęzyk programowania transpilowany do JavaScriptu. CoffeeScript dodaje lukier składniowy zainspirowany przez Ruby’ego i Pythona, aby zwiększyć łatwość użycia. 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

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”. Transpilator (parser i lekser) został napisany w języku Ruby. Oficjalne, wstępne wydanie pojawiło się 24 grudnia tego samego roku.

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). Jison tworzył kod JavaScript, więc możliwe stało się uruchomienie CS w Node.js. Na tym etapie autor ostrzegał jeszcze o niestabilności CS, w szczególności o możliwych, znacznych zmianach składni CS.

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

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). 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. W swoim artykule porównywał CS z propozycjami, które zamierza przedstawić TC39 w pracach nad „Harmony” (wersja JS, która później przerodziiła się w ES6). 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.

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.

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”.

Dystrybucja

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. Jedną z alternatyw dla Node.js jest Coffee Maven Plugin, plugin dla systemu budowania Apache Maven. Istnieje również oficjalny gem Ruby, który jest narzędziem pomostowym do kompilacji CS.

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.

Przykłady

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ż

Przypisy

  1. a b c d CoffeeScript , jashkenas.github.com, 1 marca 2010 (ang.).
  2. a b Jeremy Ashkenas, initial commit of the mystery language · jashkenas/coffeescript , GitHub, 13 grudnia 2009 (ang.).
  3. Tags 0.1.x · jashkenas/coffeescript , GitHub (ang.).
  4. zaach's jison at master - GitHub , github.com, 22 lutego 2010 (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 , Ruby on Rails Guides, 2011 (ang.).
  9. a b c Brendan Eich, Harmony Of My Dreams , brendaneich.com, 2011 .
  10. Funkcje, Nicholas C. Zakas, ECMAScript 6 : przewodnik po nowym standardzie języka JavaScript, Helion, 2016, s. 59-93 (pol.).
  11. ECMAScript® 2024 Language Specification , tc39.es .
  12. Dan Wheeler, Ziga Mahkovec, Chris Varenhorst, Dropbox dives into CoffeeScript , 13 września 2012 (ang.).
  13. David Goldstein, The Great CoffeeScript to Typescript Migration of 2017 , Dropbox.Tech, 13 maja 2020 (ang.).
  14. Announcing CoffeeScript 2 , coffeescript.org .
  15. Jeremy Ashkenas, CoffeeScript , jashkenas.github.com, 27 kwietnia 2012 (ang.).
  16. Mark Derricutt, talios/coffee-maven-plugin , 4 listopada 2022 .
  17. Jeremy Ashkenas, Joshua Peek, Sam Stephenson, coffee-script - RubyGems , rubygems.org (ang.).
  18. CoffeeScript , coffeescript.org .

Linki zewnętrzne