[go: up one dir, main page]
More Web Proxy on the site http://driver.im/Aller au contenu

Dylan (langage)

Un article de Wikipédia, l'encyclopédie libre.

Dylan
Date de première version 1992 pour la publication de sa première spécification
Paradigmes Objet, fonctionnel
Auteur Apple Computer
Dernière version 2014.1 (31.12.2014)
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 :

Liens externes

[modifier | modifier le code]