高見知英のかいはつにっし(β)

高見知英のアプリケーション開発日誌 のほか、地域活動などの活動報告ブログ。

実行速度か、開発速度か

 プログラムというのは、やっぱりこの二つのどっちかに偏ることになると思うのです。
プログラム言語の中で最速なのは、やっぱりアセンブラ(アセンブラを言語とするかは、この際おいておくとして)なのでしょうが、
噂によると、プロでさえ目を背けたくなるというアセンブラアセンブラは開発速度を犠牲にして、実行速度に全力を注いだ言語といえます。
 逆に、開発速度の面で最速なのは、基本的にコードさえかけてればどんな環境でも動く、JAVAではないかと思います(イベントがないとか、やりづらいところもありますが(^^ゞ)。
次がC#など――いわゆる.NET(CLR)でしょうか、これまたWindowsのほかに、現在はLinuxでも動かせますしね。
あとはPerlなどのスクリプトかな、インタプリタがあればどこでも動く代わりに、少々遅いです、バイナリじゃないから、場所によってある機能を禁止したりといったことも、割と簡単にできます*1。まあ、この辺はどれが上かなどとは言い難いですね、Windowsしか使ってない人にとっては、はっきり言ってどれもこれも関係ないかも。

 プログラム言語の中身にも、いろいろありますね、
オブジェクト指向言語は、最初はちょっと面倒ですが、前に使ったクラスを使い回せたり、
ソースコードもクラスごとに分割されるので、比較的読みやすくなります。
ただし、最適化にもよりますが、メモリによけいな物が作成されてしまうなど、実行速度やパフォーマンスは若干犠牲になるでしょう。
だからといって非オブジェクト指向(手続き型)言語は、ソースが手続きの記述だけになるので、実行速度は最適化に関係なく上がるでしょうが、
開発速度は(オブジェクト指向言語に比べて)遅くなるでしょう。少なくともグループでの開発向きとかではないですし、他人のコードを流用するのは困難です*2

 どっちを使うかは、やっぱり人によるでしょう。ケースにもよるでしょうし。場合によっては…、わたしもインラインアセンブラを使う羽目になるかもしれません。(でももちろん最小限でですけどね)
 わたしはやっぱり、開発速度重視で行こうと思います。あんまりタイムクリティカルなものを作る予定はないし、Windows98で待つことにはある程度慣れましたので…(^^ゞ
実際開発速度と実行速度の間をとっていると思われる、一般的な開発言語――Delphiでも、やろうと思えば結構な速度が出せますしね。RPGツクールなどの製品がDelphi製だというのも、できるという気持ちを後押ししてる感じがします(^^)

*1:これがWebサーバーにスクリプト言語以外を許可しないサーバーが多い理由だと思いますが、どうでしょうか

*2:Perl製CGIは主に、Perlの手続き型言語っぽい部分だけを使ってる場合が多いので、その辺はかなり実感できます