プログラムの組みやすさが世界を変えるフェーズは終わったのではないか

2005年くらいから、コンピュータの性能には余裕があるので、プログラムの効率が多少わるくなってもプログラムが組みやすく人間の能力が発揮できるほうがいいという傾向が強くなりました。
プログラムはサーバーで動かすものであり、サーバーの制約はネットワークとストレージでCPUやメモリには余裕があったためです。
また、世の中は、ITのない世界からITのある世界への変化の中にあって、サーバーでの情報処理やネットワークをサービスとして提供することで、世の中が変わっていきました。
そういった状況であれば、プログラムが組みやすく、思ったとおりのサービスを思った時期に提供できるということが大切になっていました。どんなに未完成でも、新しいアイデアをいち早く見て触ってもらうということが大切だったからです。


しかし、もうすでに世の中は、ITがある世界に変わりました。
もちろん、より便利な情報処理サービスも今後でてくると思いますが、Google検索やTwitterFacebookのような、世の中を変えるというほどにはならないのではないかと思います。
今後は、ITと実際のものの動きを連動させたサービスが世の中を変えていくのだと思います。


そのような中では、プログラムをいかにデバイスで動かすかというのが大事になります。そうすると、プログラムは、並列性やレイテンシ、フットプリント、消費電力といった、物理的な特性が大切になってきます。
どれだけプログラムが早く書けても、多くのメモリが必要になったり、反応が遅くなったり電池を多く食うようになると、思ったとおりのデバイスを提供できないということになります。
並列処理が書きやすければ直列処理が多少遅くてもいいよね、という傾向もありましたが、粒度の細かい並列が増えてくると思うので、並列処理の中での直列処理性能も大事になります。
いかにデバイスに負担をあたえないようにするかが大事、という方向性が必要になるのだと思います。


Java 9では、モジュールシステムJigsawによって必要最小限の実行環境を構成することでフットプリントを小さくすることができるようになります。
また、Project Panamaによって、ネイティブ機能を効率よく呼び出す仕組みの導入が検討されています。ネイティブ機能を効率よく呼び出すためにはメモリ配置も制御できる必要があり、そこで配列の拡張やオブジェクトレイアウトが求められることになります。
GPUを使った並列計算を行うためのProject Sumatraもあります。これもPanamaによってメモリ配置がコントロールできるようになると、より効率のいいコードが生成されるようになると思います。
それをコード組みやすくするのが、Project Valhallaのspecializationです。


プログラマから見れば、コードの書きやすさにつながるValhallaに注目しがちですが、VMの改善という「足腰」の強化が大事だということが、今年のJavaOneからうかがえました。