言語って何だろう

勝手に引用すみません。
id:neodenjinさん曰く

Cは「まるでアセンブラなみにハードの動作を意識しなければいけない言語」
C++は「オブジェクト指向化はされたけど、未だにハードの動作を意識しなければいけない言語」
Javaは「やっとハードの呪縛から開放されたけど、逆にVMが何やってるのかとても心配でドキドキしちゃう言語」
ってところででしょうか。

半ば同意でまた違う感触を抱くところもあります。

Cはアセンブラを高級(汎用的にしてCPUのニーモニックを知らない人間に読解可能)にした言語。
少なくともCではアセンブラには敵わないと経験上思います。
そういう意味ではアセンブラ最強。苦行ですが。
にも関わらず、ハードの動作は意識しないといけない、寂しい中間管理職。

C++オブジェクト指向を取り入れたけど、
Cの呪縛からは逃れられない言語。
原型が、C with Classes(C++の設計と進化を参照のこと)であることからも分かるとおり、
積極的にCとは違う振る舞いをすることは許されなかった言語です。
なので、様々なアイディアが埋没してます。
これはこれで悲しい板挟み。でも、そのおかげで、マルチパラダイム言語。

Javaはハードの呪縛からは解放されたのですが、JVMの呪縛からはまるで解放されていない言語。
携帯ハードなどは実装してあるJVMによって動作が変わりますし(J2MEなんて持ち出してもアレですが)、
実際どう最適化されるかはJVMの仕様書でも読まない限りはわからないでしょうね。
で、読んでみたいのですがマネーが(^_^;
こないだRailsの勉強会でYuguiさんが、
ArrayListやLinkedListの各操作の許容されうる(アルゴリズムの)実行時間はきちんと仕様で定められていますよ(勝手な僕の意訳)みたいなこと話されていて、
ほとほと自分の無知さ加減に愛想がつきて、もっと知りたいJava!とか思ってます。