software.wikisort.org - Linguaggio

Search / Calendar

CoffeeScript è un linguaggio di programmazione che si transcompila in JavaScript. Esso aggiunge lo zucchero sintattico ispirato da Ruby, Python e Haskell nel tentativo di accrescere la leggibilità e concisione di JavaScript.[1] Specifiche funzionalità aggiuntive includono la comprensione di lista e la ricerca di corrispondenza.

CoffeeScript
linguaggio di programmazione
AutoreJeremy Ashkenas
Data di origine13 dicembre 2009
Ultima versione2.5.1 rilasciata il 31 gennaio 2020
UtilizzoSviluppo di applicazioni web
ParadigmiFunzionale, imperativo, scripting
TipizzazioneInesistente
Estensioni comuni.coffee, .litcoffee
Influenzato daJavaScript, Perl, Haskell, Python, YAML, Ruby
Ha influenzatoMoonScript, JavaScript
Implementazione di riferimento
Sistema operativoCross-Platform
LicenzaMIT
Sito webcoffeescript.org/

Il supporto di CoffeeScript è incluso nella versione 3.1 di Ruby on Rails.[2] Nel 2011, Brendan Eich fece riferimento a CoffeeScript come un'influenza nei suoi pensieri sul futuro di JavaScript.[3]


Storia


Il 13 dicembre 2009 Jeremy Ashkenas fece il suo primo commit Git di CoffeeScript con il commento: "commit iniziale del linguaggio misterioso."[4] Il compilatore era scritto in Ruby. Il 24 dicembre egli creò la prima release taggata e commentata, 0.1.0. Il 21 febbraio 2010 eseguì il commit della versione 0.5, che sostituì il compilatore Ruby con una versione self-hosting in CoffeeScript puro. A quel punto il progetto aveva attratto svariati altri contributori su GitHub, e stava ricevendo più di 300 visualizzazioni di pagina al giorno.

Il 24 dicembre 2010 Ashkenas annunciò il rilascio della versione stabile 1.0.0 a Hacker News, il sito dove il progetto era stato annunciato per la prima volta.[5]


Sintassi


Quasi ogni cosa in CoffeeScript è un'espressione, per esempio le espressioni if, switch efor (che non ritornano nessun valore in JavaScript) ritornano un valore. Come in Perl, queste dichiarazioni di controllo hanno anche versioni di suffisso; per esempio, if può anche essere scritto dopo la dichiarazione condizionale.

Molte parentesi tonde e graffe non necessarie possono essere omesse; per esempio, i blocchi di codice possono essere denotati da indentazione invece che da parentesi graffe, le chiamate delle funzioni sono implicite, e gli object literal sono spesso rilevati automaticamente.


Esempi



Test d'intervallo


Per calcolare l'indice di massa corporea, qualcuno potrebbe scrivere (in JavaScript):

var mass = 72
var height = 1.78
var BMI = mass / (height * height)
if (18.5 < BMI && BMI < 25) alert('You are healthy!')

Con CoffeeScript l'intervallo è direttamente descritto:

mass = 72
height = 1.78
BMI = mass / height**2
alert 'You are healthy!' if 18.5 < BMI < 25

Cicli e comprensioni


Per calcolare il massimo comun divisore di due interi con l'algoritmo di Euclide, in JavaScript c'è bisogno solitamente di un ciclo while:

function gcd(x, y) {
  var z
  do {
    z = x % y
    x = y
    y = z
  } while (y != 0)
  return x
}

Mentre in CoffeeScript si può invece usare until e il pattern-matching:

gcd = (x, y) ->
  [x, y] = [y, x%y] until y is 0
  x

Qualsiasi ciclo for può essere rimpiazzato da una comprensione di lista; in tal modo per calcolare il quadrato dei numeri dispari positivi più piccoli di dieci (quindi i numeri il quale resto di modulo 2 è 1), si può fare:

alert n*n for n in [1..10] when n%2 is 1

Alternativamente, c'è:

alert n*n for n in [1..10] by 2

Si può implementare una ricerca sequenziale con un 

names = ["Ivan", "Joanna", "Nikolay", "Mihaela"]
linearSearch = (searchName) -> alert(name) for name in names when name is searchName

La sintassi for ... in permette di ciclare su array, mentre la sintassi for ... of permette di ciclare su oggetti. Si può utilizzare la parola chiave ? per controllare velocemente se una variabile è null oundefined :

personCheck = ->
  if not person? then alert("No person") else alert("Have person")
person = null
personCheck() 
person = "Ivan"
personCheck()

Questo codice mostrerà a schermo "No person" se la variabile è null o undefined e "Have person" se c'è presente qualcosa.


Funzioni e jQuery


Un frammento JavaScript comune utilizzando la libreria jQuery è:

$(document).ready(function() {
  // Initialization code goes here
})

Oppure solo:

$(function() {
  // Initialization code goes here
})

In CoffeeScript, la parola chiave function è sostituita dal simbolo -> , e viene usata l'indentazione invece che le parentesi graffe, come in altri linguaggi off-side rule come Python e Haskell. Inoltre, le parentesi possono essere generalmente omesse, usando invece il livello d'indentazione per denotare una funzione o blocco. Quindi, l'equivalente CoffeeScript del frammento sopra è:

$(document).ready ->
  # Initialization code goes here

O solo:

$ ->
  # Initialization code goes here

Interpolazione di stringhe


L'interpolazione di stringhe in stile Ruby è inclusa in CoffeScript. Le stringhe con doppi apici permettono valori interpolati, usando #{ ... }, e le stringhe con singolo apice sono literal.

author = "Wittgenstein"
quote  = "A picture is a fact. -- #{ author }"

sentence = "#{ 22 / 7 } is a decent approximation of π"

Compilazione


Il compilatore CoffeeScript è stato scritto in CoffeeScript dalla versione 0.5 ed è disponibile come un'utility Node.js; comunque, il nucleo del compilatore non si affida a Node.js e può essere eseguito in qualsiasi ambiente JavaScript.[6] Un'alternativa all'utility Node.js è il Plugin Maven Coffee, un plugin per il sistema di build Apache Maven. Il plugin usa il motore JavaScript Rhino scritto in Java.

Il sito ufficiale CoffeeScript.org ha un bottone "Prova CoffeeScript" nella barra del menu; cliccandolo viene aperta una finestra in cui l'utente può scrivere codice CoffeeScript, vedere l'output JavaScript ed eseguirlo direttamente nel browser. Il sito js2coffee[7] fornisce una traduzione bi-direzionale.


Ultime aggiunte



Adozione


Il 13 settembre 2012 Dropbox ha annunciato che i suoi codebase lato browser sono stati riscritti da JavaScript a CoffeeScript.

La guida interna di stile di GitHub una volta disse "scrivi nuovo JS in CoffeeScript", e anche se non lo dice più, tutti i consigli in quella guida di stile si riferiscono a come scrivere un buon CoffeeScript, e il loro editor di testo Atom è anch'esso scritto in quel linguaggio.


Note


  1. Alex MacCaw, The Little Book on CoffeScript, O'Reilly Media, January 2012, ISBN 978-1-4493-2105-5.
  2. , Joshua.
  3. Eich, Brendan.
  4. Github. 'initial commit of the mystery language'
  5. Hacker News.
  6. CoffeeScript Archiviato il 27 dicembre 2009 in Internet Archive..
  7. Rico Sta Cruz, js2coffee, su js2.coffee. URL consultato l'11 maggio 2014.

Bibliografia



Voci correlate



Collegamenti esterni


Controllo di autoritàLCCN (EN) sh2012001950

На других языках


[fr] CoffeeScript

CoffeeScript est un langage de programmation, qui se compile en JavaScript. Le langage ajoute du sucre syntaxique inspiré par Python, Ruby et Haskell[2] afin d'améliorer la brièveté et la lisibilité du JavaScript, tout en ajoutant des fonctionnalités comme le filtrage par motif ou les listes en compréhension.
- [it] CoffeeScript

[ru] CoffeeScript

CoffeeScript ([’kɔ:fɪ skrɪpt]; кофи скрипт) — язык программирования, транслируемый в JavaScript. CoffeeScript добавляет синтаксический сахар в духе Ruby, Python, Haskell и Erlang для того, чтобы улучшить читаемость кода и уменьшить его размер. CoffeeScript позволяет писать более компактный код по сравнению с JavaScript[3]. JavaScript-код, получаемый трансляцией из CoffeeScript, полностью проходит проверку JavaScript Lint.



Текст в блоке "Читать" взят с сайта "Википедия" и доступен по лицензии Creative Commons Attribution-ShareAlike; в отдельных случаях могут действовать дополнительные условия.

Другой контент может иметь иную лицензию. Перед использованием материалов сайта WikiSort.org внимательно изучите правила лицензирования конкретных элементов наполнения сайта.

2019-2025
WikiSort.org - проект по пересортировке и дополнению контента Википедии