ソフトウェア開発の方向性

今後のソフトウェア実行環境は仮想マシンが主流になると個人的には思っていますが、進む方向としては大きく分けると、この3つでしょうか?

Java周りはコメント出来るほど詳しくないので、残り2つについてですが、2つとも既存コード(C/C++がほとんどだと思われ)を利用することを重視しています。.NETの場合、P/Invokeをサポートしていることからも、既存コードを無理にC#等へ置き換えることを推奨していません。スクリプト言語は、近年、注目されていますが、C/C++で書かれた高速なライブラリを柔軟に組み合わせる糊として使い、C/C++スクリプトの長所を生かす方向もあります。

.NETやJavaにおけるbytecodeの位置づけが、スクリプト言語におけるC/C++と言えるかも知れません。swigを使えばかなりの言語からC/C++ライブラリが呼び出せるようになりますし。ただ、C/C++スクリプト言語の組み合わせも十分魅力的ではあるのですが、スクリプト言語が便利なので、スクリプト言語部分に多くの仕事をさせてしまいがちになり、大規模になったときにタイプセーフでない言語で果たして大丈夫なのかは心配なところです。

実際のところC/C++は徐々に使われる領域が狭まっていき、Javaや.NET環境に移行していくと思います。C/C++プログラマの力を最大限、信じていた言語であり、Javaはそれほど信じていない印象があります。C#はその中間かな。管理者あたりから見ると、誰が書いても似たようなコードになるよーな言語が好ましいと思うので、開発効率などで優位性を見せないとプログラマの都合とは関係なくJavaに流れていきそうな気がします。.NETの多言語対応も、ソースの管理が出来ないので困るという目で見られそうですし・・・