2008-05-20
phpとの上手な付き合い方
phpを使ってるときの苦痛が何に似てるか、今日やっとわかった。受験勉強に似てるんだ。
ぼくの場合、勉強は楽しかった。英語の長文を読めば、そこにはぼくが考えてもいなかった世界の見方が転がっていた(科学系の長文も、人文系の長文も、「世界をどう解釈するか」について書いてあるという点では一緒だ)。同じように、古文も、漢文も楽しかった。小論文の勉強は一番楽しかった。
ただ、どうしても好きになれないこともあった。「点を取るための勉強」だ。受験でしか使えないような「テクニック」を身につけるための勉強は、ものすごく苦痛だった。今だったらわかる。あれは、「バッドノウハウ」を勉強することだったんだ。だからつまらない。
本質(とはなにかという議論は今は置いておいて)とはかけはなれた、瑣末なことがらを覚えていくのは本当に苦痛だった。全然自分の「力」になっていかないのを感じながらする勉強の、なんと苦痛だったことか。
そしてぼくは今phpを使うとき、同じ苦痛を味わっている。phpのあの膨大な関数群。意味がわからない。端的なのはsplitとsplitiの違いだろう。splitiは大文字、小文字を区別しない。splitは大文字、小文字を区別する。そんなこと覚えたくない。全然プログラムの楽しさを感じられない。普通の言語だったらそこは正規表現のオプションで指定するところだろ。phpはこんなことばっかりだ。phpを使っていると、文字列比較でソートする関数と数値比較でソートする関数が別関数として用意されてても不思議じゃない気分になってくる(実際にはかろうじてsort関数には比較手続きを渡すことができるけれど)。
「phpには思想がない」なんてよく言われるけれど、ようやくわかった。思想がないんじゃない。「受験勉強的」に問題を片づけていくプラットフォームを提供するのが、phpの思想なんだ。ぼくはそれをひどくつまらない思想だとおもうけれどね。でもまあ、これは単純に好みの問題だ(と言っておくのがポリティカリー・コレクトだろうからそう言っておく)。
でも、やっぱりこう思う。phpを書いてたって、phpでしか使えない知識が増えていくだけで、もっと高次に抽象化された意味での「プログラミング」の力はつかない。そんな知識を貯めこむ行為は、すくなくともぼくは受験勉強でもう十分だ。
ただ、受験勉強が「やればだれでもある程度できるようになる」のと同じように、きっとphpも「やればだれでもある程度できるようになる」んだろうと思う。実際そういう例はたくさん見てきた。その意味で、まあ、スーツにとって扱いやすい言語であることはたしかだ。だから「仕事」にphpが選ばれるのにはまあ、しょうがない部分があると思うし、妥当な判断でもあるんだと思う。すべての会社が優秀なエンジニア「のみ」で仕事ができるわけじゃないしね。
話が大分それた。最初に戻そう。phpは受験勉強と一緒だ。だから、上手な付き合いかたもきっと一緒だ。受験勉強はやらなきゃいけないけど、つまんない。けど勉強は面白い。そう思ったら、「やらなきゃいけないこと」はとっとと片づけて、楽しい勉強に力を使えばいい。そうやってると、つまんなかった「受験勉強」に、そうじゃない勉強で得た力が生きてきたりすることがある。ていうか、そうやってたのしんで勉強しないといわゆる「いい大学」には入れないみたいよ。おなじように、phpプログラマだけど「プログラム」が好きなら、phpなんてとっとと「やっつけて」しまって、schemeでもJavaScriptでもPerlでもRubyでもなんでもいいからやって、そっちで「本当に面白いプログラム」を書けばいい。そうしないと「いいプログラマ」には永遠になれない。
なんて、偉そうに書いているけれど、ぼくだって、今それを実感している最中、道の途中だ。仕事にする前からプログラムは趣味で書いていた。でもそのときの趣味グラマーとしてのレベルは、ギタリストでいえば「Fが押さえられない」レベルだった。仕事として始めて書いた言語はphpだった。最初は面白かった。やっとFが押さえられるようになって、ちょっと面白くなってきた。でも、そのあとは悲惨だった。phpには、その先がなかった。好きだったはずのプログラムが、つまらなくなってきた。「この程度の技術への愛でこのまま技術者としてやっていけんのかな」なんて思ったりもした。けど、仕事を変えて、自分の時間でできるようになってから、その時間でperlを書くようになった。CPANのモジュールを読んだ(今も継続して読んでいる)。schemeも勉強中だ。そうしたら、純粋に楽しんでプログラムを書いていた時の気持ちが戻ってきた。今は、「プログラミングって、なんて知的興奮の味わえる仕事だろう」と思っている。
相変わらず仕事ではphpを書いている。でも「phpとの上手な付き合いかた」がわかったぼくは、たぶんしばらくプログラミングを「つまらない」と思うことはないだろう。それは幸せなことだと思う。勉強は楽しい。それを受験勉強のせいで嫌いになったらもったいないし不幸だ。おなじように、phpプログラマが「受験勉強」のせいでプログラミングが嫌いになるのはもったいないし不幸だと思う。
結論。世のphpプログラマは、プログラミングが好きならばもっとアグレッシブに他の言語を勉強したほうがいいよ。絶対そのほうが幸せに生きられる。プログラミングが好きでもないのにプログラム書いてるやつは社会の害だから死ね。
- 168 http://homepage1.nifty.com/maname/
- 59 http://b.hatena.ne.jp/entrylist?sort=hot
- 56 http://homepage1.nifty.com/maname/index.html
- 41 http://reader.livedoor.com/reader/
- 33 http://d.hatena.ne.jp/
- 31 http://b.hatena.ne.jp/
- 24 http://blog.livedoor.jp/ilya_len/
- 11 http://b.hatena.ne.jp/hotentry/diary
- 10 http://b.hatena.ne.jp/entry/http://d.hatena.ne.jp/shinpei0213/20080520/1211291038
- 10 http://www.google.com/reader/view/