ネタつつき123 - 理想のプログラミング言語を追い求めて
既存のプログラミング言語にマッピングする非効率さを解消し、さらなる生産力を得るために、自分の頭の中にある情報集合体をそのまま実装できるプログラミング言語が欲しいと考えた事があります。程度の差こそあれ、誰しも「理想のプログラミング言語」が欲しいと考えた事があるのではないでしょうか?
この理想のプログラミング言語は非常に複雑なものです。宣言型/並列型/オブジェクト指向/関数型/論理型などを全て兼ねそろえたものでなくてはなりません。私が追い求める言語は、自然言語に近いのかもしれません。しかしながら、日本語や英語の様な自然言語では、余分な情報が多くて適しておりません。サポートしている文法が沢山あれば何でもいいというのものではなく、ハードウェアに密着した処理から高度に抽象化した概念まで、全ての情報を表現したいのです。
コンパイラ実装者側の目線で「理想のプログラミング言語」を考えれば、その考えはナンセンスなものです。何故ならば、その要求に矛盾をはらんでいるからです。たとえば、アセンブラの様に抽象度が低いものと、自然言語の様な抽象度が高いものを、同時にサポートする文法を実現するとなれば、要求を満足させる美しい言語が出来上がりません。
インラインアセンブラの様な機能を、実装すればひとまず良いと思う人もいるでしょうがそれでは不十分です。インラインアセンブラの様な特別な構文には不自然さがあり、プログラミング言語の美しさが損なわれます。「美しさ」は思考を助け、「醜さ」は思考を損なうのであって、美しさで妥協してはなりません。また、プログラミング言語が持つ機能の統合性が損なわれる恐れがあります。
この記事で示唆する統合性とは、「個々の文法を自由に込み合わせられる事」です。インラインアセンブラの様な文法は「浮いて」おり、他の機能と十分に連携できません。そうすると、思考の連続性が失われ、生産力が低下してしまいます。しかしながら、他にもこういった相反する要求は沢山存在し、今のところ美しく解決できません。
理想のプログラミング言語が存在しないので、今のところ複数のプログラミング言語を使いこなす事によりこの問題に対処しています。しかしながら、これは満足できる解決策でありません。自分が理想とするプログラミング言語を自らの手で作らないと、真の意味で解決した事になりません。誰かが作った言語が自分の好みと完全に一致する確率は極めて低いでしょう。
この手の話題はプログラミング言語に限った話しではありません。どの様なツールでも共通する問題です。現実的に考えるのであれば、既存のツールに満足するしかないのでしょう。ですが、理想を実現する野望を持たない技術者は、技術者として「死んでいる」と私は思えてなりません。
現実と向き合う姿勢も大事ですが、かといって理想を失っては生きがいがありません。今あるものに妥協しては、新しいものを生み出す創造力が生まれません。その矛盾を抱えている存在が技術者なのかもしれません。技術者の人生とは何かをたまに自身に問いかけますが、私自身まだ答えを見いだせません。
ただ、私はこうも考えています。全ての問題に対する答えがでたら、そこに生きる意味を見いだせるのかと・・・。「現実と理想のギャップ」という言葉は、一般的にはネガティブな単語です。しかしながら、このギャップこそが生きる上で大切なものなのかもしれません。