プログラミング言語研究の動機

2016年11月7日

「あらゆる対象に対する頭の中のイメージをそのまま記述できるような言語が作りたい。」というのがプログラミング言語を研究する僕の目標です。

既存の言語では、我々の頭の中のイメージをそのまま表現できないことがあります。 少し言い換えると、言語で表現するために、我々の頭の中のイメージを一度紐解いてやらなければならないことがあります。 このような不都合は、我々が頭の中で行っている抽象化を、言語による表現では抽象化できないときに生じます。 このような抽象化を可能にする新しい構文を発明して、言語に組み込むことにより、この問題は解決されることがあります。

このような抽象化を全て列挙して完璧な言語を作ることが、最初に述べた僕がプログラミング言語を研究する目標です。 実際、このような抽象化を1つ見つけて、作ったのがプログラミング言語Egisonです。

ただ、上で述べたような完璧な言語は、本当に作ることができるのだろうかと最近考えるようになりました。 というのは、我々の頭の中のイメージは、我々の対象に対する理解が深まると同時に変化するものであるからです。 そしてその変化と同時に、我々にとって便利な表現も自然と変わっていくからです。

このことを実感するために、ある極端な例を考えてみます。

数の概念は既に知っているけれども、足し算や掛け算の概念は知らないひとがいるとしましょう。 そのひとにとっては、10進法は理解不能な概念であり、10進表記も全く理解不能な表記です。 しかし、足し算や掛け算の概念とその性質をある程度知っているひとにとっては、10進表記は非常に便利で、直感的な数の表現です。

足し算・掛け算を知らないというのは極端な例に思うかもしれませんが、我々がまだ知らない重要な概念は科学史を鑑みるにまだまだありそうです。 このような概念が発見され、我々の認識を深める新しい抽象化が現れれば、それを表現するために新しい抽象化が言語の方でも必要になる可能性が高そうです。 もちろん、この予想が正しくなくて、今後どのような新しい抽象化が現れていても、それを表現できる完璧な言語のほうが先にできる可能性もあります。

完璧な言語が先にできるのか、それとも世界の全てを我々が理解するのが先になるか、これは非常に難しそうな問題です。

この問題について考える前の段階の準備として、既存の数学の概念全てを直接的に表現できる言語を目指して、Egisonの開発を現在は進めています。 (実は、少し数学や物理の教科書を紐解くだけで、既存の言語では、頭の中のイメージそのままに表現できない計算の具体例は簡単に手に入るように思います。) 最初は、代数方程式の計算と、相対性理論やゲージ理論の基盤となっている微分幾何学の計算を、直接的に記述できるようにEgisonを拡張する研究をしています。 この研究を進めるうちに、完璧な言語とは何か、もっと具体的なイメージが掴めるかもしれないと信じて研究しています。

このようなことについて長く考えているうちに、言語について考えるということは、我々が世界を理解するために、根本的なことの1つであり、実際に言語を研究して作っていくうちに今までになかった新しい世界の見方を発見する機会がありそうだと信じられるようになってきました。 これが僕の研究の動機になっています。


comments powered by Disqus
This website in other langauge: English, 日本語