ぼくのかんがえた、さいきょうのげんご 1

周りで言語を考えたり処理系作ったりしている人がいると、自分でも作りたくなってきた。ここで、「僕の考えた最強の言語」の青写真を書こうと思う。

自然言語に学ぶ

Perlのやったように、自然言語に学ぶことは多いと思うので、自然言語の持つ性質をいろいろこじつけながら見ていき、いいとこ取りをしようという魂胆である。

括弧

プログラミング言語は言語といっても、自然言語とは大きく異なっている。特に、プログラミング言語には括弧が多い。一方で、自然言語の文章に括弧が出てくることは稀で、出てくる約物の多くは句読点という、単に区切る記号だ。

どんなプログラムにでも括弧が多いわけではなく、例えばアセンブリ言語には括弧はほとんどないだろう。プログラミングに括弧が頻出するのは、それが構造化されているからだ。でも、幾重にもネストしたコードはやはり不自然で、インデントをしてあってさえ読みにくい。

自然言語はネストを使わずとも、高度な表現ができる。自然言語の持つ豊富な語彙が、構造的な概念を線形的叙述にしているのだろう。

変数

分かりやすい変数をつけろと常日頃言われているのだけれども、最初から変数を使わない方が簡潔で分かりやすくなることも多い。「任意のxについて、xがカラスならばxは黒い」なんてのは、数学では当たり前に使われる言い回しなのだけれども、日常の表現なら「カラスはみんな黒い」で済ませるところだろう。あるいは、「以下甲という」のように書面で使われるぐらいで、普通は指示語や代名詞を使う。Perlは$_を導入した。コンビネーターを使ってポイントフリースタイルで書いてもいい。

語彙

自然言語の持つ豊富な語彙は、文章を簡潔で分かりやすいものにする一方で、言語の習得を困難にする。しかし語彙が少なくても、イディオムの習得で更に苦しむことになるかもしれない。とにかく今プログラムを書かなければならない人にとっては、文法書や辞書にあたるリファレンスマニュアルを携えてプログラムを記述することになる。初学者に使いやすいリファレンスマニュアル、易しいエラーメッセージが要る。