[프로그래밍] 매개변수, 인수, parameter, argument의 차이
이들은 모두 수학적 개념이자 용어들인데 컴퓨터 프로그래밍에서는 좀 다르게, 더 간단한 의미로 쓰인다.
function TestFunction(parameter1, paremeter2)
{
result = parameter1 + parameter2;
}
var TestResult = TestFunction(1, 2); // 3
parameter는 프로씨저로 입렵되는 값을 받아서 담아 두는 변수이다. 흔히 매개변수 또는 보조변수라고 번역한다.
3. (programming) An input variable of a function definition, that gets an actual value (argument) at execution time.
– wiktionary
argument는 함수로 넘겨지는 값이다. 위 예제에서 1과 2다. 독립변수, 독립변인, 인수引數라고 번역한다. 인수라는 단어는 몇몇 영어사전들에는 있지만 표준국어대사전에는 올라와 있지 않다. 소인수분해에서 因數와는 다르다.
8. (countable, programming) A value, or a reference to a value, passed to a function.
– wiktionary
문제는 아규먼트가 위 예제에서처럼 패러미터 자리에 들어가 있을 수도 있다는 건데 이때 그 이름처럼 기능은 완전하게 반대다. 예를 들어 c#의 Form.FormClosing 이벤트는 아래와 같이 선언되어 있다.
private void Form1_FormClosing(Object sender, FormClosingEventArgs e)
{
//
}
그리고 아래와 같이 설명되어 있다.
To cancel the closure of a form, set the Cancel property of the FormClosingEventArgs passed to your event handler to true.
– Form.FormClosing Event
위 이벤트로 넘겨진 아규먼트의 프라퍼티를 cancel로 설정하라는 거다. Object와 FormClosingEventArgs가 모두 패러미터처럼 보이지만 후자는 그 이름에서 알 수 있듯이 아규먼트로서 무언가를 입력 받아서 담아 두는 변수가 아니라 cancel이라는 프라퍼티를 갖는 값 자체다. 이게 Form.FormClosing 이벤트로 넘어가는 거다.
FormClosingEventArgs 클래쓰는 아래와 같이 설명되어 있다.
The FormClosingEventArgs class provides data for this event.
– FormClosingEventArgs Class
받는 게 아니라 주는 거라고 나와 있다.
정리하면 아규먼트가 패러미터로 들어가는 거다. 영어를 모국어로 하는 프로그래머들을 보면 주로 parameter로 통일하여 많이들 쓰고 우리나라의 프로그래머들도 구분하지 않고 매개변수라 하는 게 일반적이다.
참고로 argue라는 단어 자체가 서로 별 연관 없어 보이는 여러 뜻들을 갖는 무척 어려운 단어다. 주로 debate라는 뜻으로 쓰이지만 present나 prove로도 쓰이는데 프로그래밍에서 쓰이는 명사형 argument가 후자의 뜻들에서 유래한 건진 잘 모르겠다.
비슷한 단어로 aument라는 것도 있는데 이건 increase라는 뜻이다.