中の人の徒然草361
仮想マシンにオブジェクト指向を適用して改めて感じたのですが、オブジェクト指向は開発効率がいいですね。
何がいいのかといいますと、思考が独立する点です。
機械語命令を実装している時は命令オブジェクト、CPUを実装している時はCPUオブジェクト・・・という風に、独立して思考出来ますので、思考が一つの要素に集中出来ます。
この状態はテストも行いやすく、バグに悩まされる確率が減ります。
C言語もしくは、命令型言語チックに実装していると、仮想マシンはテストが行い難く、一つの部分に責任&コードが集中してしまいます。
そうなってしまうと、機械語命令一つ実装するにも、全体像を考えなくてはならなくなります。
おまけに、抽象度が低くなり、開発する順番が決まってしまう傾向が強まります。
そういったことから、コンパイラの様な従来C言語で実装していたものも、オブジェクト指向を適用する価値があります。
ただ、オブジェクト指向で実装すると、C言語を駆使したものよりもパフォーマンスが悪くなります。
この点が課題となりますが、実験的に作るコンパイラでは問題になりませんし、並列処理にも有利に働くのではないかと考えています。
というのも、並列処理は各要素が独立している事が望ましく、接点を少なくするのが得策だからです。
要素間の接点が多いとロックが多くなり、パフォーマンスが下がりますし、トラブルの元となります。
おそらくパフォーマンスで、オブジェクト指向言語がC言語に勝つ方法は、並列処理しかないでしょう。
それさえ出来れば、開発生産性が高いオブジェクト指向言語を使わない手はありません。拡張性も高く、パフォーマンスもよい、理想的な実装になるでしょう。
並列処理は、オブジェクト指向言語の適用範囲を広げられる技術なのかもしれません。この様に、技術の組み合わせを考えるのは楽しいですね。