Каково происхождение функций Variadic? - PullRequest
4 голосов
/ 09 ноября 2011

Были ли функции Variadic взяты из определенного языка, из математики, из научной статьи ...?Есть идеи?

Ответы [ 3 ]

3 голосов
/ 18 ноября 2011

Существует множество математических и логических операций, которые естественным образом встречаются как функции с переменными числами.Например, суммирование чисел или объединение строк или других последовательностей - это операции, которые могут логически применяться к любому количеству операндов.

Даже если метка переменные функции звучит современно, представление о том, что это такое, может быть таким же старым, как колесо.Ладно, может быть, не так много, но его логическая эволюция настолько велика, что, вероятно, он был повторно обнаружен несколько раз на этом пути.

Watcom компилятор возможно, это был первый , который реализовал это для языка C:

Функции Variadic возвращаются к соглашению о вызовах на основе стека Watcom.

Компилятор Watcom C / C ++ - это компилятор для языков программирования C и C ++, который создает исполняемые программы для нескольких платформ и операционных систем.Код, который он создает для MS-DOS, выполняется очень быстро.Это был один из первых компиляторов, поддерживающих Intel 80386 «защищенный режим».В середине 1990-х некоторые из самых технически амбициозных игр для DOS, такие как Doom , Descent и Duke Nukem 3D , были созданы с использованием Watcom C. Хотя они больше не продаютсякоммерчески Sybase, компилятор Watcom C / C ++ и компилятор Watcom Fortran стали доступны в виде бесплатного и открытого исходного кода пакета Watcom с помощью программного обеспечения SciTech

Thatсказал, я думаю, что этот вопрос лучше подходит для math.stackexchange.com .

0 голосов
/ 18 ноября 2011

BCPL, Algol 68 и Fortran и COBOL (с определенной точки зрения) имеют различные функции:

http://en.wikipedia.org/wiki/Printf_format_string

Variadic как «переменное число аргументов» - это математическая концепция, намного более старая, в любом случае.

0 голосов
/ 17 ноября 2011

Они хотели printf () и scanf ().

...