プログラミング言語と言文一致


[tag:]

自然言語における話し言葉と書き言葉の違いは、 プログラミング言語におけるインタプリタ型と コンパイラ型の違いに似ているように思う。
いずれも、前者では個々のやり取りごとの小さな 構造を頼りに内容を把握していくことが多いのに 対し、後者では全体を通じて設定された大きな 構造を軸に内容を把握していくことが多い。

プログラミング言語を「書く」行為が、自然言語を 「話す」ことと「書く」ことの両方に似ざるを得ない のに対し、プログラミング言語を「読む」行為は、 自然言語を「読む」ことだけに似ることができ、 自然言語を「聞く」こととは似ずにいられる。
この非対称性があるために、プログラミング言語の 「書きやすさ」が「話しやすさ」を意味しながら、 「読みやすさ」が、「聞きやすさ」ではなく「読み やすさ」を意味することで、各々のプログラマに とってのプログラミング言語のよさが変わるのだと思う。

自然言語について言えば、明治時代の言文一致運動で、 文体としては書き言葉にも口語体が普及したが、 話したことを読めるようにするには何かしらの編集が 必要であり、文の構造としては、やはり書き言葉には、 話し言葉とは違った書き言葉としての構造がないと、 読みづらいように思う。
それはプログラミング言語でも同じだろう。
編集を経ていないコードは、編集を経ていない文章と 同じように読みづらい。
@yukihiro_matzが、

と言っているのは、そういった編集を不要にするような 制限を設定することはできないということだと思う。

この編集はlintのようなものよりもさらに大々的な 編集になるはずで、この意味でのエディタはVimや Emacsではなく人間がやるしかないのが現状であるが、 自然言語に比べれば、プログラミング言語の方が 実装しやすいように思う。