- En programmation, l’expression « appeler une fonction » vient d’une origine comparable à l’idée de « demander » ou « faire venir » un livre dans une bibliothèque
- Aux débuts de l’informatique, on avait tendance à faire venir, appeler des sous-routines depuis une bibliothèque
- Avec l’introduction de l’instruction CALL dans Fortran II, l’expression « appeler une fonction » s’est rapidement popularisée
- Par la suite, des langages comme Algol et JOVIAL l’ont adoptée à leur tour en utilisant le nom « call »
- Le sens de « call » s’est ensuite progressivement élargi pour désigner ce qui se passe avant, pendant et après le transfert de contrôle à l’exécution
Pourquoi les programmeurs disent-ils qu’ils « appellent » une fonction ?
- Une question a été posée sur StackExchange à propos de l’origine de l’expression « appeler une fonction »
- Il existe plusieurs analogies, mais en réalité le terme « call » vient de l’idée d’invoquer ou de faire venir
- Comme lorsqu’on « demande » un livre dans une bibliothèque, l’idée vient du fait de « demander » une sous-routine pour l’utiliser
- Le « call number » est l’indication qui signale l’emplacement d’un livre dans une bibliothèque
L’histoire de « call » dans le vocabulaire des bibliothèques
- Selon l’OED, Melvil Dewey a employé pour la première fois en 1876 le terme « call number » dans le vocabulaire des sciences de l’information et des bibliothèques
- Un « call number » est une notation utilisée pour indiquer l’emplacement d’un livre ou pour en faire la demande
- Dans le Library Journal de 1888, des termes comme « call blank », « call slip » et « call number » sont déjà d’usage courant
- Selon l’explication de Joudrey & Taylor, le nom « call number » vient du fait de faire venir des documents depuis des rayonnages fermés
- Des systèmes comme le Cutter number ont été introduits à des fins de classification
Les premiers usages de « call » en informatique
- Dans un article de 1947 de John W. Mauchly, on trouve déjà des exemples où des sous-routines sont « called in » depuis une bibliothèque de sous-routines pour être utilisées
- Le contexte est celui d’une référence rapide au moyen de numéros enregistrés
- Les routines assembleur de MANIAC II (1956) appliquent elles aussi l’idée consistant à attribuer à chaque sous-routine un « call number » afin de la faire venir au besoin
- Dans le langage assembleur lui-même, on parlait en réalité de « transfer control »
- À cette époque, l’accent portait davantage sur l’idée de faire venir des fragments de code au moment de la compilation ou de l’édition de liens que sur l’« appel » à l’exécution
L’apparition de l’instruction « CALL » dans les langages de programmation
- Fortran II (1958) a introduit les instructions
CALL et RETURN
- L’action d’« appeler » (call for) une sous-routine consiste à lui transférer le contrôle de l’exécution
- L’instruction
CALL désigne concrètement l’acte syntaxique d’« appeler »
- Peu à peu, le fait de « transférer le contrôle » à l’exécution et l’acte d’« appeler » au moment de l’assemblage ou de l’édition de liens ont commencé à se mêler de façon ambiguë
L’élargissement et la fixation du sens de « call » dans les années 1960
- Dans le dictionnaire de Sarbacher (1959), « call in » est défini comme un transfert de contrôle depuis la routine principale vers une sous-routine
- Le dictionnaire décrit aussi « call number » et « call word » pour parler des identifiants et du code d’appel
- En JOVIAL (1960), « procedure call » et « calls » sont officiellement employés comme noms
- Le terme s’emploie ensuite avec plusieurs niveaux de sens, comme le site d’appel, les arguments et les paramètres
- Algol (1959~1960) emploie lui aussi des expressions comme « procedure call », « called procedure » et « during the call » pour désigner différentes phases de l’appel
- Dans le rapport sur Algol 60 de Peter Naur apparaît également la distinction temporelle entre « call for » et « during the call »
- Dans le Burroughs Algebraic Compiler (1961), la forme verbale « to call » apparaît clairement pour la première fois
- Après Corbató et al. (1963), l’usage moderne « to call a subroutine » se généralise
Conclusion
- L’instruction « CALL X » de Fortran II a contribué à imposer l’expression « call » pour l’appel de fonctions et de sous-routines
- Elle s’inspire de l’ancien concept bibliothécaire consistant à appeler par numéro, mais en l’étendant à un nouveau sens dans les langages de programmation
- Par la suite, Algol, JOVIAL et d’autres ont adopté des termes comme « call » et « call site »
- À partir d’environ 1961, l’expression « to call X » commence à s’imposer dans la documentation officielle et dans la communauté
- Aujourd’hui, l’appel de fonction désigne l’ensemble des opérations consistant à transférer temporairement le contrôle, exécuter, récupérer le résultat puis revenir, et « call » en est devenu le terme standard
1 commentaires
Avis Hacker News
IDictionaryil y a 25 ans, cette image m’a parlé immédiatement. Mais aujourd’hui, cette métaphore aide beaucoup moins. Il m’est souvent arrivé de devoir expliquer à quoi ressemblaient concrètement un catalogue sur fiches ou un dictionnaire, et les jeunes me répondent : « ah, donc c’est une hash map analogique ».libGOTOet revenir ensuite. Le mot-cléCALLrend simplement le flux d’exécution plus clair. C’est comme un patron qui demande à Sam de s’occuper de la caisse, puis à Bill d’imprimer le rapport TPS. Finalement, tout est devenu fonction, et les sous-routines ont hérité du surnom de « spaghetti ». Mais je me demande pourquoi on avait les termes routine (programme) et subroutine