新しい自然研究のきっかけを数多く生み出したデカルトは「変数」にも注目しました。「変数」とは数自体が変化するのか、変化を数で表現したのか、いずれでもないのか、考え始めると、実に謎めいています。とはいえ、変数が導入されることによって、数学は自然の変化を表現する言語として強力な能力を獲得し、自然変化を記述、描写するための不可欠の形式的装置になりました。そこで、変数の本性を異なる文脈(数学、自然言語、論理学、コンピューター言語)で振り返ってみましょう。
微積分に代表される解析学の変数は未知あるいは不定の数や対象を表す記号で、学校で習うのは主に実数変数です。また、代数学の文脈では不定元(indeterminate)の意味で「変数」が使われます。方程式で特別な値をとる場合、「未知数」とも呼ばれます。通常は定数(constant)と対になっていて、値が変化すると思われています。変数が現れる文脈ごとにその変数の変域、定義域などと呼ばれる、変数が値としてとりうるもの(その変数への代入が許されるもの)の範囲を示す集合が決まっています。変域の中から無作為に一つ選び出した数、すなわち変域内の「任意の値」として変数を捉えることもできます。
学校ではこのように習ったことを思い出す人が多いと思いますが、変数が導入されることによって「関数(function)」が生まれました。「変数(variable)」という語の使用は関数にまで拡大しています。その典型例が「確率変数」です。「確率変数(random variable)」は確率に関する関数で、ランダムな実験によって得られる全ての結果を指す関数(=写像)で、標本空間から実数の空間への関数です。わかりにくい集合「標本空間」からよくわかっている集合「実数空間」への関数が「確率変数」です。
<自然言語の代名詞>
自然言語の文法に「変数」は登場しませんが、変数と同じ役割をもつのが「代名詞」。例えば、英語のyou, who, thisなどがそうです。代名詞は人称代名詞、指示代名詞、疑問代名詞、関係代名詞、再帰代名詞、相互代名詞、不定代名詞、否定代名詞などに分類されます。日本語の代名詞は自立語で、活用しません。
人称代名詞は話し手、受け手、および談話の中で指定された人や物を指す代名詞です。一般に、話し手を指す一人称、受け手を指す二人称、それ以外の人、物を指す三人称に分けられます。人称代名詞は時代によって激しく変化してきました。かつて上流で用いられた「貴様」は、口頭語に移行するとともに尊敬の意味が薄れ、一人称の「手前」が音変化とともに二人称に転じたなどがその例です。体系上の人称代名詞も例外ではなく、「われ」「なれ」は既に共通語の口語としては廃れ、元来性別と関係なかった「かれ」は男性に限定されるとともに恋人(男性)を指すようにも使われています。
指示代名詞は現場にあるものや記憶の中のものを指して用いる代名詞です。近称、遠称を使い分ける言語(英語のthis/that)や、近称、中称、遠称と呼ばれる三列を使い分ける言語(日本語のコ、ソ、ア)があります。
*運動変化を十分に表現しようとすれば、代名詞「これ」を「あれ」に変えるだけでは全く不十分です。そのためには、数を使って変化を追いかける必要があります。変化を追いかけながら表現するために、順に並んだ数を使おうという訳です。その数として実数を使うと、「連続的な変化」として運動を表現することができます。こうして、素朴な代名詞に対して、連続変化を実数によって表現し、連続的な運動を理解することができるようになりました。
<論理学の変項>
アリストテレス以来の形式論理学(formal logic)は19世紀末にフレーゲらによって数学の言語として述語論理学(predicate logic)に生まれ変わります。その核心にあるのが変項(=変数)と述語記号。二つの項(term)が「である」で結ばれた自然言語の文(例えば、「AはBである」)を基本にした形式論理学と違って、変項xと述語Fの組み合わせF(x)(xはFである)を基本の形式にしたのが述語論理学です。
変項は個体変項(individual variable)とも呼ばれ、xは自然言語の代名詞、数学の変数に対応しています。個体変項は世界の中の個々の対象、数学世界の個々の数や図形を指しています。この指示対象は伝統的に「個物(individual)」と呼ばれてきたものです。
*変項や変数は、動き回るもの、未知で不定のものというイメージで捉えることができますが、それはあくまで比喩的な理解で、指示代名詞と基本的に同じ役割をもつものです。また、定数や定項は固有名詞に対応し、特定の対象を指すということになります。
<コンピューター言語の変数>
2x + 3の項に登場する x は通常変数と呼ばれ、何かを入れておく箱のようなものと考えられています。変数という箱に対して、私たちができるのは次の三つのことです。
・変数を作る(変数宣言)、・値を入れる(代入)、・値を見る(参照)
Java言語で変数を作ることを「変数を宣言する」、あるいは「変数を定義する」と言います。書き方は「int x;」。これによって、xという名前の変数が一つできることになります。次に「値を入れる(代入)」ですが、「x = 4;」とプログラムに書けば、変数xに4という値を代入することになります。「x = 1 + 2×3;」とプログラムに書けば、変数xには右辺の計算結果が代入されることになります。計算結果は7ですから、変数xには7という値が入ることになります。最後の「値を見る(参照)」ですが、変数の値を見ることを「変数を参照する」と言います。
変数は宣言と同時に値を定めることもできます。これは数が最初から入った箱を作るようなものです。この場合は代入とは呼ばず、「初期化」と呼び、「int x = 4;」と書きます。これで、4という値で初期化された int 型の変数xが宣言されたことになります。「int x;」とだけ書かれた場合には、変数xは未定義の値になります。
このように見てくると、変数が使われる文脈は多様化し、それぞれの文脈に応じて有意味な使い方が開発されてきたことがわかります。数学や論理学の言語が自然言語に代わって自然の変化を表現し、説明や予測に適した装置として使われている理由の一つが変数にあることがこれまでの説明から納得できる筈です。