プログラム変数
プログラミングにおけるプログラム変数(プログラムへんすう、英: program variable)とは、マルチスレッド(multi-thread)計算機において、プログラム中別のプログラムを呼び出したとき、その並列実行されている別プログラムを格納する変数を言う。プログラム変数に格納されているプログラムプロセスに対する命令はOSの機能などを仲介したメッセージ渡しによって実現される。
主記憶割り当てを行ったオブジェクトファイルの格納変数、すなわちオブジェクト変数と呼ぶべきものでもあるが、オブジェクト指向プログラミングにおけるオブジェクトと紛らわしいこともあり、このように呼ばれる[1]。
概要
編集一般にプログラミングにおける変数はデータを読み書きする記憶域(storage)に付けられたタグのことであるが、実行可能なプログラム(オブジェクトファイル)もロードすれば、数値データや文字列などと同じく限定された記憶域を割り当てられるものであるため、マルチスレッド計算機上であれば変数として抽象化することができる[2]。これをプログラム変数(program variable)と呼ぶ。
主プログラムからプログラム変数に対しては、クラスなどを用いた特別のインターフェースが準備されていなければ、標準入出力を経由してデータや命令内容をメッセージ渡しすることが多い。プログラム変数に格納されているプログラムプロセスは、それ単独で実行可能なものであり、主プログラムのスコープから見れば、常にカプセル化(encapsulation)が実現されているのが特徴的である[4]。
簡易なプログラム再利用法
編集シングルスレッド(single-thread)計算機においては、プログラムのすべての機能は当然、単線の計算プロセス上で実行する必要がある。したがって、たとえ甲と乙という汎用的な単機能を提供する検証済みのプログラムがそれぞれ独立に存在していても、両機能を実現するプログラムを作成するためには、ソースコードから該当機能部分を抜き出し、単線上に乗るように連接(concatenation)した上で、一つのプログラムとして正しく動作するように修正し、さらに再度検証しなければならない。これは、既存プログラムの再利用という観点からみると非常に難易度の高いものである。
一方で、マルチスレッド(multi-thread)計算機においては、主プログラムから、甲と乙のプログラムなどの従プログラムをそれぞれ並列に実行させた上で、プログラム変数に格納し、処理内容をプログラム変数に対して(OSの機能などを仲介して)メッセージ渡し(message passing)をして代わりに処理させることで、検証済みプログラムのソースコードに手を加えることなく、低コストで開発することができる。これは、既存のプログラムの再利用法としては極めて有用な手法である。
脚注
編集- ^ ウィナー & ピンソン 1989, p. 31.
- ^ 静的データを格納する変数とは異なり、新たに(new)割り当てられた限定された記憶域を走る(run)という性質があるものの、同じく記憶域に割り当てられたタグ(変数)であることには違いはない。
- ^ ピンソン & ウィナー 1990, p. 1.
- ^
次の四つの特徴を備えているときオブジェクト指向と呼ばれる[3]。
- 抽象(abstraction)
- カプセル化(encapsulation)
- 継承(inheritance)
- ポリモーフィズム(polymorphism)
参考文献
編集- R.S.ウィナー、L.J.ピンソン『C++:オブジェクト指向プログラミング』前川守(訳)、トッパン〈アジソンウェスレイ・トッパン 情報科学シリーズ〉、1989年9月。ISBN 4-8101-8009-3。
- L.J.ピンソン、R.S.ウィナー『Smalltalk:オブジェクト指向プログラミング』富士ゼロックス情報システム(現:富士フイルムシステムズ)(訳)、トッパン〈アジソンウェスレイ・トッパン 情報科学シリーズ〉、1990年10月。ISBN 4-8101-8011-5。