CoffeeScript

CoffeeScript
Logo.

Date de première version (16 ans, 253 jours)
Paradigme Multi-paradigme
Auteur Jeremy Ashkenas
Dernière version 2.7.0 ()[1],[2]Voir et modifier les données sur Wikidata
Version en développement 2.0.0-alpha1 ()[2]
2.0.0-beta1 ()[2]
2.0.0-beta2 ()[2]
2.0.0-beta3 ()[2]
2.0.0-beta4 ()[2]
2.0.0-beta5 ()[2]Voir et modifier les données sur Wikidata
Typage Dynamique, faible
Influencé par JavaScript, Python, Ruby, Haskell[3], YAML[4]
A influencé MoonScript
Écrit en CoffeeScript et JavaScriptVoir et modifier les données sur Wikidata
Système d'exploitation Multiplate-forme
Licence Licence MIT[5]Voir et modifier les données sur Wikidata
Site web coffeescript.orgVoir et modifier les données sur Wikidata
Extension de fichier coffeeVoir et modifier les données sur Wikidata

CoffeeScript est un langage de programmation, qui se compile en JavaScript. Le langage ajoute du sucre syntaxique inspiré par Python, Ruby et Haskell[3] 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.

Le résultat est compilé de façon prévisible en JavaScript, et les programmes peuvent être écrits avec moins de code (typiquement un tiers de lignes en moins) sans effet sur la vitesse d'exécution[6]. Depuis le , CoffeeScript est dans la liste des projets les plus populaires de GitHub[7].

Le langage a une popularité relativement importante dans la communauté de Ruby. Le support de CoffeeScript est inclus dans la version 3.1 de Ruby on Rails[8]. De plus, Brendan Eich a cité CoffeeScript comme une influence sur son idée du futur du JavaScript[9],[10]. En 2018, CoffeeScript est moins utilisé que dans les années précédentes, mais a largement contribué à l'évolution du langage JavaScript.

Histoire

Le , Jeremy Ashkenas a effectué le premier commit Git de CoffeeScript avec le commentaire : « initial commit of the mystery language » (« premier commit du langage mystère »)[11]. Le compilateur était écrit en Ruby. Le , il a publié la première version numérotée et documentée, la 0.1.0. Le , la version 0.5 a été publiée, remplaçant le compilateur Ruby par un compilateur écrit en pur CoffeeScript. À ce moment, le projet a attiré plusieurs autres contributeurs sur GitHub, et les pages du site étaient vues plus de 300 fois par jour.[réf. souhaitée]

Le , Ashkenas a annoncé la publication de la version stable 1.0.0 sur Hacker News, le site où le projet a été annoncé pour la première fois[12],[13].

Exemples

Tests et compréhensions

Pour calculer l'IMC de Barry, joueur de basket amateur, on fait d'habitude quelque chose comme ceci (ici en JavaScript):

var masse = 72;
var taille = 1.86;
var IMC = masse/taille/taille;
if ((18.5 < IMC) && (IMC < 25)) {
    alert('Barry a une corpulence normale');
}

CoffeeScript permet de combiner les deux tests en un seul:

masse = 72
taille = 1.78
IMC = masse/taille/taille
if 18.5<IMC<25 then alert 'Barry a une corpulence normale'

ou, plus naturellement pour qui est habitué à la langue anglaise,

masse = 72
taille = 1.78
IMC = masse/Math.pow taille, 2 
alert 'Barry a une corpulence normale' if 18.5<IMC<25

Boucles et compréhensions

En général, l'implémentation de l'algorithme d'Euclide utilise une boucle tant que (ici, en Python) :

def pgcd(a, b):
    x, y = a, b
    while y > 0:
        x, y = y, x % y
    return x

C'est également possible en CoffeeScript; mais celui-ci possède également une boucle jusqu'à :

pgcd = (a,b) ->
    [x,y] = [a,b]
    [x,y] = [y,x%y] until y is 0
    x

Une boucle for peut souvent être remplacée par une liste en compréhension. Par exemple, pour calculer les carrés des premiers nombres impairs (c'est-à-dire dont le reste modulo 2 vaut 1), on peut utiliser l'une des propositions suivantes :

Boucle classique

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

Liste en compréhension

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

Avec un pas de 2

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

Fonctions et jQuery

Le code JavaScript permettant d'initialiser la bibliothèque jQuery est :

$(document).ready(function() {
  // Le code d'initialisation va ici
});

Ou, plus simplement :

$(function() {
  // Le code d'initialisation va ici
});

En CoffeeScript, le mot-clé function est remplacé par le symbole ->, et l'indentation est utilisée à la place des accolades, comme en Python ou en Haskell. Les parenthèses peuvent généralement être omises. Ainsi, le snippet ci-dessus peut être écrit, en CoffeeScript :

$(document).ready ->
  # Le code d'initialisation va ici

Ou bien :

$ ->
  # Le code d'initialisation va ici

Compilation

Le compilateur CoffeeScript est écrit en CoffeeScript depuis la version 0.5 et est disponible en tant qu'utilitaire Node.js ; cependant, la base du compilateur ne nécessite pas Node.js et peut être utilisée dans n'importe quel environnement JavaScript[14]. Une des alternatives à l'utilitaire Node.js est Coffee Maven Plugin, un plugin pour le moteur de production Apache Maven. Ce plugin utilise Mozilla Rhino, un moteur JavaScript écrit en Java.

Le site officiel, CoffeeScript.org, dispose d'un bouton « Essayer CoffeeScript » dans la barre de navigation ; cliquer dessus ouvre une fenêtre modale qui permet d'entrer du code CoffeeScript, de voir le résultat en JavaScript, et de l'essayer directement dans le navigateur. Le site js2coffee propose une traduction bidirectionnelle.

Annexes

Articles connexes

Liens externes

Notes et références

  1. a et b « 2.7.0 », (consulté le )
  2. a b c d e f g et h npmjs (base de données en ligne), consulté le .Voir et modifier les données sur Wikidata
  3. a et b The Changelog. Épisode 0.2.9 - CoffeeScript with Jeremy Ashkenas « Copie archivée » (version du sur archive.org), Jul 23, 2010
  4. (en) Martin Heller, « Turn up your nose at Dart and smell the CoffeeScript », JavaWorld, InfoWorld,‎ (lire en ligne, consulté le )
  5. Open Hub (site web), consulté le .Voir et modifier les données sur Wikidata
  6. Read Write Hack. « Interview with Jeremy Ashkenas »(Archive.orgWikiwixGoogleQue faire ?) (consulté le ), Jan 7, 2011
  7. Github. Popular Watched Repositories « Copie archivée » (version du sur archive.org)
  8. Peek, Joshua. Tweet by Rails Core Team Member on Apr 13, 2011
  9. Eich, Brendan. "Harmony of My Dreams"
  10. Eich, Brendan. "My JSConf.US Presentation"
  11. Github. 'initial commit of the mystery language'
  12. Hacker News. Annonce de CoffeeScript 1.0.0 publiée par Jeremy Ashkenas le
  13. Hacker News. Annonce originale de CoffeeScript publiée par Jeremy Ashkenas le
  14. « CoffeeScript », sur github.com via Internet Archive (consulté le ).

Content Disclaimer

Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.

  1. The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
  2. There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
  3. It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
  4. Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
  5. Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.