Article de reference

Programmation au niveau fonctionnel

En informatique, la programmation fonctionnelle désigne l'un des deux paradigmes de programmation contrastés identifiés par John Backus dans son travail sur les programmes en ta...

paradigmes de programmation contrastés identifiés par John Backus dans son travail sur les programmes en tant qu'objets mathématiques, l'autre étant la programmation par valeurs .

Dans sa conférence de 1977 pour le prix Turing , Backus a exposé ce qu'il considérait comme la nécessité de passer à une philosophie différente dans la conception des langages de programmation :

Les langages de programmation semblent traverser une période difficile. Chaque nouveau langage reprend, après quelques améliorations, toutes les fonctionnalités de ses prédécesseurs, auxquelles s'ajoutent quelques nouveautés. [...] Chaque nouveau langage revendique des fonctionnalités inédites et à la mode... mais force est de constater que rares sont les langages qui rendent la programmation suffisamment moins coûteuse ou plus fiable pour justifier leur prix et le coût de leur apprentissage.

Il a conçu FP pour être le premier langage de programmation à prendre spécifiquement en charge le style de programmation au niveau fonctionnel.

Un programme de niveau fonctionnel est sans variable (cf. programmation sans point ), puisque les variables de programme , qui sont essentielles dans les définitions de niveau valeur, ne sont pas nécessaires dans les programmes de niveau fonctionnel.

des fonctions strictes et, par conséquent, d'obtenir de programmation fonctionnelle traditionnels au lieu de son propre FP et de son successeur FL .

Backus appelle la programmation fonctionnelle une programmation applicative ; Les fonctions d'ordre supérieur (qu'il appelle « formes fonctionnelles »), qui transforment une ou deux fonctions en fonctions

…et la seule façon de générer de nouvelles fonctions est d’utiliser l’une des formes fonctionnelles, qui sont fixes : vous ne pouvez pas construire votre propre forme fonctionnelle (du moins pas dans FP ; vous pouvez le faire dans FFP ( Formal FP )).

Cette restriction implique que les fonctions en FP sont un module (engendré par les fonctions intégrées) sur l'algèbre des formes fonctionnelles, et sont donc algébriquement traitables. Par exemple, la question générale de l'égalité de deux fonctions est équivalente au problème de l'arrêt et est indécidable, mais l'égalité de deux fonctions en FP se réduit à l'égalité dans l'algèbre, et est donc (selon Backus) plus simple.

Aujourd'hui encore, de nombreux utilisateurs de langages de type lambda interprètent à tort l'approche fonctionnelle de Backus comme une variante restrictive du style lambda, qui est de facto un style basé sur les valeurs. En réalité, Backus n'aurait pas contesté cette accusation de « restriction » : il soutenait que c'était précisément grâce à de telles restrictions qu'un espace mathématique bien formé pouvait émerger, de manière analogue à la façon dont la programmation structurée limite la programmation à une version restreinte de toutes les possibilités de contrôle de flux disponibles dans les programmes non structurés et libres .

Le style sans valeur de FP est étroitement lié à la logique équationnelle d'une catégorie cartésienne fermée .

Exemples de langues

FP . Parmi les autres , on peut citer FL et J.