Woher kam der Gedanke, eine Funktion aufzurufen?


17

Ich habe mich immer gefragt, warum man eine Funktion aufruft , anstatt sie beispielsweise auszuführen .

Eine Google-Suche nach function call etymologyund ähnliche Begriffe bringt nichts Nützliches, Wikipedia erwähnt es nicht, Online-Wörterbücher haben entweder überhaupt keinen Eintrag oder keinen Etymologieabschnitt .

Woher kam der Gedanke, eine Funktion aufzurufen?


Es kommt wahrscheinlich von der unterschiedlichen Semantik für die Behandlung der Argumente - Aufruf nach Wert, Aufruf nach Referenz, Aufruf nach Name usw. Ich stelle mir auch vor, dass der Begriff aus "Prozeduraufruf" oder "Unterprogrammaufruf" stammt und erst später auf Funktionen angewendet wurde . In der Mathematik wenden Sie Funktionen auf ihre Argumente an, und was wir Funktionen nennen, sind fast immer Prozeduren / Unterprogramme (weil mathematische Funktionen keine Nebenwirkungen haben).
Doval

@Doval: Ja, aber warum sollte der Aufruf in "procedure call" anstelle eines anderen Verbs verwendet werden?
FrustratedWithFormsDesigner

2
@FrustratedWithFormsDesigner Keine Ahnung, aber ich dachte, sie hätten mehr Glück beim Versuch, die Ursprünge von "Unterprogrammaufruf" oder "Prozeduraufruf" zu finden als "Funktionsaufruf", was historisch keinen Sinn ergibt. Mir ist klar, dass der Kommentar die Frage nicht beantwortet, aber genau deshalb habe ich ihn zu einem Kommentar und nicht zu einer Antwort gemacht.
Doval

2
In der Lambda-Rechnung wenden Sie eine Funktion an (und der Lambda- Operator macht Abstraktionen ). Einige Sprachen sprechen davon , eine Funktion aufzurufen , nicht aufzurufen.
Basile Starynkevitch

2
In einigen Dialekten der Assemblersprache (z. B. x86-Assembler) werden die Opcodes callund retoder eine Variante davon benannt. Es ist möglich, dass Programmiersprachen die Terminologie von der zugrunde liegenden Hardware geerbt haben, wobei sich dennoch die Frage stellt, warum die Hardware-Designer diese Namen für die Operationen ausgewählt haben.
David Conrad

Antworten:


15

Das Wort Call geht zumindest auf Fortran zurück, die erste weit verbreitete Programmiersprache. In Fortran CALList dies ein Schlüsselwort, das die Steuerung an eine Unterroutine übergibt . Es ist nicht klar , warum John Backus dieses Wort wählte Subroutinen aufzurufen - Sie können eine oder mehr Biographien des Backus lesen müssen , dass entdecken - aber es scheint wahrscheinlich , dass der Einsatz in Fortran der Grund ist , dass wir das Wort Anruf heute mit in Bezug auf Funktionen, Methoden usw.

Beachten Sie, dass die Verwendung von call in Bezug auf Funktionen und andere Subroutinen auch gut zu mehreren englischsprachigen Definitionen von call passt :

  • einen kurzen Besuch abstatten
  • etwas verlangen
  • aus dem Schlaf aufwecken
  • einladen

3
OP möchte wissen, warum CALL an erster Stelle steht.
Tulains Córdova

5
David Wheelers ACM-Arbeit von 1952 Die Verwendung von Subroutinen in Programmen beschreibt das Konzept, und ich wette, der Begriff "Aufruf" wurde zwischen 1958 und dem Erscheinen von CALLund RETURNin FORTRAN II verwendet, wenn er nicht verwendet wurde in der Zeitung selbst. (Ich bin zu billig, um die ACM $ 15 zu bezahlen, um es herauszufinden.)
Blrfl

2
@Timo Obwohl ich nicht auf den Ursprung des Begriffs verweisen kann, war mein Ziel mit dieser Antwort, Sie diesem Punkt näher zu bringen. Das Wissen, CALLdas in diesem Zusammenhang in Fortran (gegründet 1954) auftaucht, dürfte die Suche nach dem Ursprung erheblich einschränken. Der obige Kommentar von Blrfl sieht nach einer guten Bindung aus, daher haben wir gemeinsam den Zeitraum, in dem der Begriff in Gebrauch gekommen zu sein scheint, auf einige Jahre verkürzt.
Caleb

2
@Caleb: CALLwar nicht Teil der ersten Version von FORTRAN. Siehe Seite 1 des IBM Fortran II-Referenzhandbuchs .
Blrfl

2
@Blrfl Ich habe das Papier überflogen. Es wird weder der Begriff callnoch ein anderer Begriff verwendet. Meistens handelt es sich nur um use ofUnterprogramme.
Lars Viklund
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.