« どの登場人物に感情移入するか | トップページ | エンタプライズ系ソフトウェア技術者の勤務実態 »

2008年5月24日 (土)

動的言語 vs 静的言語

海の向こうでも議論が続いているようですね。

Debate and more Insights on Dynamic vs. Static Languages (InfoQ)

思うに、「プログラミングの問題」というのは、基本的に計算機の性能の問題なんですよね。例えば、並列処理は何のためにあるのか? といえば、計算機をより効率的に使うためにあるわけでして。動的言語と静的言語というのも、計算機の性能とのトレードオフというのが、根底にはあるわけです。

コンパイル時に型をチェックして、かつ、記述が煩雑にならないよう、型指定を省略できる、でも指定したいときには指定もできる、というような言語を作ることも理屈上は可能でしょう。それで、かつコンパイル時間と、目的コードの実行時間も、”実用上十分なほど”早くするとなると、実現は難しくなってくるわけで、ここで、言語機能の何かをトレードオフしなければならなくなってくるわけですね。何をトレードオフしたか、ということで”動的言語”と”静的言語”の分類が生じているのでしょう。

実際に色々な言語でプログラミングをしていると、型指定や型チェックが欲しいと思うこともありますし、型をいちいち指定するのが煩わしいと思うこともあります。もちろん、達成したい性能目標との兼ね合いもあります。

These languages are all useful, for different things. A good programmer uses his common sense to provide the best value possible. That includes choosing the best language for the job. If Ruby allows you to provide functionality 5 times faster than the equivalent functionality with Java, you need to think about whether this is acceptable or not. On the one hand, Java has IDEs that make maintainability easier, but with the Ruby codebase you will end up maintaining a fifth of the size of the Java code base. Is that trade off acceptable? In some cases yes, in some cases no. In many cases the best solution is a hybrid one.

両方の特徴を兼ね備えた言語が1つあれば、理想的ではあるわけですが。それがかなわない以上、上の意見が妥当でしょうね。シーンに応じて、言語を使い分けるしかないでしょう。

|

« どの登場人物に感情移入するか | トップページ | エンタプライズ系ソフトウェア技術者の勤務実態 »

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/80472/21143275

この記事へのトラックバック一覧です: 動的言語 vs 静的言語:

« どの登場人物に感情移入するか | トップページ | エンタプライズ系ソフトウェア技術者の勤務実態 »