|
|
|
|
TUTORIEL OUTILS |
|
|
|
7 familles de langages fonctionnels à la loupe |
Lisp, Haskell, Erlang, Dylan... Notre sélection des langages de programmation reposant avant tout sur l'évaluation d'expressions.
(22/11/2005) |
|
La définition la plus acceptée
d'un langage fonctionnel ? Un langage qui repose sur l'évaluation
d'expressions, plutôt que l'exécution de commandes (langage impératif).
Cette définition étant cependant sujette à débat, il est difficile
de compartimenter ces langages.
Néanmoins, on peut dire qu'ils sont principalement répartis
en deux catégories : les langages stricts ou "gloutons" (eager),
et les langages non stricts ou "paresseux" (lazy). Ce
classement se base sur la façon dont un langage réalise
des évaluations.
Un
langage strict évaluera tous les arguments d'une fonction, avant
d'évaluer la fonction elle-même. De son côté, un langage paresseux
n'évaluera que les arguments nécessaires à l'évaluation de la
fonction. Le traitement de cette seconde méthode prend plus
de temps, mais l'approche facilite grandement la programmation.
Un autre critère de discernement est la "pureté" d'un
langage : il existe les langages purement fonctionnels, et les
autres... Un langage "impur" autorise localement l'utilisation
d'effets de bords, par le biais de techniques de programmation
impérative.
7
familles de langages fonctionnels
|
Langage
Dérivés directs
(année de création)
|
Strict
|
Pur
|
Concurrent
ou séquentiel
|
Commentaire
|
|
|
|
Séquentiel
|
L'un
des tous premiers langages de programmation de haut
niveau, il est à l'origine de nombreux autres
langages.
|
|
|
|
Séquentiel
|
Un autre
ancètre des langages de programmation, dont l'influence
se fait toujours ressentir.
|
Miranda
(1985)
|
|
|
Séquentiel
|
|
|
|
|
Séquentiel
|
Considéré
à l'heure actuelle comme LE langage fonctionel.
|
|
|
|
Concurrent
|
|
|
|
|
Concurrent
|
Développé
en interne par Ericsson, puis passé en Open-Source en
1998.
|
|
|
|
Concurrent
|
|
Langage
Dérivés directs
(année de création)
|
Strict
|
Pur
|
Concurrent
ou séquentiel
|
Commentaire
|
Ajoutons que les notions de concurrence/parallélisme et de séquentialité
entrent fortement en compte dès qu'il s'agit d'un langage fonctionnel.
Le parallélisme (et le parallélisme simulé, appelé "concurrence")
indique l'exécution de plus d'un processus à un moment donné.
La séquentialité fait s'exécuter les tâches les unes après les
autres.
Il est à noter que nombre des langages que nous présentons
plus haut existent en version modifiée. Concurrent Haskell,
par exemple, élimine l'aspect séquentiel du Haskell d'origine.
Une autre extension possible est celle du parallélisme.
|
Forum |
|
Réagissez
dans les forums
de JDN Développeurs
|
Par ailleurs, certains langages comme Perl, Python, Ruby ou
TCL peuvent être utilisés dans un style fonctionnel, étant donné
qu'ils proposent des abstractions, des fonctions d'ordre supérieur
(qui peuvent prendre d'autres fonctions pour argument), et d'autres
caractéristiques des langages dits fonctionnels. |
|
|
|
|
|
Quand achetez-vous le plus en ligne ? |
|
|
|
|
|
|
|
|