炉端での話題

折々に反応し揺れる思いを語りたい

記号=について

2017-03-18 07:30:18 | Weblog
数学とか物理学の数式に = の記号が用いられている。また20世紀後半のコンピュータに関わる開発と応用に寄与するプログラミングにも広く用いられるようになった。プログラミングにあたり、数学とか物理での = とは異なる意味があることから、これに携わるプログラミングに従事する者にとっては違和感があった。
例えば
X=X+1
という数式表現は数学的には正しくない。しかしながらプログラム言語では右辺の X に 1 を加えて、左辺の X に置き換えることを意味して正しい。これを代入式ともいう。そこで改めて記号 = の意味について考証しよう。

数学での定義
数学では記号 = による数式、右辺 = 左辺のことを等式(equation)という。ここで右辺、左辺は変数を伴う演算式である。さらにこの等式について変数の値にかかわらず成立する場合は恒等式といい、恒等式でない場合は方程式という。
例としては
(X+Y)=X+2XY+Y
は、X と Y の値によらないから、恒等式であり
X-1=0
は、X=1,X=-1と X の値が定まるから方程式である。上記の恒等式を含めて、等式を一般的には方程式ということがあるが、数学の見地からすると厳密性に欠ける。

物理学での扱い
物理学では、数学が確立していない環境で理論的な取り扱いをしていたことから、数学的な見地からすると理解できないことがある。
その例を物理の高等学校の教科書に記述されている熱学からとりあげる。
ボイルの法則
温度が一定のとき、一定質量の気体の体積Vは圧力pに反比例する。
pV=k (kは定数)
シャルルの法則
圧力が一定のとき、一定質量の気体の体積Vは、温度を1°C だけ変化させると0°C のときの体積の 1/273 だけ変化する。このことから絶対温度 T と定数 s をもちいて次式で表す。
V=sT 
ボイル・シャルルの法則
ボイルの法則とシャルルの法則を基にして、次のボイル・シャルルの法則がある。
pV=RT
ここにRは気体定数で 8.31J/K・mol と定義されている。
仮に数学的な取り扱いをすると、ボイルの法則 pV=k のVに、シャルルの法則 V=sT を代入して p(sT)=k となる。
ところがボイルの法則では温度 T が一定、シャルルの法則では圧力 p が一定とした法則であるから、それぞれの一定条件を含めて理想気体の状態方程式であるボイル・シャルルの法則 pV=RT を導いている。
この等式は三つの変数、圧力 p、体積 V、温度 Tに関わる物理現象を数学的に表示している。ここで三つの変数の内の二つを定めなければ残りの変数の値は一意に定まらないから上記の数学的な方程式の定義にはあてはまらない。また任意にすべての変数の値にも対応しないから恒等式でもない。等式であることは認められるので、数学的な見地からは理想気体の状態等式というべきである。
以上のように、物理では物理現象を理論的に扱うために数学的な手法を用いるが、数学的には曖昧となっている課題がある。

情報工学では
プログラムの記述に用いる言語では、記号 = は代入式と等式と明確に区別されている。等式の左辺と右辺の順序関係はないが、代入式は右辺の結果が左辺に代入するので順序がある。さらに左辺の変数は1つだけに限定され、複数の変数は扱えない。
C言語での代入式は = ,等式は == と記述し,パスカルでの代入式は :=で,等式は = と記述するように定められている。C言語とその派生言語が現在は広く普及しており、形式言語の流れを踏襲するパスカルは律儀に代入式に記号:=を用いている。
一般に代入式が多いプログラムの作成には : のキー入力に手間がかかる。
筆者は若い頃、形式言語の自由文法を忠実に実現したALGOLに傾倒してプログラムを作成したことがあり、GO文を用いることなくプログラム作成する美しさに魅了されたことは忘れられない想い出である。
(納)