ソフトウェアアーキテクチャーは再び、データ構造重視に戻るでしょう。
ハードウェア・アルゴリズム偏重の時代は終わりつつある。
ソフトウェア開発も最上流工程・上流工程・中流工程・下流工程に大別され、
ソフトウェアの構想・ソフトウェアの開発・ソフトウェアの洗練・ソフトウェアの
実装と運用という役割分担を担うようになります。
最上流工程では、自然言語・ML系言語が使われ
上流工程では、スクリプト系言語、Cobol,Visual-Basic,PASCAL(Delphi)等が使われ
中流工程では、Java,C#が
下流工程では、Managed C++,C++,C,Assemblerが使われます。
JavaやC#は中流工程の言語ということになり、ソフトウェア開発者側の
と実装・運用者側の間を取り持つ重要な役割を担うわけです。
Javaは開発者側,C#は運用者側の立場に近いことが要求されると
思います。
運用の為、先ずJava言語を用いて上流工程から流されてきた完成度の高い
ソフトウェアフレームワークを現実に存在するかどうかを無視して理想化
されたマシンを想定して統合・洗練します。
現実のマシンは必ずしも標準化されているわけではないので、Javaのライ
ブラリを直接実行させるのは効率面で問題が生じます。現実のマシンには
それぞれのローカルなAPIがあり、それを利用するのが最適なことが多く
実装する場合はそれを尊重しなければなりません。こういった多くのAPI
をなるべく統一的に扱うように工夫されたものが仮想APIであり、この仮想
APIで構成されたライブラリを使うように、Javaで書かれたプログラムを
書き直すのがC#を用いてコードを作成するプログラマの仕事ということに
なります。C#がJavaにもC++にも文法が似ている理由はここにあります。
C#はJavaのプログラムからJava臭を抜く為の書き直し用言語ということ
になるでしょうか。