Здравствуйте, Fortnum, Вы писали:
F>Параметр и аргумент — это синонимы или есть иные мнения? Допустимо ли под словом "аргумент" понимать параметр без значения?
Параметр — переменная в объявлении функции, аргумент — выражение, которые передается при вызове функции.
Здравствуйте, Fortnum, Вы писали: F>Параметр и аргумент — это синонимы или есть иные мнения? Допустимо ли под словом "аргумент" понимать параметр без значения?
Здравствуйте, Fortnum, Вы писали:
F>Параметр и аргумент — это синонимы или есть иные мнения? Допустимо ли под словом "аргумент" понимать параметр без значения?
Практически, синонимы. Но есть нюансы смысла.
Параметр — это управляющее значение, а аргумент — входное.
Например, для линейной функции y = kx+b значения k и b — это параметры, а x — аргумент.
Если такое смысловое разделение присутствует — чаще всего, по аспекту времени, — то стоит и терминологически разнести.
Величины времени компиляции и конфигурации, устанавливаемые однократно, — это будут параметры, а по-настоящему переменные величины, изменяемые многажды, — это аргументы.
template<int b> int linear(int k, int x) { return k*x + b; } // b - параметр шаблона; k и x - аргументы функцииint scale(int k, int x) { return linear<0>(k,x); } // формально, оба аргумента равноправны, но мы-то знаем...int negate(int x) { return scale(-1, x); } // negate - это функция одного аргумента, вызывающая linear с параметрами k=-1 и b=0
// или, в одну кучу,
function<int(int)> negate = bind(linear<0>, -1, _1); // причём параметр k=-1 был установлен в рантайме, - но однократно, при старте программы
А если параметры имеют иную природу, — например, являются типами, — то сам бог велел их отличать от аргументов
Хотя, окунаясь в метапрограммирование, т.е. оставаясь в одном и том же отрезке времени, мы снова потеряем различие между аргументами метафункций — типами, числами, кусками кода в макросах и т.п.
1.3.1 argument
an expression in the comma-separated list bounded by the parentheses in a function call expression, a
sequence of preprocessing tokens in the comma-separated list bounded by the parentheses in a function-like
macro invocation, the operand of throw, or an expression, type-id or template-name in the commaseparated
list bounded by the angle brackets in a template instantiation. Also known as an actual argument
or actual parameter.
1.3.9 parameter
an object or reference declared as part of a function declaration or definition, or in the catch clause of an
exception handler, that acquires a value on entry to the function or handler; an identifier from the commaseparated
list bounded by the parentheses immediately following the macro name in a function-like macro
definition; or a template-parameter. Parameters are also known as formal arguments or formal parameters.
То есть аргумент — это то, что указывается при вызове функции (может называться актуальным (фактическим) параметром или аргументом).
Параметр — часть объявления или определения функции (может называться формальным параметром или аргументом).
Здравствуйте, Fortnum, Вы писали:
F>Параметр и аргумент — это синонимы или есть иные мнения? Допустимо ли под словом "аргумент" понимать параметр без значения?
Осторожно выскажу предположение, что это зависит от контекста
Здравствуйте, Fortnum, Вы писали:
F>Параметр и аргумент — это синонимы или есть иные мнения? Допустимо ли под словом "аргумент" понимать параметр без значения?
Напоминаю, что параметры бывают формальные:
// i - формальный параметр.void foo(int i);
и фактические:
// 10 - фактический параметр.
foo(10);
Аргумент — просто другое название для параметров, применяется вместо более длинных выражений: "формальный параметр" и "фактический параметр", при этом конкретное значение должно определяться контекстом.
Википедия, как всегда, жжёт напалмом:
Пара́метр в программировании — принятый функцией аргумент. Термин «аргумент» подразумевает, что конкретно и какой конкретной функции было передано, а параметр — в каком качестве функция применила это принятое. Т.е. вызывающий код передает аргумент в параметр, который определен в члене спецификации функции.
Ну, хорошо, хоть не "взгляд на параметры".
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Здравствуйте, 0BD11A0D, Вы писали:
F>>Параметр и аргумент — это синонимы или есть иные мнения? Допустимо ли под словом "аргумент" понимать параметр без значения? BDA>Параметр — переменная в объявлении функции, аргумент — выражение, которые передается при вызове функции. BDA>
BDA>void Foo(int i);
BDA>...
BDA>Foo(0);
BDA>
BDA>i — параметр, 0 — аргумент.
Надо будет SO посмотреть... а вообще, разве не так?
0 — аргумент, оно же значение параметра, оно же фактический параметр
i — параметр, он же аргумент функции
f(x), где f — название функции, x — аргумент функции (без значения).
Здравствуйте, Fortnum, Вы писали:
F>Параметр и аргумент — это синонимы или есть иные мнения? Допустимо ли под словом "аргумент" понимать параметр без значения?
Судя по википедии, параметр — это различие похожих множеств, функций, "коэффициент пропорциональности". Аргумент — более близок к термину "значение передаваемое функции".
Здравствуйте, Fortnum, Вы писали:
F>Параметр и аргумент — это синонимы или есть иные мнения? Допустимо ли под словом "аргумент" понимать параметр без значения?
Кстати, не знаю уж, насколько этот комментарий соответствует действительности английского языка, но если соответствует, то многое объясняет:
A "parameter" is a placeholder. They set the response format, in spoken language. By definition, it's party to the call, limiting the response.
An "argument" is a position that is being considered. You argue your opinion: you consider an argument.
[...]
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Здравствуйте, Fortnum, Вы писали:
F>Параметр и аргумент — это синонимы или есть иные мнения? Допустимо ли под словом "аргумент" понимать параметр без значения?
Существуют разные терминологии. Не уверен, что есть однозначная трактовка. Обычно в трудах, претендующих на основательность (например таких, как книга Бертрана Мейера "Object-oriented software construction") явным образом формулируется, что имеется в виду под "параметром" и "аргументом".
Здравствуйте, Кодт, Вы писали:
F>>Параметр и аргумент — это синонимы или есть иные мнения? Допустимо ли под словом "аргумент" понимать параметр без значения? К>Практически, синонимы. Но есть нюансы смысла. К>Параметр — это управляющее значение, а аргумент — входное. К>Например, для линейной функции y = kx+b значения k и b — это параметры, а x — аргумент.
Параметр — это более широкое понятие. Все аргументы можно назвать параметрами — не ошибешься. Но не все параметры можно назвать аргументами.
Когда говорят "аргумент", обязательно имеют в виду какой-то контекст. Не может существовать аргумент без контекста. А параметр может.
Параметр — просто переменная величина. Аргумент — переменная величина в каком-то контексте, не обязательно со значением. Как "х" в твоем примере выше является аргументом, не имея значения. Этот "х" просто аргумент функции с параметрами.
Можно ли придумать такой случай, где аргумент не был бы параметром?
И можно ли придумать такой случай, где параметр не являлся бы аргументом при наличии контекста?
Здравствуйте, Fortnum, Вы писали:
F>Когда говорят "аргумент", обязательно имеют в виду какой-то контекст. Не может существовать аргумент без контекста. А параметр может.
Что ты называешь контекстом? И в чём проявляется разница?
F>Параметр — просто переменная величина. Аргумент — переменная величина в каком-то контексте, не обязательно со значением. Как "х" в твоем примере выше является аргументом, не имея значения. Этот "х" просто аргумент функции с параметрами.
Тут смешение 4 понятий:
— именованный вход
— точки подстановки в выражение (в тело функции)
— область применения функции
— ну и, собственно, "фактический аргумент" — конкретное значение, поданное на вход функции
F>Можно ли придумать такой случай, где аргумент не был бы параметром?
Аргумент комплексного числа
F>И можно ли придумать такой случай, где параметр не являлся бы аргументом при наличии контекста?
Только после того, как ты сформулируешь, что такое контекст