センスについて

結城浩

2001年11月22日

私は『Java言語プログラミングレッスン』に以下のような「対話」を書きました。

生徒 「プログラムはセンスで書くんですか。インスピレーションで書くんですか。」

先生 「プログラムはプログラミング言語で書くんですよ」

これは詩人(たぶんマラルメ?)が言ったという逸話のパロディです。

誰か 「詩はインスピレーションで書くんですか」

詩人 「詩は言葉で書きます」

私があの「会話」を『Java言語プログラミングレッスン』で書いたのは プログラムをこれから学ぼうという人にセンスだのインスピレーションだのと 言っても何の役にも立たないと思ったからです。 センスだのインスピレーションだのという前にやるべきこと、 できることはたくさんあると思うのです。

もともと、プログラムの世界でみんながやろうとしていることの1つは、 「天才のひらめきがなくてもよいプログラムを作るにはどうするか」ということです。 コンパイラなんかはそのいい例ですね。 それなのに「プログラムを書くにはセンスが必要」と言ってもねえ、 と思うのです (センスやインスピレーションが不要だと言いたいわけではありませんが)。

私が好きなのは、 『Perl言語プログラミングレッスン』入門編の はじめに書いた以下のような文章です。 少し長くなりますが引用します。

Perl言語は、 TMTOWTDI(ティムトゥディ)というモットーを持っています。 TMTOWTDIというのは、

There's more than one way to do it.

の略語です。 その意味は「方法はたった一つではない」「もっと別のやり方もある」ということです。 同じ動作をするプログラムであっても、 問題を解決する方法はたった一つの「正解」があるわけではなく、 人によって千差万別なのです。

言いかえれば、初心者は初心者なりにPerlでプログラムを書いていい。 ぎこちなかったり、無駄が多かったりするかもしれないけれど、 それはそれでいいんです。 Perlのすべてを完全に理解してから珠玉のプログラムを書くのではなく、 自分の現在の実力に応じたプログラムを、いま、書くのです。 ちょうど、それは人間が言葉を話すのと似ています。 まだ語彙も少なく言葉をうまくあやつれない子どもでも、 「あのね、あのね、おやつ、ほしいの」などと子どもなりに表現する。 多少まわりくどかったり、もっとエレガントな表現があるのかもしれないけれど、 大事なのは「おやつがほしい」という気持ちが相手に伝わることなんです。 Perlの一文字目 'P' が Practical (実用的な)であることを思い出してくださいね。

プログラミング言語は「言語」なのだから、 人によっていろんな表現があっていいと思います。 多様で自由な表現ができ、しかも実用性が高いPerl言語を通して、 いっしょにプログラミングを楽しんでいきたいものですね。

この文章をお読みのあなたへ。

あなたはいま誰かを「指導」していますか。自分の子供を、生徒を、後輩を、部下を…。 教えたり、導いたり、助けたりしていますでしょうか。 もしそうなら、ぜひその相手を「励まして」あげてください。 気をくじいたり、やる気をそぐような言葉ではなく、 次の一歩を進めたくなるような、新たな挑戦をしたくなるような、 そんな一言をかけてあげてください。 少々ぎこちなくてもいいんです。くどくど言う必要もないんです。 ただ「よくやったね」「よくできたね」「ここがいいなあ」「なるほどね」「うん、なかなかいいね」 「じゃあもう一回やってみようか」「それはすごい」…そういったちょっとした一言をかけるだけでも、 雰囲気はがらっと変わるものなのです。

もちろん、例えば相手の状況や性格などによっては励ましが悪影響を与える場合がありますから、 その点には十分ご注意ください。