コンポーネントとプラグインと自然言語プログラミング

 プラグインのインターフェースはそのアプリに必要なものだけあればよく、最小化しなくちゃいけない。複数のアプリで再コンパイルなしで使われる、コンポーネントのインターフェースは過不足なくあらゆるニーズに対応しなくちゃいけない。いわば最大化だ。

 これであらゆる再利用のニーズが満たされるんだろうか。プログラミングの本質は記号操作の方にあって、実装は実はどうでもいいような気がするんだが、しかしバグが起こるのは実装の方だ。記号操作に失敗するとコンパイルエラーになる。あるいは何を書けばいいかわからなくなって頓挫する。

 どのような実装であろうと、おそらくは地球上の誰かが先に書いていて再利用すればそのまま使える。ライブラリのコンポジションで実装の全てが完了しうるはずだ。

 それが出来ないのはコンポーネントの形までインターフェースを最大化してくれていないからであり、そのコンポーネントを他人に使える形で公開してもいないからだ。これを強制する言語があれば、そしてネットワークに全てのコンポーネントが集約され、ちょっと検索するだけで必要なコンポーネントが見つかるようになれば、実装とは全てライブラリのコンポジションになるはずだ。検索に自然言語を用いることが出来れば、自然言語プログラミングが可能になるはずだ。