“调用”功能的概念从何而来?


17

我一直想知道为什么调用一个函数而不是执行一个函数。

谷歌搜索function call etymology和类似术语没有什么用,维基百科没有提及,在线词典根本没有词条没有词源

“调用”功能的概念从何而来?


它可能来自处理参数的不同语义-按值调用,按引用调用,按名称调用等。我还认为,该术语起源于“过程调用”或“子例程调用”,并且仅在以后应用于函数。 。在数学中,您函数应用于其参数,而我们所谓的函数几乎总是过程/子例程(因为数学函数没有副作用)。
Doval

@Doval:是的,但是为什么在“过程调用”中使用非常“调用”而不是其他动词呢?
FrustratedWithFormsDesigner 2014年

2
@FrustratedWithFormsDesigner毫无头绪,但我认为与“函数调用”相比,尝试“子例程调用”或“过程调用”的起源要好于“函数调用”,这会更好。我意识到评论未回答问题,但这就是为什么我将其评论而不是回答。
Doval

2
在lambda-calculus中,您应用了一个函数(而lambda运算符正在进行抽象)。有些语言说的是调用而不是调用函数。
Basile Starynkevitch 2014年

2
在汇编语言的某些方言中(例如x86汇编),操作码被命名为call和/ ret或其某种变体。编程语言有可能从底层硬件继承了该术语,尽管这仍然留下了一个问题,那就是为什么硬件设计人员会为操作选择这些名称。
戴维·康拉德

Answers:


15

单词call至少可以追溯到Fortran(第一种广泛使用的编程语言)。在Fortran中,CALL将控制权传递给子例程的关键字。目前尚不清楚为什么John Backus选择该词来调用子例程-您可能需要阅读Backus的一本或多本传记才能发现这一点-但在Fortran中使用它似乎是我们今天使用call这个词的原因。关于功能,方法等

请注意,针对函数和其他子例程使用call也很适合call的几种英语定义

  • 简短访问
  • 要求一些东西
  • 从睡眠中唤醒
  • 邀请

3
OP想知道为什么首先要调用CALL。
图兰斯·科尔多瓦

5
戴维·惠勒(David Wheeler)在1952年发表的ACM论文中,在程序使用子例程描述了这一概念,我敢打赌,从那时到1958年FORTRAN II 的出现CALL以及RETURN在FORTRAN II中出现时使用的术语“调用” (如果未使用的话)在论文本身中。(我太便宜了,无法向ACM支付15美元来查找。)
Blrfl 2014年

2
@Timo尽管我无法指出该术语的由来,但我的目标是使您更接近该点。知道CALL在这种情况下出现在Fortran(创建于1954年)中的情况将大大缩小对原点的搜索范围。Blrfl的上述评论在早期看来是一个不错的选择,因此我们一起将该词似乎已开始使用的时间缩短了几年。
Caleb 2014年

2
@Caleb: CALL不是FORTRAN第一版的一部分。请参阅《IBM Fortran II参考手册》的第1页。
Blrfl 2014年

2
@Blrfl我浏览了这篇论文,它不使用该术语call或任何其他术语,它主要只是在谈论use of子例程。
拉尔斯·维克伦德
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.