プログラム言語の選択

世間では、Javaが流行っているんだけど、なんでJavaってこんなに流行っているんだろうと思ったけど、この本を読んでなんとなく分かった。
Javaでなぜつくるのか

ちなみに私の知っているプログラム言語は、COBOL、Java、C言語、Delphi(Pascal)です。それ以外の言語は知らないので触れません。

Javaはよく、どのプラットフォームでも動作するからいいというけれども、実際は、C言語やCOBOLなどのプログラム言語を使えば、別にそれは実現できる。プラットフォームごと(OS毎)にコンパイルが必要になるが、そんなの大した問題ではないしなぁと思っていた。だから、Javaの魅力はここにはないと思う。
(この本の著者はそれも大きなメリットといっていたけど、そうかなぁと思った)
Javaのいい点というのは、やはり完全なオブジェクト指向言語ということである。
オブジェクトいいところは、再利用だというひとがいるけども、まぁこれも確かにいいとことだけど、
再利用という部分は、実際にはやろうと思えば他の言語でも出来る。だからそれほどのメリットには
ならないと思う。

私がオブジェクト指向の一番のメリットと感じた部分は、この本を読んで再認識したのだけど、
コーディングのルールを遵守させることが出来る部分かと思った。
クラスを設計する人が数人いて、プログラムを書く人が多くいるようなケースにおいては
設計者の意図を遵守させることが出来るというのはこのオブジェクト指向のいい点である。

WebプログラムでJavaが利用されるのも、このWebサーバに必要なコードのしきたりというものが
完全に遵守しやすいというJava言語のメリットからWebでよく利用されているんだろうと思う。

一方、Javaのデメリットは、やはりパフォーマンスになると思う。
Hot-Spotという高速化の技術はメモリを大量に消費し、またバーチャルマシンという性質上
どうしても、パフォーマンスは悪くなるし、また、オブジェクト指向を追及すればするほど、
パフォーマンスというのは悪くなっていくと思う。

Javaで処理しても数秒の処理であれば、正直どちらの言語を選択してもいいと思うが、
特に大量データを扱い、処理に1時間以上かかるような超大量データの処理を行う場合
それは、やはりJavaは適していないと思う。

Javaで20秒かかるけど、C言語では10秒で終わるのであれば、生産性や再利用性を
重視してJavaで作るというのはありだと思う。

しかし、Javaでは2時間、Cでは1時間という処理速度でしかもメモリ使用量はJAVAが
10倍とかいう状態ならやはり、C言語で作るべきだと思う。

バッチ処理に関しては、ネイティブのマシン後に変換されるような、COBOLやCで
作成するのがいいだろうなと思う。
また、COBOLとCの違いは、やはり、数値計算か文字列処理化によって一長一短が
あるように思う。
C言語は、可変長の配列が扱いやすいのでやはり文字列の処理をするには向いてると思う。
一方のCOBOLは数値計算を行うのであればそれは、そちらの方が向いているように思う。

結論として、Javaは大量処理、思い処理には避けるべき言語であると思っている。
バッチ処理は、少しでもリソースを使わないように、少しでも高速に動作するように設計する
というのが、ソフトウェア開発者の責任ではないかなと感じている。

というわけで、本日は、久々に長く語って見ました。

0 件のコメント: