- In der Programmierung stammt die Formulierung, eine Funktion „aufzurufen“, vermutlich aus einem ähnlichen Konzept wie das „Anfordern“ oder „Herbeirufen“ eines Buchs in einer Bibliothek
- In der frühen Computertechnik war es verbreitet, Subroutinen aus einer Bibliothek herbeizuholen bzw. aufzurufen
- Mit der Einführung der
CALL-Anweisung in Fortran II verbreitete sich die Formulierung „eine Funktion aufrufen“ sehr schnell
- Später übernahmen auch Sprachen wie Algol und JOVIAL dies und verwendeten „call“ als Substantiv
- Die Bedeutung von „call“ weitete sich schrittweise auf vor, während und nach der Laufzeitsteuerung aus und etablierte sich so
Warum sagen Programmierer, dass sie eine Funktion „aufrufen“ (call)?
- Auf StackExchange wurde nach dem Ursprung der Formulierung „eine Funktion aufrufen“ (
call) gefragt
- Es gibt mehrere Metaphern, tatsächlich leitet es sich aber davon ab, dass „call“ bedeutet, etwas herbeizurufen oder kommen zu lassen
- Ähnlich wie man in einer Bibliothek ein Buch „anfordert“, begann es damit, eine Subroutine „anzufordern“ und zu verwenden
- Eine „call number“ ist die Kennzeichnung, die in einer Bibliothek den Standort eines Buchs angibt
Die Geschichte von „call“ als Bibliotheksbegriff
- Laut OED verwendete Melvil Dewey 1876 erstmals „call number“ als Begriff der Bibliothekswissenschaft
- „call number“ bezeichnet eine Angabe für den Standort eines Buchs oder für dessen Anforderung
- Auch im Library Journal von 1888 wurden Begriffe wie „call blank“, „call slip“ und „call number“ ganz selbstverständlich verwendet
- Laut der Erklärung von Joudrey & Taylor stammt die Bezeichnung „call number“ aus dem Vorgang, Materialien aus geschlossenen Magazinen anzufordern
- Systeme wie die Cutter number wurden zur Klassifizierung eingeführt
Frühe Verwendung von „call“ in der Informatik
- In einem Aufsatz von John W. Mauchly aus dem Jahr 1947 erscheint ein Beispiel, in dem eine Subroutine aus einer Subroutinenbibliothek „called in“ und verwendet wird
- Gemeint ist dabei, dass sie anhand einer verzeichneten Nummer schnell referenziert und genutzt wird
- Auch die MANIAC II-Assembler-Routinen (1956) verwendeten das Konzept, jeder Subroutine eine „call number“ zuzuweisen und sie bei Bedarf darüber abzurufen
- In der eigentlichen Assemblersprache sprach man jedoch von „transfer control“
- In dieser Zeit lag der Schwerpunkt weniger auf dem „Aufruf“ zur Laufzeit als auf dem Einbinden von Codefragmenten beim Kompilieren oder Linken
Das Auftreten der CALL-Anweisung in Programmiersprachen
- Fortran II (1958) führte die Anweisungen
CALL und RETURN ein
- Als Handlung des „call for“ übergibt sie die Ausführungskontrolle an eine Subroutine
- Die
CALL-Anweisung bezeichnet konkret den syntaktischen Akt des „Aufrufens“
- Nach und nach begannen sich das Übergeben der Kontrolle zur Laufzeit und der „Aufruf“ beim Linken bzw. Assemblieren unscharf zu vermischen
Ausweitung und Etablierung der Bedeutung von „call“ in den 1960er Jahren
- Im Wörterbuch von Sarbacher (1959) wird „call in“ als Übergang der Kontrolle von der Hauptroutine zu einer Subroutine definiert
- Außerdem werden mit „call number“ und „call word“ auch Bezeichner und Aufrufcode erklärt
- In JOVIAL (1960) werden „procedure call“ und „calls“ offiziell als Substantive verwendet
- Später wird der Begriff zusammen mit mehreren Bedeutungsebenen wie Aufrufstelle (
site), Argument und Parameter verwendet
- Auch Algol (1959–1960) verwendet vielfältige Formulierungen wie „procedure call“, „called procedure“ und „during the call“
- Auch in Peter Naurs Algol-60-Report taucht die zeitliche Unterscheidung zwischen „call for“ und „during the call“ auf
- Im Burroughs Algebraic Compiler (1961) erscheint erstmals klar die Verbform „to call“
- Ab Corbató et al. (1963) verallgemeinert sich die moderne Verwendung „to call a subroutine“
Fazit
- Die
CALL X-Anweisung von Fortran II verhalf der Formulierung „call“ für den Aufruf von Funktionen/Subroutinen zum Durchbruch
- Zwar aus der älteren Bibliotheksvorstellung des Aufrufens per Nummer angeregt, erhielt sie in Programmiersprachen aber eine neue, erweiterte Bedeutung
- Danach übernahmen verschiedene Sprachen wie Algol und JOVIAL Begriffe wie „call“ und „call site“
- Etwa ab 1961 begann sich die Formulierung „X aufrufen“ in offizieller Programmdokumentation und in der Community zu etablieren
- Heute bezeichnet ein Funktionsaufruf den gesamten Ablauf, bei dem die Kontrolle vorübergehend übergeben, ein Ergebnis erhalten und anschließend zurückgekehrt wird, und „call“ ist dafür der Standardbegriff
1 Kommentare
Hacker-News-Kommentare
call number, die in physischen Bibliotheken zum Ordnen von Materialien verwendet wurde) auch die Entstehung des Begriffs "compiler" beeinflusst habe. Jeder Subroutine wurde ein "call word" zugewiesen, und die Idee war, Programme so zusammenzustellen, wie man in einer Bibliothek Materialien herausnimmt und kombiniertkutsua, was rückübersetzt eher "einladen" oder "herbeirufen" bedeutet. Es wird also im Sinn von "Mama ruft das Kind aus dem Hof" verwendet, nicht wie bei "Joe ruft seinen Freund an" oder "Wie nennt man diese Farbe?". Ich wollte das nur teilenaufrufen, was auf Fragmentebene so etwas wie "herauf-rufen" bedeutet. Wenn man es wie in der Schule mit einem direkten Objekt verwendet, bedeutet es, jemanden beim Namen oder nach Nummer aufzurufen. Das Wort für telefonieren istanrufensummonhat manchmal auch etwas passend Okkult-Horrorhaftes an Code, finde ich. Undinvitekann sich auch so anfühlen, als würde man Dämonen oder Vampire einladenfunksjonskall, wörtlich also function call. Es ist einfach die Bedeutung von call im Sinn von etwas rufeninvokekommt vom lateinischen invocō, invocāre (herbeirufen), also ist das nicht falsch, sondern eher eine verkürzte Ausdrucksweisereturn. Ich habe schon Sätze gehört wie: "Jetzt rufen wir dasreturn-Keyword auf, dann endet die Funktion"Invokehäufig bei Delegates oder Reflection verwendet, während der Debugger von einemCall Stackspricht.lib