D'où vient la notion d '«appeler» une fonction?


17

Je me suis toujours demandé pourquoi on appelle une fonction au lieu, par exemple, de l' exécuter .

Une recherche Google function call etymologyet des termes similaires ne s'avèrent pas utiles, Wikipedia ne le mentionne pas, les dictionnaires en ligne n'ont aucune entrée ou aucune section d'étymologie .

D'où vient la notion d '«appeler» une fonction?


Cela vient probablement de la sémantique différente pour gérer les arguments - appel par valeur, appel par référence, appel par nom, etc. . En mathématiques, vous appliquez des fonctions à leurs arguments, et ce que nous appelons des fonctions sont presque toujours des procédures / sous-programmes (car les fonctions mathématiques n'ont pas d'effets secondaires).
Doval

@Doval: Oui, mais pourquoi utiliser le très "call" dans "procedure call" au lieu d'un verbe différent?
FrustratedWithFormsDesigner

2
@FrustratedWithFormsDesigner Aucun indice, mais j'ai pensé qu'ils auraient plus de chance d'essayer de trouver les origines de "l'appel de sous-programme" ou "l'appel de procédure" que "l'appel de fonction", ce qui n'a pas de sens historiquement. Je me rends compte que le commentaire ne répond pas à la question, mais c'est précisément pourquoi je l'ai fait un commentaire et non une réponse.
Doval

2
Dans lambda-calcul, vous appliquez une fonction (et l' opérateur lambda fait des abstractions ). Certaines langues parlent d' invoquer , et non d'appeler, une fonction.
Basile Starynkevitch

2
Dans certains dialectes du langage d'assemblage (comme l'assemblage x86), les opcodes sont nommés callet / retou une variante de ceux-ci. Il est possible que les langages de programmation aient hérité la terminologie du matériel sous-jacent, même si cela laisserait toujours la question de savoir pourquoi les concepteurs de matériel ont choisi ces noms pour les opérations.
David Conrad

Réponses:


15

Le mot call remonte au moins à Fortran, le premier langage de programmation largement utilisé. Dans Fortran, CALLest un mot-clé qui passe le contrôle à un sous-programme . On ne sait pas pourquoi John Backus a choisi ce mot pour invoquer des sous-programmes - vous devrez peut-être lire une ou plusieurs biographies de Backus pour le découvrir - mais il semble probable que l'utilisation dans Fortran soit la raison pour laquelle nous utilisons le mot call aujourd'hui avec en ce qui concerne les fonctions, les méthodes, etc.

Notez que l'utilisation de l' appel en ce qui concerne les fonctions et autres sous-programmes correspond également bien à plusieurs définitions de langue en anglais de l' appel :

  • faire une brève visite
  • exiger quelque chose
  • se réveiller du sommeil
  • inviter

3
OP veut savoir pourquoi appeler en premier lieu.
Tulains Córdova

5
David Wheeler 1952 papier ACM L'utilisation des sous-routines dans les programmes décrit le concept, et je serais prêt à parier l'utilisation du terme « appel » a évolué entre alors et l'apparition de CALLet RETURNen FORTRAN II en 1958, si elle n'a pas été utilisé dans le papier lui-même. (Je suis trop bon marché pour payer 15 $ à l'ACM pour le savoir.)
Blrfl

2
@Timo Bien que je ne puisse pas indiquer l'origine du terme, mon objectif avec cette réponse était de vous rapprocher de ce point. Savoir que cela se CALLmanifeste dans ce contexte à Fortran (créé en 1954) devrait considérablement restreindre la recherche de l'origine. Le commentaire de Blrfl ci-dessus ressemble à une bonne limite au début, donc ensemble, nous avons réduit la période au cours de laquelle le terme semble être entré en vigueur à quelques années.
Caleb

2
@Caleb: CALLne faisait pas partie de la première version de FORTRAN. Voir page 1 du Manuel de référence d'IBM Fortran II .
Blrfl

2
@Blrfl J'ai parcouru le document, il n'utilise pas le terme callou tout autre terme, il parle principalement de use ofsous-programmes.
Lars Viklund
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.