Programmation au niveau des fonctions - Function-level programming

En informatique, la programmation au niveau des fonctions fait référence à l'un des deux paradigmes de programmation contrastés identifiés par John Backus dans ses travaux sur les programmes en tant qu'objets mathématiques, l'autre étant la programmation au niveau des valeurs .

Dans sa conférence du prix Turing en 1977 , 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 être en difficulté. Chaque langue successive incorpore, avec un peu de nettoyage, toutes les fonctionnalités de ses prédécesseurs et quelques autres. [...] Chaque nouveau langage revendique des fonctionnalités nouvelles et à la mode... mais le fait est que peu de langages rendent la programmation suffisamment moins chère ou plus fiable pour justifier le coût de production et d'apprentissage pour les utiliser.

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

Un programme de niveau fonction 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 fonction.

introduction

Dans le style de programmation au niveau des fonctions, un programme est construit directement à partir de programmes donnés au départ, en les combinant avec des opérations de formation de programme ou des fonctions . Ainsi, contrairement à l'approche au niveau des valeurs qui applique les programmes donnés aux valeurs pour former une succession de valeurs aboutissant à la valeur de résultat souhaitée, l'approche au niveau des fonctions applique des opérations de formation de programmes aux programmes donnés pour former une succession de programmes aboutissant au programme de résultat souhaité.

En conséquence, l'approche de la programmation au niveau des fonctions invite à étudier l' espace des programmes sous les opérations de formation de programmes , en cherchant à dériver des propriétés algébriques utiles de ces opérations de formation de programmes. L'approche au niveau des fonctions offre la possibilité de faire de l'ensemble des programmes un espace mathématique en mettant l'accent sur les propriétés algébriques des opérations de formation de programmes sur l' espace des programmes .

Un autre avantage potentiel de la vue au niveau des fonctions est la possibilité d'utiliser uniquement des fonctions strictes et donc d'avoir une sémantique ascendante , qui est le type le plus simple de tous. Une autre encore est l'existence de définitions au niveau de la fonction qui ne sont pas l'image élevée (c'est-à-dire, élevée d'un niveau de valeur inférieur à un niveau de fonction supérieur) d'une quelconque image de niveau de valeur existante : ces (souvent laconiques) de niveau de fonction les définitions représentent un style de programmation plus puissant qui n'est pas disponible au niveau de la valeur.

Contraste avec la programmation fonctionnelle

Lorsque Backus a étudié et rendu public son style de programmation au niveau des fonctions, son message a été principalement mal compris comme soutenant les langages de style de programmation fonctionnels traditionnels au lieu de son propre FP et de son successeur FL .

Backus appelle programmation fonctionnelle programmation applicative ; sa programmation au niveau des fonctions est d'un type particulier et contraint.

Une distinction clé par rapport aux langages fonctionnels est que le langage de Backus a la hiérarchie de types suivante :

  • atomes
  • fonctions, qui prennent des atomes aux atomes
  • Fonctions d'ordre supérieur (qu'il appelle "formes fonctionnelles"), qui prennent une ou deux fonctions aux 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 dans FFP ( Formal FP )).

Cette restriction signifie que les fonctions dans FP sont un module (généré 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 dans FP est juste l'égalité dans l'algèbre, et donc (Backus imagine) plus facile.

Même aujourd'hui, de nombreux utilisateurs de langages de style lambda interprètent souvent à tort l'approche au niveau des fonctions de Backus comme une variante restrictive du style lambda, qui est de facto un style au niveau des valeurs. En fait, Backus n'aurait pas été en désaccord avec l'accusation « restrictive » : il a soutenu que c'était précisément en raison de telles restrictions qu'un espace mathématique bien formé pouvait apparaître, d'une manière analogue à la façon dont la programmation structurée limite la programmation à une version restreinte . de toutes les possibilités de flux de contrôle disponibles dans des programmes non structurés simples et sans restriction .

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

Exemples de langues

Le langage de programmation canonique au niveau des fonctions est FP . D' autres incluent FL , et J .

Voir également

Les références

Liens externes