連載
» 2007年08月27日 04時00分 UPDATE

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

ハッカーは、プログラミング言語にこだわる人がとても多いことで有名です。その理由はおそらく、プログラミング言語がハッカーの力と密接な関係があるからだと思います。言語は人間の思考をコンピュータに理解できる形で表現する手段なわけですが、同時に思考の道具でもあるのです。

[Yukihiro “Matz” Matsumoto,ITmedia]

言語へのこだわり

 ハッカーは、プログラミング言語にこだわる人がとても多いことで有名です。例えば、『ハッカーと画家*』などの著書で知られるPaul Graham*はLispに大変こだわっており、著書やエッセイの中でLispのパワーについてたびたび熱く語っています。わたし自身もプログラミング言語に深いこだわりを持つハッカーであり、「言語おたく」を自称しています。わたし以外にもプログラミング言語好きのハッカーは数多く、中にはそれを本職にしてしまっている「言語屋」と呼ばれる人たちも存在するほどです。

 では、なぜハッカーはここまで言語にこだわるのでしょうか。それはおそらく、プログラミング言語がハッカーの力と密接な関係があるからだと思います。前回、プログラミングがハッカーの力の源であると述べました。そして、そのプログラミングが言語を通じて行われる以上、言語はハッカー最強の道具です。ですから、どのような言語をどのように使うかは、ハッカーの力の大きさに直接関係してきます。ハッカーは自分の能力や道具の良しあしにとても敏感ですから、どうしても言語にこだわってしまうのでしょう。

 いわゆる「普通の人」には、この気持ちを理解することは難しいのかもしれません。普段あまりプログラムを書かない人にとっては、どのような言語でプログラムを書こうとも、結局はアルゴリズムを記述しているわけであり、その本質に大差はないと感じることでしょう。確かにチューリング完全*な言語であれば、任意のアルゴリズムを記述可能だそうですから、数学的には(ある一定の条件を満たす)すべての言語は等価なのかもしれません。しかし現実には、すべての言語は等価ではないのです。

思考表現の手段としての言語

 たとえ理論的には同じアルゴリズムを記述したとしても、言語が違えばその表現は大きく異なります。そして、その表現の違いが言語の違いを生むのです。プログラミング言語というものは、プログラムというコンピュータに対する仕事の手順を記述するものですから、その対象はコンピュータであると考えがちです。しかし、実際に言語によって影響を受けるのは人間の方です。言語は人間の思考をコンピュータに理解できる形で表現する手段なわけですが、同時に思考の道具でもあるのです。

 自然言語学には「人が話す言葉と、物事の理解の仕方や振る舞い方には密接な関係があるのではないか」という「Sapir-Whorf仮説」というものがあります。わたし自身も日本語で話しているときと英語で話しているときで性格が違うような気がする*ので、個人的な経験からはこの仮説が成立していそうなのですが、実際にこれが正しいことを示す学術的な証拠は見つかっておらず、どちらかといえば否定されているっぽい仮説です。しかし、自然言語についてこの仮説が正しいかどうかにかかわらず、使用するプログラミング言語によってプログラマーの発想が影響を受けるのは事実です。

 わたしがBASICユーザーだった中学生のころ、関数が自分自身を呼び出す再帰という考え方が理解できず、3日間Pascalの教科書とにらめっこした覚えがあります。まあ、手元にPascalの処理系があって実行できればもっと早く理解できたのかもしれませんが、当時は自分で自由に使えるコンピュータを(BASICポケコン以外は)所有していませんでしたから。もしわたしが最初に使った言語がLispだったりしたら、おそらく再帰という考え方に違和感を覚えることはなかったでしょう。

 このことから、「より強力な言語を使うことは、プログラマーがより良い発想を持つ助けになる」ということが分かります。言語の選択は、プログラマーの能力に影響を与えるのです。また、一度学んだ発想はほかの言語を使うときにも応用しやすいので、新しい言語を学ぶことはより優秀なプログラマーへの近道でもあります。名著として知られる『達人プログラマー*』の中で著者たちは、「1年に1つ新しい言語を覚える」というチャレンジを提案しています。これも同じ理由からです。彼らは執筆直後にこのチャレンジを自ら実践してRubyを発見し、あまりに気に入ったので英語圏における初のRuby解説書である『プログラミングRuby*』を書いたのでした。

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

ハッカーと画家

Paul Graham著、川合史朗訳『ハッカーと画家コンピュータ時代の創造者たち』オーム社(ISBN4-274-06597-9)。ハッカーの生態を分かりやすく描いた書籍として知られている。全16章中、実に4章が言語を主題にしており、さらに多くの章がハッカーと言語の関係について語っている。ハッカーについて理解したい人にとって必読書。ただし、ハッカーにとって前半は当たり前すぎて退屈かも。

Paul Graham

『ハッカーと画家』の著者。ベンチャー企業Viaweb(現Yahoo!Store)を成功させたリッチなハッカー。Viawebの成功の秘密は、Lispを使った生産性にあったそうだ。ハッカーでもリッチになれるという希望の星。しかし、彼の名を本当に高めているのはViawebの成功ではなく、彼の書くハッカーの生態を描き出したエッセイである。『ハッカーと画家』に未収録のものも多いが、その幾つかは川合史朗さんによって翻訳されている。

チューリング完全

Alan Turingがアルゴリズムを記述するために考案した仮想的な機械チューリングマシンを表現できる言語のクラス。チューリング完全な言語は停止可能な任意のアルゴリズムを記述できるらしい。

性格が違うような気がする

わたし自身は英語を使っているときの方が論理的な思考をするような気がする。先日、英会話番組でソニンも同じようなことを言っていたから、そう感じるのはわたしだけではないらしい。

達人プログラマー

Andrew Hunt, David Thomas著、村上雅章訳『達人プログラマー』ピアソン・エデュケーション(ISBN4-89471-274-1)。プログラマーとしての能力を向上させる基本的なルールについて解説した本。プログラマー必読の書だと思う。

プログラミングRuby

Andrew Hunt, David Thomas著、田和勝訳、まつもとゆきひろ監訳『プログラミングRuby』ピアソン・エデュケーション(ISBN4-89471-453-1)。Ruby 1.8対応の第2版を邦訳したものも出版されている。


       1|2 次のページへ

Copyright© 2016 ITmedia, Inc. All Rights Reserved.

Loading

ピックアップコンテンツ

- PR -

注目のテーマ