2013年3月2日土曜日

プログラミング言語は「言語」か

プログラミング言語が日本語や英語と同じ意味で言語であるという認識が以前にもまして、一般的にも広がって話題になってきているみたいである。最近もネット犯罪のニュースが話題になることなどもあって、こういった発言がマスコミやネットの間でも目立つように思うが、個人的にはどうも気持ちが良くない。


確かに、学問的にプログラミング言語は「言語」とされているようである。私もかつてほんの初歩だが、放送大学で情報工学を受講し、なんとか単位を取ったが、その時の教科書でも、プログラミング言語が言語であることは理論的に証明済みだということになっていた。


しかし、こういう「証明」ができるのも結局は定義次第である。言語の定義、あるいは言葉の定義など、今までに完全な定義などあるだろうか?またある程度の定義ができた所で、その定義の意味が完全に客観的に、あるいは論理的に理解可能ということがあるだろうか。としてみると、プログラミング言語も、いわゆる自然言語も共通に含まれるような定義があっても不思議はないし、プログラミング言語を含められない定義もいくらもできるであろう。


先の放送大学での情報工学を受講した際、論理学の問題で先生に次のような質問をしたことがある。それは、形式論理を完全に意味論から切り離す事が可能なのか?それに対する先生の回答は、そういう考えもあるが、切り離すことができると考えた方がプログラミンング言語を作りやすいので、そう考えることにしている、ということであった。


要するに、技術の問題なのである。プログラミング言語の一つも使えない者がこんなことを言うのも多少気が引けるが、プログラム言語が、自然言語とか機械言語とかの種別はあるものの、日本語や英語と同じ意味で言語であると考えることで技術上の概念操作が効率的にスムースに行えるということではないだろうか。

例えば、一般人が普通にコンピュータを使う際でも、コンピュータが文字を認識するとか、文字認識ソフトなど、擬人的な表現を使うが、擬人的な表現を使うことなくコンピューターやロボットを技術的に扱うことが事実上不可能になっていることと同じ理屈であると思う。


これは技術の問題であって、科学の問題でもなく、さらに普遍的な真理の問題と考えるべきではないと思う。普遍的な真理の問題として言語の定義を考えることができるとすれば、それは哲学の問題になると言えるのではないか。


日常のレベルでは、ちょっと考えてみるだけで、プログラミング言語が日本語や英語などの自然言語とは異なるものである、と言える根拠はいくらで挙げることができる。第一、プログラミング言語を人間同士のコミュニケーションには使えない。感情や思想を表現することもできない。それがどうして言語なのか?という疑問を投げかけることもできるはずである。


両者が同じ言語という範疇に属すことが証明されている理論というのは結局は文法理論の一つなのだろうけれども、あくまで一つの理論であって、それが技術的に役立つということ以下でも以上でもない、ということなのではないだろうか


プログラミング言語が、自然言語と呼ばれる日本語や英語と同じ意味で言語であるという考え方も一種の比喩で、日常の会話でもそう説明することで便利になるのであればその場限りの比喩として役立つ単なる表現とでも考えておくのが良いのではないかと思う。しかしそれが何か深いところに潜む普遍的な真理であるかのように思わせる雰囲気が社会的に広がっているようなところがあって、あまり良い傾向ではないような気がするのである。


またちょっとニュアンスの違う問題だが、プログラミング言語こそが論理の神髄であるとか論理そのものであるかのような発言もよく目にすることがある。これもちょっと違うのでなないか。

論理学や数学的な研究がもとになってプログラミング言語ができたのであって、その逆ではないだろう。


論理的な思考を正確に実行するための訓練にはなるのだろうが、それだけが論理ではないし、論理の本質的な部分ではないように思えるのだが。


0 件のコメント: