第6回 言語の重要性まつもとゆきひろのハッカーズライフ(2/2 ページ)

» 2007年08月27日 04時00分 公開
[Yukihiro “Matz” Matsumoto,ITmedia]
前のページへ 1|2       

プログラムを書く手段としての言語

 このように、言語は考えることも助けてくれますが、考えるだけではプログラムは完成しません。言語の一番重要な側面は、プログラムを書くことです。

 さて、名著『人月の神話*』によれば、「基本的な1ステートメントを製造するのに要する工数は言語によらずほぼ一定」なのだそうです。とすれば、同じ処理を記述するときに言語Aで1000行、言語Bで10行必要であったとすれば、言語Bを採用するだけで生産性がおよそ100倍になります。「そんなバカな」と思うかもしれませんが、例えばJavaとRubyで同じ処理を記述する場合、ステートメント数で2倍以上の差がつくことは珍しくありません。アセンブラとRubyであれば、100倍どころか1000倍の差がつくケースもありそうです。プログラミング言語進化の歴史は、「いかにより簡潔な記述を可能にするか」を探し求めてきた歴史でもあります。

 また、言語の差よりも重大なのはライブラリがそろっているかどうかです。例えば、ネットワーク経由でHTTPアクセスをしたい場合、ソケットを用いてネットワークコネクションを確立する処理から書き始めれば、どのような言語を使っても500行以下で実現できるとは思えません。しかし、HTTPを直接扱うことのできるライブラリが用意されていれば、HTTPアクセス自体がたった1行で実現できるかもしれません。この差は大変重要です。

プログラムを読む手段としての言語

 ほとんどの場合、プログラミングとは一度プログラムを書いてそれで終わりというわけにはいきません。バグがあればプログラムを読み返して、本当に正しい記述が行われているかを確認しなければなりませんし、ほかの人が書いたプログラムを読んで保守しなければならないこともたびたびです。また、半年も経てば自分が書いたプログラムでも他人が書いたものと同じです。読んでみないと、何をしようとしていたのか分からないものです。もしかすると、プログラムを書くよりもプログラムを読む時間の方が長いかもしれません。

 一般に、書きやすい言語によって書かれた簡潔なプログラムは、無駄な「お約束」が少なく、処理の本質に集中できるので読みやすいことが多いのですが、プログラムの簡潔さと読みやすさがいつも比例するとは限りません。簡潔すぎて情報量が少ないプログラムは読解のために推測すべきことが多くなり、かえって読みにくいこともあります。例えば、書くときに面倒なだけの型情報は、読むときにはずいぶん役に立ちます。また、記号などを使って「圧縮」されたプログラムは短くても超難解です。「write-only language」とか「executable line noise」などと悪口を言われるプログラム言語もあります。特に名前を出しませんが(笑)。

プログラム実行系としての言語

 異なる言語によって同じアルゴリズムで同じようにプログラムを書いたとしても、同じような速度で実行できるとは限りません。プログラミング言語は、その実行形式(コンパイラ型かインタプリタ型か)や処理系の優劣によって実行性能が大きく変動するからです。ハッカーの中にはスピード命というタイプもいますし、最終的なプログラムの実行性能を重要視する人も多いです。一般に柔軟で生産性の高い言語は、実行時に行うことが多くて、実行性能が低い傾向にあります。開発時の生産性か実行時の性能か。なかなか難しいトレードオフです。

 ああっ、もう誌面が尽きてしまいました。言語おたくが言語について語り出すと止まりません。来月もこの続きを語ることにしましょう。

このページで出てきた専門用語

人月の神話

Frederick Phillips Brooks Jr.著、滝沢徹/牧野祐子/富澤昇訳『人月の神話【新装版】』ピアソン・エデュケーション(4-89471-665-8)。なんか今月はピアソンの本ばっかりだな。原著は20年以上前に書かれたものだが、その本質は変わらない。


本記事は、オープンソースマガジン2005年9月号「まつもとゆきひろのハッカーズライフ」を再構成したものです。


前のページへ 1|2       

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ