콘텐츠로 건너뛰기

함수의 파라미터와 아규먼트의 차이

종종 파라미터(Parameter)와 아규먼트(Argument)라는 용어를 혼용해서 쓰는 경우를 많이 보게된다. 하지만 엔지니어라면 이 둘의 명확한 차이를 이해하고 있어야 한다. 결론부터 말하자면, 파라미터는 함수의 정의(Definition)에 속한 ‘변수’이고, 아규먼트는 함수의 호출(Call)에 속한 ‘실제 값’이다.

우리가 흔히 접하는 ‘첫인상’이나 ‘블랙박스’ 모델을 통해 이 개념을 명확히 정리해 보자.

1. 파라미터(Parameter): 판단의 기준이자 인터페이스

우리가 누군가를 처음 만났을 때를 상상해 보자. 우리는 그 사람(블랙박스)의 내부를 완벽히 알 수 없다. 대신 겉으로 드러난 몇 가지 요소를 통해 그 사람을 파악하려 한다. 이때 우리가 판단의 기준으로 삼는 ‘체형’, ‘목소리’, ‘얼굴 형태’ 같은 요소들이 바로 파라미터다.

공학적으로 접근해 보자. 내부 메커니즘을 알 수 없는 블랙박스(함수)가 있다. 우리는 오직 미리 정의된 입력 인터페이스(파라미터)를 통해서만 이 블랙박스에 접근할 수 있다.

  • 환전소 예시: 엔화를 넣으면 한화가 나온다. 여기서 ‘엔화’라는 통화의 종류가 파라미터다.
  • 회로 이론 예시: 블랙박스 회로에 입력을 전압(Voltage)으로 주었을 때, 출력 전압의 강하를 통해 내부 저항을 유추한다. 여기서 입력으로 설정한 전압(V)이라는 물리량이 파라미터가 된다.

프로그래밍 언어에서 파라미터는 매개변수(One that mediates)로 번역된다. 이는 함수 내부와 외부를 ‘중매’해 주는 변수라는 뜻이다.

C/C++ 언어에서 함수 선언부를 보자.

int add(int a, int b); // 선언부 (Declaration)

여기서 int aint b는 함수 add가 작동하기 위해 필요한 변수의 형틀(Type and Name)이다. 이것이 파라미터다. 즉, “나는 정수형 데이터 두 개를 받을 준비가 되어 있다”라고 선언하는 것이다.

2. 아규먼트(Argument): 논증을 위한 실제 데이터

이제 블랙박스를 실제로 가동해 보자.

  • 발전기 예시:석유 1L를 발전기(블랙박스)에 투입했더니, 전기 에너지가 생성되었다고 가정하자.$$W = 300 [Wh]$$코드 스니펫W = 300 [Wh] 여기서 발전기는 ‘석유’라는 파라미터를 받도록 설계되어 있다. 그리고 우리가 실제로 주입한 ‘1L’라는 구체적인 양, 이것이 바로 아규먼트다.

프로그래밍에서의 함수 호출부를 보자.

add(3, 4); // 실행 명령어 (Call)

여기서 34는 아규먼트다.

아규먼트(Argument)의 사전적 정의는 ‘논쟁’, ‘주장’ 혹은 수학에서의 ‘독립변수’를 뜻한다. 이를 컴퓨터 공학적으로 해석하면 “내가 실제 값 3과 4를 줄 테니(주장할 테니), 이 값을 가지고 함수 내부에서 논의(처리)를 해보라”는 의미로 받아들일 수 있다.

한국어로는 인수(引數)라고 번역하며, 이는 ‘끌어온 수’, 즉 매개변수로 전달되는 실제 데이터(Value)를 의미한다.

3. 요약: 변수 vs 값

이 두 용어의 관계를 한눈에 정리하면 다음과 같다.

구분영어 표기한국어 표기역할위치예시
파라미터Parameter매개변수데이터를 담는 그릇(변수)함수 선언/정의부int a, int b
아규먼트Argument인수그릇에 담기는 내용물(값)함수 호출부3, 4
  • “인수가 int i다”라고 말하지 않는다. (파라미터가 int i다)
  • “파라미터가 3이다”라고 말하지 않는다. (인수가 3이다)

결국 파라미터는 블랙박스를 해석하고 접근하기 위해 설계된 인터페이스(Interface)이고, 아규먼트는 그 인터페이스를 통해 실제로 전달되는 구체적인 값(Concrete Value)이다. 이 개념을 명확히 구분하는 것은 함수의 설계(Design)와 사용(Usage)을 분리해서 생각하는 엔지니어링의 기초가 된다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다