gpt4 book ai didi

c# - 术语 "reference"的起源与 "pass-by-reference"

转载 作者:IT老高 更新时间:2023-10-28 21:37:02 29 4
gpt4 key购买 nike

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

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

我对这里的词源感兴趣。 “引用”一词的早期用途是什么?让我们看看 pre-Java,但如果你知道 pre-C++ 的用途,那我也会感兴趣。

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

最佳答案

在论文 "Semantic Models of Parameter Passing" 中有一个术语“引用调用”的早期用法。 Richard E Fairley,1973 年 3 月。

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

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

  1. Fortran 66 是第一次尝试通过引用(我们现在称之为)调用来指定一种语言。

  2. 这只是第二次尝试使用支持参数传递的子例程指定语言。

  3. Fortran 66 的“名称关联”可以被视为 Algol 60 的“名称调用”的受限(退化)形式。限制是在 Fortran 中,名称必须是简单的变量或数组名称,而在 Algol 60 中,它可以是任何表达式。

  4. 当时(1966 年)并不清楚 Algol 60 的“点名呼唤”注定要作为一个坏主意而被放弃。事实上,当我在 1977 年作为一名本科生学习 Algol 60 时,我不记得讲师提出“点名调用”是一个坏主意。 (它被呈现为难以理解......但这是另一回事。)

关于c# - 术语 "reference"的起源与 "pass-by-reference",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1856680/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com