函数为什么叫调用函数调用的前世今生程序员常说“调用一个函数”(callafu

量子位看科技 2025-07-10 17:30:48

函数为什么叫调用函数调用的前世今生

程序员常说“调用一个函数”(call a function),这个“call”到底从哪来的?

开发者Arthur O’Dwyer追溯了“call”的早期用法,发现它最初和“从图书馆调书”——也就是call number”(索书号)很像。

19世纪,图书馆员Melvil Dewey(就是发明十进制分类法的那位)用“call number”标记每本书的位置,方便从封闭书库中调取。图书馆常用的“call slip”“call blank”等术语也反映了这一点:用户写下call number,图书管理员根据这个编号把书拿出来。

到了20世纪40年代,这个逻辑被“程序库”继承了。1947年,计算机先驱Mauchly在描述EDVAC时写道,复杂的子程序应被储存在“library”中,需要时“called into use”。这时的“call”,是把一段代码从外部资源库调进来,像调书一样,而不是立即执行。

1956年的MANIAC II手册也用了类似术语:每段子程序配一个“call number”,在程序装配阶段输入这个编号,汇编器就会暂停、提示用户插入相应纸带,把代码“装进”最终程序中。

真正把“call”作为代码执行行为引入,是1958年的Fortran II。它引入了`CALL`语句,写法就像`CALL MATMPY(X, 5, 10, Y, 7, Z)`,直接指明程序控制流应该跳转到某个子程序。这是“call”第一次成为一种正式的编程指令。

从这之后,“call”开始频繁出现在各类编程语言与文献中。1959年的Algol草案延续了Fortran的说法,用“procedure call”描述函数入口;1960年的JOVIAL文档中,“call”已经不仅是动词,甚至作为名词使用(如“during the call”);到1961年,“to call a subroutine”已经成了标准说法。

也就是说,“call”经历了几个阶段的演变:

1. 起源于图书馆“call number”系统,强调“调取”;

2. 在早期计算机中,用于描述“把子程序从外部加载到主程序”;

3. 到Fortran II之后,逐渐演变为“执行时跳转并返回”的动态行为;

4. 最终成为编程语言中“函数调用”的标准术语。

所以,今天我们用“call”来表示函数调用,其实是一种跨越百年的语言继承。从调书到调函数,“call”的内核始终是一样的:通过一个编号或名字,唤出某段预定义的“内容”,来完成我们当前任务的一部分。

感兴趣的小伙伴可以点击:quuxplusone.github.io/blog/2025/04/04/etymology-of-call/

0 阅读:0
量子位看科技

量子位看科技

感谢大家的关注