CoffeeScript: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
RolloBot (discussione | contributi)
m Bot: Correzione di uno o più errori comuni
+cat, tmp
Riga 1:
{{tmp|Linguaggio di programmazione}}
'''CoffeeScript''' &nbsp;è un linguaggio di programmazione che si [[transcompila]] in [[JavaScript]]. Esso aggiunge lo &nbsp;[[zucchero sintattico]] &nbsp;ispirato da [[Ruby]], [[Python]] e [[Haskell]] &nbsp;nel tentativo di accrescere la leggibilità e concisione di JavaScript.<ref name="thelittlebookoncoffeescript">{{Cita libro|title=The Little Book on CoffeScript|author=Alex MacCaw|publisher=[[O'Reilly Media]]|date=January 2012|isbn=978-1-4493-2105-5}}</ref> &nbsp;Specifiche funzionalità aggiuntive includono la [[comprensione di lista]] &nbsp;e la [[ricerca di corrispondenza]].
 
Il supporto di CoffeeScript è incluso nella versione 3.1 di [[Ruby on Rails]].<ref>, Joshua. </ref> &nbsp;Nel 2011, [[Brendan Eich]] fece riferimento a CoffeeScript come un'influenza nei suoi pensieri sul futuro di JavaScript.<ref>Eich, Brendan. </ref>
 
== Storia ==
Il 13 dicembre 2009 Jeremy Ashkenas fece il suo primo commit Git di CoffeeScript con il commento: "commit iniziale del linguaggio misterioso."<ref>Github. [https://github.com/jashkenas/coffee-script/commit/8e9d637985d2dc9b44922076ad54ffef7fa8e9c2 'initial commit of the mystery language']</ref> 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]] &nbsp;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.<ref>Hacker News. </ref>
 
== Sintassi ==
Quasi ogni cosa in CoffeeScript è un'espressione, per esempio le espressioni &nbsp;<code>if</code>, <code>switch</code> e<code>for</code> &nbsp;(che non ritornano nessun valore in JavaScript) ritornano un valore. Come in Perl, queste dichiarazioni di controllo hanno anche versioni di suffisso; per esempio, <code>if</code> 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.
Line 29 ⟶ 30:
 
=== Cicli e comprensioni ===
Per calcolare il [[Massimo comune divisore|massimo comun divisore]] &nbsp;di due interi con l'[[algoritmo di Euclide]], in JavaScript c'è bisogno solitamente di un ciclo ''while'':<source lang="javascript">
function gcd(x, y) {
var z
Line 39 ⟶ 40:
return x
}
</source>Mente in CoffeeScript si può invece usare &nbsp;<code>until</code> e il pattern-matching:<source lang="coffeescript">
gcd = (x, y) ->
[x, y] = [y, x%y] until y is 0
x
</source>Qualsiasi ciclo ''for'' &nbsp;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:<source lang="coffeescript">
alert n*n for n in [1..10] when n%2 is 1
</source>Alternativamente, c'è:<source lang="coffeescript">
alert n*n for n in [1..10] by 2
</source>Si può implementare una [[Ricerca lineare|ricerca]] sequenziale &nbsp;con un &nbsp;<source lang="coffeescript">
names = ["Ivan", "Joanna", "Nikolay", "Mihaela"]
linearSearch = (searchName) -> alert(name) for name in names when name is searchName
</source>La sintassi &nbsp;<code>for ... in</code> permette di ciclare su array, mentre la sintassi &nbsp;<code>for ... of</code> permette di ciclare su oggetti.
 
Si può utilizzare la parola chiave &nbsp;<code>?</code> &nbsp;per controllare velocemente se una variabile è &nbsp;<code>null</code> o<code>undefined</code> :<source lang="coffeescript">
personCheck = ->
if not person? then alert("No person") else alert("Have person")
Line 59 ⟶ 60:
person = "Ivan"
personCheck()
</source>Questo altererebbe "No person" se la variabile fosse &nbsp;<code>null</code> o &nbsp;<code>undefined</code> e "Have person" se ci fosse qualcosa.
 
=== Funzioni e jQuery ===
Line 70 ⟶ 71:
// Initialization code goes here
})
</source>In CoffeeScript, la parola chiave<code>function</code> è sostituita dal simbolo &nbsp;<code>-></code> &nbsp;, e viene usata l'indentazione invece che le parentesi graffe, come in altri linguaggi [[off-side rule]] &nbsp;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 è:<source lang="coffeescript">
$(document).ready ->
# Initialization code goes here
Line 87 ⟶ 88:
 
== 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.<ref>[http://jashkenas.github.com/coffee-script/#installation CoffeeScript]. </ref> &nbsp;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<ref>{{Cita web|url=http://js2.coffee|title=js2coffee|last=Sta Cruz|first=Rico|accessdate=11 May 2014}}</ref> &nbsp;fornisce una traduzione bi-direzionale.
 
== Ultime aggiunte ==
* La mappa sorgente permette agli utenti di debuggare direttamente il loro codice CoffeeScript, supportando i traceback CoffeeScript su errori runtime.
* CoffeeScript supporta una forma di[[ &nbsp;Literate Programming]], usando un'estensione &nbsp;<code>.coffee.md</code> o &nbsp;<code>.litcoffee</code>. Questo permette al codice sorgente CoffeeScript di essere scritto in [[Markdown]]. Il compilatore trattera qualsiasi blocco indentato (il metodo di Markdown di indicare il codice sorgente) com codice, e ignorare il resto come commenti.
 
== Adozione ==
Il 13 settembre 2012 [[Dropbox]] &nbsp;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 è anchesso scritto in quel linguaggio.
Line 105 ⟶ 106:
* [[DART (linguaggio)|Dart]]
* Opa
* [[TypeScript]], un rigoroso superinsieme open-source di linguaggio JavaScript da &nbsp;[[Microsoft]]
* [http://rapydscript.pyjeon.com/ RapydScript],<ref>{{Cita web|url=https://bitbucket.org/pyjeon/rapydscript|title=Rapydscript bitbucket repository|date=3 Apr 2013|website=Atlassian Bitbucket|accessdate=11 May 2014}}</ref> &nbsp;un traduttore con una sintassi più Pythonic
* LiveScript
* [http://ckknight.github.io/gorillascript/ GorillaScript], che offre controlli di tipi aggiuntivi e zucchero sintattico per pattern JS comuni come callback in linea
Line 120 ⟶ 121:
* {{Cita pubblicazione|first1=Trevor|last1=Burnham|date=August 3, 2011|title=CoffeeScript: Accelerated JavaScript Development|edition=First|publisher=[[Pragmatic Bookshelf]]|page=138|isbn=978-1934356784|url=http://pragprog.com/book/tbcoffee/coffeescript}}
 
== LinkCollegamenti esterni ==
* [coffeescript.org Sito ufficiale]
* [https://github.com/jashkenas/coffeescript coffee-script] su GitHub
 
{{Categorizzare}}
[[Categoria:Linguaggi di programmazione]]