本文へ移動

パラメータ(コンピュータサイエンス):引数と受け渡し方式

ルーチンやプログラムが実行を制御する値を受け取るための名前付き入力。仮引数と実引数、受け渡し方式、既定値、型、スコープ、APIやインターフェースでの用途を解説する。

コンピュータサイエンスにおけるパラメータとは、ルーチン、関数、メソッド、またはプロセスが呼び出された際に値を受け取るための、名前付きのプレースホルダーである。パラメータにより、コードは汎用的に記述できる。同じサブルーチン本体を変更せずに、異なる入力に対して動作させられるためである。ルーチン呼び出しでこれらのプレースホルダーに実際のデータを渡す場合、その渡された項目は一般に引数と呼ばれる。仮引数(ルーチン定義内の名前)と実引数(呼び出し時に渡される値)の区別は、呼び出しの動作を理解するうえで中心的である。周辺概念についてはサブルーチンも参照。

特性と役割

パラメータはルーチンのシグネチャに現れ、呼び出し側が指定できる値の個数、順序、予期される種類を定義する。パラメータには名前、型または制約(型付き言語の場合)が関連付けられ、多くの言語では既定値も設定できる。パラメータはデータがルーチンへ流入する方法を決定するため、正確性、保守性、APIやライブラリの外部向け契約に影響する。また、値の受け渡し方法によってデータのコピー、参照の共有、所有権の移動が行われ得るため、性能やメモリ使用量にも影響する。

一般的なパラメータ受け渡し方式

  • 値渡し: 呼び出し先は引数のコピーを受け取る。変更しても呼び出し元には影響しない。
  • 参照渡し: 呼び出し先は同一の記憶領域にアクセスするため、変更は呼び出し元からも確認できる。
  • 共有渡し/オブジェクト参照: 参照を用いる言語では、プリミティブ値そのものではなくオブジェクトへのハンドルが渡され、値と参照の意味論が組み合わされる。
  • 可変長およびキーワード・パラメータ: 任意個数の引数、または位置ではなく名前で指定する引数を可能にする。

これらの機構は言語ごとに異なる形で実装される。たとえば、明示的な参照型を提供する言語もあれば、ポインタを使用する言語、一貫したオブジェクトモデルに依存する言語もある。既定値、名前付き/キーワード引数、厳格な型注釈は、パラメータの宣言と使用のあり方を形作る機能である。

用途、例、および重要な区別

パラメータは、動作をパラメータ化する必要があるあらゆる場面で用いられる。数学関数、ソートルーチン(比較器パラメータ)、構成用API、コマンドライン・オプション、コールバックなどが例である。API設計では、明確なパラメータ名、妥当な既定値、必須パラメータの最小化を選ぶことで、使いやすさが向上する。注意すべき区別には、パラメータの可変性(ルーチンが引数の状態を変更できるか)、存続期間(通常、パラメータは呼び出しの活性レコードにローカルである)、可視性(大半のパラメータはローカルだが、一部の言語では宣言内でパターンマッチングまたは分解を認める)がある。

歴史的に、パラメータの受け渡しは、安全性、表現力、効率性の均衡を図るプログラミング言語設計とともに発展してきた。初期の手続き型言語から現代のマルチパラダイム・システムに至るまで、パラメータはソフトウェア工学における抽象化とモジュール性の基本的な手段であり続けている。

関連項目

著者

AlegsaOnline.com パラメータ(コンピュータサイエンス):引数と受け渡し方式

URL: https://ja.alegsaonline.com/art/74547

共有

出典