Dylan (langage)

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher
Page d'aide sur l'homonymie Pour les articles homonymes, voir Dylan.
Dylan
Apparu en 1992 pour la publication de sa première spécification
Auteur Apple Computer
Paradigmes Objet, fonctionnel
Typage dynamique fort
Influencé par CLOS, C++, Algol, Scheme
A influencé Ruby, Goo
Implémentations Open Dylan, Gwydion Dylan
Système d'exploitation Multiplate-forme
Site web Open Dylan

Dylan est un langage de programmation dynamique, réflexif, orienté objet et fonctionnel. Il propose un modèle de programmation axé vers une génération efficace de code machine. Il a été créé au début des années 1990 par un groupe conduit par Apple pour son PDA, l'Apple Newton.

Syntaxe et exemples[modifier | modifier le code]

À l'origine, Dylan utilisait une syntaxe préfixée, similaire à Scheme ou LISP, basée sur les S-expressions :

(bind ((radius 5)
       (circumference (* 2 $pi radius)))
  (if (> circumference 42)
      (format-out "Hello big circle! c is %=" circumference)
      (format-out "Hello circle! c is %=" circumference)))

Avant que la conception du langage ne soit terminée, elle fut remplacée par une syntaxe proche de l'Algol, conçue par Michael Kahl, dans l'espoir qu'elle serait familière au plus grand nombre de développeurs :

 let radius = 5;
 let circumference = 2 * $pi * radius;
 if (circumference > 42)
    format-out("Hello, big circle! c is %=", circumference);
 else
    format-out("Hello, circle! c is %=", circumference);
 end if


Comme dans d'autres langages fonctionnels, le résultat d'une fonction est sa dernière expression évaluée (l'instruction "return" est donc inutile). L'exemple suivant montre l'implémentation récursive de la fonction factorielle

define method factorial(n :: <integer>)
  if (n = 0)
    1
  else
    n * factorial(n - 1)
  end
end method;

Applications[modifier | modifier le code]

Outre son utilisation pour le PDA Newton d'Apple, Dylan est employé pour :

Voir aussi[modifier | modifier le code]

Liens externes[modifier | modifier le code]