可变参数函数的起源是什么?

5

可变参数函数是源于特定语言、数学领域还是科学文章?有任何想法吗?


类型理论是研究类型系统的学科,尽管编程语言中具体的类型系统源于计算机架构、编译器实现和语言设计等实际问题。 - tripleee
@tripleee 抱歉,我真正想表达的是可变参数函数的概念,而不是类型理论。 - The Student
很抱歉我没有解释清楚我的思路。 我的基本意思是,在编程语言开始具有类型检查(带有类型参数的函数签名)时,它们似乎是自然而然地出现的(我猜想),而且我认为您找不到任何更详细的参考来证明这一点。 但我真的不知道答案,我只是在猜测。 当我调查这个问题时,维基百科的引用出现了,似乎证实了我的想法。 - tripleee
@tripleee 我懂了。这很有道理。 - The Student
3个回答

3

有许多数学和逻辑操作自然地作为可变元函数出现。例如,数字求和或字符串或其他序列的连接是可以逻辑上应用于任意数量的操作数的操作。

尽管标签可变元函数听起来很现代,但它的概念可能像轮子一样古老。好吧,也许没有那么古老,但它是如此合乎逻辑的进化,以至于在这条路线上可能被重新发现多次。

Watcom编译器可能是第一个为C语言实现它的:

可变参数函数会回退到Watcom基于堆栈的调用约定。
Watcom C/C++编译器是一种编译器,用于计算机编程语言C和C++,可以为多个平台和操作系统生成可执行程序。它为MS-DOS生成的代码执行非常快。它是最早支持Intel 80386“受保护模式”的编译器之一。在上世纪90年代,一些技术上雄心勃勃的DOS游戏,如Doom,Descent和Duke Nukem 3D,都是使用Watcom C构建的。尽管不再由Sybase商业销售,但Watcom C/C++编译器和Watcom Fortran编译器已作为免费开源的Open Watcom软件包提供,并得到SciTech Software的帮助。
话虽如此,我认为这个问题更适合math.stackexchange.com

0
他们想要printf()和scanf()。

是的。显然,编程语言理论是在大多数现代计算机语言之后创建的。 - MK.
Seva Alekseyev:在这个上下文中,它是有可变参数函数的。你有什么观点吗? - tripleee
1
设计目标:将控制台I/O作为库函数而非语言结构。期望行为:类似于FORTRAN中的READ/WRITE,可以使用任意数量的参数。实现方式:使用一流的可变参数函数printf()和scanf()。 - Seva Alekseyev
抱歉,您所说的“they wanted”是指它们源自C语言中的这些函数吗? - The Student
据我所知,printf的等效函数(writef)出现在C语言的前身BCPL中,包括以%为前缀的格式说明符。我得检查一下Algol是否有它们...但是FORTRAN肯定没有。 - Seva Alekseyev

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接