最適化

コンパイラによる最適化は充分に強力で、断片的なコードを元に可能な手法はほぼ尽くされており、必要な情報がコードのあちこちに散らばっているような、大域的な最適化だけを人間の手で行う必要がある。というようにみなしてもよいと私は思う*1
その上で考えると、コードのロジックと実装を分離した言語を作るのが面白いのではないだろうか。
例えば、関数型言語はロジックを記述するのに向いているが、最適化を施そうとするとその利点が失われがちである。逆に手続型言語はロジックの記述が迂遠にならざるを得ないが、最適化を比較的容易に行うことが出来る。ロジックと実装を分離することで両者の良いところだけが取れるはずだ。
一案としては実装の多重化というものが考えられる。つまり、一つのロジックに対して複数の実装形態が用意してあり、実行時のプロファイルデータから最適な実装を選択するという方式である。
このようなものが出来れば、「実装はライブラリに任せてロジックだけ記述」というある種の理想的プログラミング・スタイルが完成する。

*1:あんまり速度が必要なものを書いていないというのもある。