連載
» 2008年05月28日 00時00分 公開

まつもとゆきひろのハッカーズライフ:第15回 後輩からの手紙 (2/2)

[Yukihiro“Matz”Matsumoto,ITmedia]
前のページへ 1|2       

先輩からの返事

 現代において、コンピュータ好きのうち、プログラミングに興味を持つ人の割合は確かに下がっています。ただ、決していなくなったわけではありません。そして、その中にはインターネットからの情報とオープンソースの力を借りて、まさに超優秀なプログラマーが育っています。

 例えば、Haskell*を使ってPerl 6コンパイラの基礎を2週間で作ってしまったアンドレイ・タンは、そのとき20歳になったばかりでしたし、そのほかにも10代や20代前半で大きな成果を上げる若者もそれなりにいます。15歳でコンピュータとプログラミングに興味を持ち、優秀なプログラマーになりたいと考える彼も、将来大変有望なのではないでしょうか。

 そう思って、以下のような返事を書きました。


 お若いのにご自分の将来について真剣に考えていらっしゃることを大変うれしく思っています。

 さて、どのようなことから勉強を始めれば良いかという質問ですが、これは大変答えにくいものです。というのは、何が効果的かは人によって違うからです。同じ本を読んで感動する人もいれば、全然何も感じない人もいます。コンピュータの勉強も似たようなものだと思います。

 しかし、わたしがプログラミングを始めたのも15歳くらいでしたし、自分の若いころを振り返って役に立ちそうなことを幾つか挙げておきましょう。

 まず、コンピュータを使うこととプログラミングすることはまったく違うということをしっかり認識してください。昔、そう20年くらい昔にはこの2つはあまり区別されていませんでしたが、いまでは全然違います。ソフトウェアを使うのもまあ重要なことですが、プログラミングによってコンピュータに新しい仕事を教えこむことはそれ以上にエキサイティングで楽しいことです。

 次に、プログラミング言語について学んでください。それもできれば複数。プログラミングは言語を駆使して行います。言語を知らなければプログラミングはできません。そして、プログラムを作るのにどのプログラミング言語を使うかで、プログラマーの思考は影響を受けます。ですから、1つだけの言語では考え方が偏ってしまいます。C、C++、Javaのような言語と、RubyやPythonのような言語、それからLisp、ML*、Haskellのような言語の3種類からそれぞれ自分に向いていそうなものを学ぶといいと思います。

 プログラミングは手段であって目的ではないことに気をつけてください。つまり、プログラミングは(分かる人にとっては)とても楽しい行為ですが、それでも「完成したプログラムで何を実現するか」ということが最も重要なことで、それがなければプログラミングそのものにはたいして意味はなくなってしまいます。自分がどんな分野に興味があるのか、プログラムを作ることによってどんなことがしたいのか、そのことが分かれば能力を伸ばすことができると思います。

 わたしの知っている優秀なプログラマーは、みんな「自分が何を好きで、何がやりたいのか」をはっきり知っています。わたし自身はプログラミング言語にとても興味があり、いつか自分の言語を作ろうと心に思ったのは高校生のころでした。そのような気持ち(熱意)の継続により、大学に入り、就職し、Rubyを作り、世間から「優秀なプログラマー」と見なされるようになったわけです。自分から見れば、実際に優秀かどうかはやや疑問符がつきますが。いずれにしても、プログラミング言語を作りたいと思ってから実際にRubyを作るまでには10年以上かかっていますから、その間「作りたい」という気持ちを維持できたことが成功の1つの原因ではないかと思います。

 自分が何に興味があるのかある程度認識できたら、その分野を中心にほかの人の書いたプログラムを読むのが良いのではないかと思います。書籍に載っているサンプルプログラムや、オープンソースソフトウェアのソースコードなど読むことのできるプログラムはたくさんあります。ただ、漠然と読むのは難しいですし、興味を維持することができませんから、知りたいことを調べるために読むという目的意識が必要でしょう。

 わたしの若いころには思いどおりに使えるコンピュータなど個人レベルで買えるものではありませんから、中学生、高校生のころは本ばかり読んでいました。Pascalの本、Lispの本、人工知能の本など。ちゃんとプログラムを書き出したのは大学に入ってからです。それでも基本的な知識はあったので別に困りはしませんでした。

さて、年寄りの話はここまでです。パーソナルコンピュータが普及し、インターネットが当たり前になった時代に生きるいまの若い人は、また違った形でプログラミングを身につけるのではないかと思います。しかし、時代が変わっても、熱意とか継続とかは変わらない原則ではないかと思います。ご自分がなぜコンピュータに興味を持つようになって、本当はどんなことをしたいのか、ちょっと考えてみてはいかがでしょう。


 このような若者がいる限り、「未来は明るい」と信じたい今日このごろです。

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

Haskell

プログラミング言語の研究を行うための共通の基盤を築くことを目的とし、近年定説となりつつあるプログラミング言語理論を集大成して作られた非正格純粋関数型言語。

ML

Meta-Languageの略で、パターンマッチング、例外処理、参照型、モジュールシステムなどの機能を統合した関数型言語。


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


前のページへ 1|2       

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ