パラメータと引数

プログラミング用語における混同しやすい事で有名な話題の一つに、「パラメータ (parameter)」と「引数 (argument)」の使い分けがあります。簡単に言うと、関数などの宣言部に記述するものを「パラメータ」、関数を呼び出す際に実際に指定する式や値を「引数」と呼びます(詳細は、パラメータと引数の違い - いっしきまさひこBLOG 辺りを参照)。

これらを混同しやすいのは日本人だけなのかと思ったらそうでもないようで、海外でも混同の目立つ単語のようです。

These two terms are sometimes loosely used interchangeably; in particular, "argument" is sometimes used in place of "parameter". Nevertheless, there is a difference. Properly, parameters appear in procedure definitions; arguments appear in procedure calls.

Parameter (computer programming) - Wikipedia

今回気になった事は「パラメータ」と「仮引数」の対応関係でした。Wikipedia では、仮引数に対応する英単語に parameter を割り当てていました。いくつかググった程度ですが、「仮引数と言う言葉は誤用とは捉えられていない」、「パラメータと仮引数は同じものを指す」と考えて良さそうです。

仮引数(かりひきすう、かびきすう、parameter、formal parameter(argument))とは、サブルーチンの定義の際に、サブルーチンが実際に呼び出される時に渡されるであろう実引数に名前を付け、定義内で変数として扱えるようにしたもののことである。

引数 - Wikipedia

また、Wikipedia を見て気付いたのですが、以下の一つの項目に記述した各単語は全て同じものを指すようです。

  • parameter, formal parameter, formal argument
  • argument, actual parameter, actual argument

これもちょっとググった程度ですが、海外でも formal argumentsactual parameter など一見すると矛盾するような単語の組み合わせも日常的に使われているようです。こう言った現状を考えると、自分がこれらの単語を使用する際には以下のような規則に従うのが良いように思いました。

  1. 文章を書き始めるときに、「パラメータ (parameter)」と「引数 (argument)」のどちらかの単語を使うかを決める(もう一方の単語は、その文章中では使用しない)。
  2. 1. で使用すると決めた単語に対して、関数の宣言部の説明時には「仮〜 (formal 〜)」を使用し、関数を呼ぶ部分の説明時には「実〜 (actual 〜)」を使用する*1

日本語では「実パラメータ」よりは「仮引数」の方がよく使われているような気がするので、今のところ仮引数/実引数 と言う言葉を使うのが一番良い感じでしょうか。

*1:出現し得るのは、仮パラメータ/実パラメータ (formal parameter/actual parameter) のペア、または仮引数/実引数 (formal argument/actual argument) のペア。