Ajoutée
Je viens de trouver deux questions connexes
/programming//a/2582804/156458
Dans les langages de programmation, de Michael Scott's Programming Language Pragmatics
En général, une valeur dans un langage de programmation est considérée comme ayant un statut de première classe si elle peut être transmise en tant que paramètre, renvoyée par un sous-programme ou affectée à une variable. Les types simples tels que les entiers et les caractères sont des valeurs de première classe dans la plupart des langages de programmation. En revanche, une valeur de «deuxième classe» peut être transmise en tant que paramètre, mais pas renvoyée d'un sous-programme ou affectée à une variable, et une valeur de «troisième classe» ne peut même pas être transmise en tant que paramètre.
Les étiquettes sont des valeurs de troisième classe dans la plupart des langages de programmation, mais des valeurs de deuxième classe dans Algol. Les sous-programmes affichent le plus de variations. Ce sont des valeurs de première classe dans tous les langages de programmation fonctionnels et la plupart des langages de script. Ce sont également des valeurs de première classe en C # et, avec quelques restrictions, dans plusieurs autres langages impératifs, dont Fortran, Modula-2 et -3, Ada 95, C et C ++. 11 Ce sont des valeurs de deuxième classe dans la plupart des autres langages impératifs, et des valeurs de troisième classe dans Ada 83.
Quel est le fondement mathématique des valeurs de première / deuxième / troisième classe dans les langages de programmation?
La terminologie me rappelle la logique du premier / deuxième ordre, mais sont-elles liées?
Il me semble que la différence entre eux est de savoir dans quel cas spécifique une valeur peut être utilisée
- passé en paramètre,
- rentré d'un sous-programme, ou
- assigné dans une variable.
Pourquoi les cas spécifiques sont-ils importants, alors que les autres cas ne sont pas mentionnés?
Merci.