Звідки взялося поняття «виклик» функції?


17

Мені завжди було цікаво, чому хтось викликає функцію, а не, наприклад, виконувати її.

Пошук Google function call etymologyта подібні терміни не виявляють нічого корисного, Вікіпедія не згадує про це, в онлайн-словниках взагалі немає жодного запису, або немає розділу з етимології .

Звідки взялося поняття «виклик» функції?


Це, мабуть, випливає з різної семантики для обробки аргументів - дзвінок за значенням, дзвінок за посиланням, дзвінок по імені і т. Д. Я також уявляю, що термін виник із "виклику процедури" або "виклику підпрограми" і застосовувався лише до функцій пізніше . У математиці ви застосовуєте функції до своїх аргументів, і те, що ми називаємо функціями, - це майже завжди процедури / підпрограми (оскільки математичні функції не мають побічних ефектів).
Doval

@Doval: Так, але навіщо використовувати саме "call" у "call call" замість іншого дієслова?
FrustratedWithFormsDesigner

2
@FrustratedWithFormsDesigner Немає жодного поняття, але я подумав, що їм пощастить знайти витоки "виклику підпрограми" або "виклику процедури", ніж "виклику функції", що історично не має сенсу. Я усвідомлюю, що коментар не відповідає на питання, але саме тому я зробив це коментарем, а не відповіддю.
Doval

2
У лямбда-обчисленні ви застосовуєте функцію (а лямбда- оператор робить абстракції ). Деякі мови говорять про виклик функції , а не про дзвінки.
Базиле Старинкевич

2
У деяких діалектах мови складання (наприклад, x86 Assembly) опкоди названі callта retчи деяким їх варіантом. Можливо, що мови програмування успадкували термінологію від базового обладнання, хоча це все ще залишатиме питання про те, чому дизайнери апаратних засобів обрали ці назви для операцій.
Девід Конрад

Відповіді:


15

Слово дзвінок приходить щонайменше до Fortran, першої широко використовуваної мови програмування. У Fortran CALL- це ключове слово, яке передає контроль підпрограмі . Не ясно , чому Джон Backus вибрав це слово для виклику підпрограми - вам можуть знадобитися прочитати один або кілька біографій Бекуса , щоб виявити , що - але цілком імовірно , що використання в Fortran є причиною того, що ми використовуємо слово виклик сьогодні щодо функцій, методів тощо.

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

  • здійснити короткий візит
  • вимагати чогось
  • щоб пробудити від сну
  • запросити

3
ОП хоче дізнатися, чому ВЗАЄМО в першу чергу.
Tulains Córdova

5
Документ Девіда Уілера 1952 р. ACM Використання підпрограм у програмах описує концепцію, і я б ставлю на обмін використання терміна "виклик", що розвинувся між тим часом і появою CALLта RETURNв FORTRAN 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.