Откуда пришло понятие «вызова» функции?


17

Мне всегда было интересно, почему кто-то вызывает функцию, а не, например, выполняет ее.

A Поиск Google для function call etymologyи подобные термины витки вверх ничего полезного, Wikipedia не упоминает об этом, онлайн - словари не имеют либо никаких записей вообще или нет раздела этимологию .

Откуда пришло понятие «вызова» функции?


Вероятно, это происходит из другой семантики для обработки аргументов - вызов по значению, вызов по ссылке, вызов по имени и т. Д. Я также представляю, что термин произошел от «вызова процедуры» или «вызова подпрограммы» и был применен только к функциям позже , В математике вы применяете функции к их аргументам, и то, что мы называем функциями, почти всегда являются процедурами / подпрограммами (потому что у математических функций нет побочных эффектов).
Довал

@Doval: Да, но зачем использовать сам «вызов» в «вызове процедуры» вместо другого глагола?
FrustratedWithFormsDesigner

2
@FrustratedWithFormsDesigner Понятия не имею, но я подумал, что им повезет больше, если они попытаются найти источники "вызова подпрограммы" или "вызова процедуры", чем "вызова функции", что исторически не имеет смысла. Я понимаю, что комментарий не отвечает на вопрос, но именно поэтому я сделал его комментарием, а не ответом.
Довал

2
В лямбда-исчислении вы применяете функцию (а лямбда- оператор создает абстракции ). Некоторые языки говорят о вызове , а не вызове функции.
Василий Старынкевич,

2
На некоторых диалектах ассемблера (например, ассемблер x86) указываются коды операций callи / retили некоторые их варианты. Возможно, что языки программирования унаследовали терминологию от базового оборудования, хотя это все равно оставило бы вопрос о том, почему разработчики оборудования выбрали эти имена для операций.
Дэвид Конрад

Ответы:


15

Слово call восходит, по крайней мере, к Fortran, первому широко используемому языку программирования. В Fortran, CALLэто ключевое слово , которое передает управление подпрограмме . Непонятно, почему Джон Бэкус выбрал это слово для вызова подпрограмм - вам может понадобиться прочитать одну или несколько биографий Бэкуса, чтобы обнаружить это, - но вполне вероятно, что использование в Фортране является причиной того, что мы используем слово вызов сегодня с уважение к функциям, методам и т. д.

Обратите внимание, что использование вызова по отношению к функциям и другим подпрограммам также хорошо согласуется с несколькими определениями вызова на английском языке :

  • нанести краткий визит
  • требовать что-то
  • разбудить
  • приглашать

3
ОП хочет знать, почему ЗВОНИТЕ в первую очередь.
Тулаинс Кордова

5
Статья ACM Дэвида Уилера 1952 г. Использование подпрограмм в программах описывает концепцию, и я бы поспорил с использованием термина «вызов», появившегося между этим моментом и появлением CALLи RETURNв Фортране II в 1958 г., если он не использовался. в самой газете. (Я слишком дешев, чтобы заплатить ACM $ 15, чтобы это выяснить.)
Blrfl

2
@Timo Хотя я не могу указать на происхождение термина, моя цель с этим ответом состояла в том, чтобы приблизить вас к этому вопросу. Знание того, что CALLобнаруживается в этом контексте в Фортране (созданном в 1954 году), должно значительно сузить поиск источника. Приведенный выше комментарий Blrfl выглядит как хорошая граница с ранней стороны, поэтому вместе мы сузили период времени, в течение которого термин, по-видимому, начал использоваться, до нескольких лет.
Калеб

2
@Caleb: CALLне был частью первой версии FORTRAN. Смотрите страницу 1 Справочного руководства по IBM Fortran II .
Blrfl

2
@Blrfl Я пролистал газету, он не использует термин callили любой другой термин, он в основном говорит только о use ofподпрограммах.
Ларс Виклунд
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.