Java/C#语言律师喜欢说他们的语言按值传递引用。这意味着“引用”是在调用函数时复制的对象指针。

同时,在C++中(以及在Perl和PHP中也以更动态的形式),引用是其他名称(在动态情况下为运行时值)的别名。

我对这里的词源很感兴趣。 “引用”一词的早期用法是什么?让我们开始使用Java之前的版本,但是如果您知道C++之前的版本,那也会令我感兴趣。

(我知道词汇会发生变化等,但我只是对历史感兴趣)。

最佳答案

1973年3月,Richard E Fairley在"Semantic Models of Parameter Passing"论文中使用了“按引用 call ”一词。

在早期,术语是不一致的。例如,Fortran 66 specification使用短语“按名称关联”和“按值关联”。我们现在将其称为“按引用调用”和“按值调用”。相比之下,Algol 60 specification(1962)使用了“按名称调用”和“按值调用”……这两个词,我们目前都不将其称为“按引用调用”。

编辑:对于那些希望将指定Fortran 66的先驱者标记为使用短语“按名称关联”感到困惑的人,请考虑以下事项:

  • Fortran 66首次尝试通过引用(现在称为)来指定一种语言。
  • 只是第二次尝试使用支持参数传递的子例程来指定一种语言。
  • Fortran 66的“按名称关联”可以看作是Algol 60的“按名称 call ”的受限(简并)形式。限制是在Fortran中,该名称必须是简单的变量或数组名称,在Algol 60中,该名称可以是任何表达式。
  • 在当时(1966年),尚不清楚Algol 60的“按名称致电”注定要被废弃是一个坏主意。的确,当我在1977年攻读Algol 60的本科生时,我不记得讲师提出“按姓名致电”是个坏主意。 (它被呈现为很难理解……但这是另一回事。)
  • 09-25 18:30