C++からJavaへ移行した時代が1990年代。
時代は何故Javaに傾いたのでしょうか?
オブジェクト指向言語だったからでしょうか?
そもそもオブジェクト指向は1960年代にSimula67が産声を上げた頃から存在していた。
すなわち、Javaが目新しい技術を搭載していたわけではない。
C++にもオブジェクト指向は搭載されていた。
そう考えると、オブジェクト指向が搭載されているからJavaに移行したわけでは無さそうだ。
では何故C++からJavaに移行していったのでしょうか?
その一番の理由は
生産性の高さ
でしょう。
当時、Javaで生産すればC++より遥かに高い生産性が出ると言われていました。
実際C++の生産性よりJavaの方が生産性が高くメンテナンスも楽でした。
では、これは何故でしょうか?
JavaはC++からポインタを排除しました。
ポインタの代替としてポリモルフィズムを採用したのです。
また、メモリ管理もC++では自己管理だったものを自動化しました。
こうすることによって、人に分かりやすい言語を作ったのです。
その代償として実行速度の低下が起こりました。
さて、これってJavaとRubyの関係にも似ていませんか?
RubyはJavaよりも生産性が高いです。
それは、CoCと言う縛りを入れることによってコード量(設定ファイル)をへらし、人が直感的に分かりやすいようにしているからです。
(私はJavaのSeasar2よりRubyのRailsの方が直感的に分かりやすいと思っています。)
そして、その代償として速度の低下が起こっています。
どちらも一番のデメリットは速度の低下です。
しかし、近年ハードウェアの高速化によって速度の低下がそこまでデメリットになっていません。
そう考えると
生産性の高さ
と言う最大のメリットがRubyを後押しするのではないでしょうか?
Rubyの時代はすぐそこまでやってきている気がしています。