プログラム言語の次の5年

スクリプト言語、正確には動的型言語が復権しました。でも、静的型言語も健在です。
そして、これからは、Java6でJavaScriptが標準で動くようになったことからもみんなが感じているように、静的言語と動的言語を組み合わせて使うことが当たり前にになります。
組み合わせるというよりは、静的言語の上で動的言語が動くようになるのです。ライブラリはJava、アプリケーションはJavaScript(Rhino)やJRubyという具合にです。
これは、ネイティブコードの上にVMという層ができたように、静的言語と動的言語という層が新しくできるということです。
使い分けとしては、大域的なものを静的言語、局所的なものを動的言語という感じになります。
フレームワークコンポーネント、ライブラリのように大域的でパフォーマンスや信頼性が求められ、仕様が比較的安定するものは静的言語が適しています。
アプリケーションの画面や処理のように局所的で他に影響を与えず、パフォーマンスや信頼性もそれほど求められず、そして仕様が安定しないようなものは動的言語が適しています。


ここまでは、すでに実用化されている話です。問題は、このあとのことです。
まあ、ありきたりなことが起こるはずです。
つまり、動的言語と静的言語の融合です。
Java7で噂されているのは、動的言語に対応したバイトコード仕様ですが、Java言語自体に動的機構が追加されるわけではありません。
これがJava8が噂されるころには、すでに現場で使われているであろうJava6での動的言語と静的言語の使い分けを考慮して、Java7の動的言語対応の実装をふまえた言語拡張が考えられはじめていると思います。
一方で、Rubyなどの動的言語の中にタイプセーフ機構が盛り込むものが出てくると思います。もしかしたら、すでにその動きは始まっているのかもしれないですが。
そのとき実際に実用になるのは、いままで誰もみたことがないような言語機構になるかもしれません。
で、その実装としては、Javaの例で言えば、ひとつのソースコードからJavaバイトコードと動的Javaスクリプトコードを生成するようなものになるかもしれません。


とにかく両方ひとつのソースで書きたいんです。