メッセージ。 - [技術] プログラミング言語にこだわるべきか

# [技術] プログラミング言語にこだわるべきか


このへんの話。ぼくはヘッポコプログラマなので、上記の方々とは事情が違うが、いちヘッポコからすれば「プログラミング言語にこだわるべきか」という観点をどう感じるかというと:

どちらかというと、ぼくは向井さんの考えに共感する。言語よりも「なにを作るかが大事」という考えかた。howではなくwhat重視ね。むかし高林哲さんがC#かなにかでプログラムを組まれていることがあって、「すごいですね。いろんな言語でものづくりをされていて」と言ったことがあった。そのときも高林さんは「howではなくwhatじゃない?」とさらっと答えられていて感心した。なるほどこれも高林プロダクトが生まれる秘訣の1つだなぁ、と。

結局、「作りたいものがあるなら、その実現に一番近い(工数が少ない)言語を選ぶ」、というのが、たぶん優秀なプログラマにとっては一番合理的なんだろうなと思う。ただその「優秀な」とか「作りたいものがあるなら」ってところにパラメータがあって。多くのプログラマにとって言語の習熟はコストが大きく、一番近いはずの言語より自分の使える言語を使うほうが早い場合があるということだ(それでも出来上がるものは不完全だったり機能が足りなかったりするが)。また、そういうプログラマにとっては、「○○言語が使えないからそもそも作りたいものを諦める」というのが常のことだ。そんなに、なんでもかんでも言語を使える(切り替えられる)人というのは、たぶん全体の2~3割ぐらいなのではないか。つまり、世の中にはジュニアプログラマが多いってこと。

ただ、ジュニアプログラマもキャリアが10年とか15年とか経ってくると、一人前のプログラマにステップアップしなければならない(10年は長すぎて待てないと思われるかもしれないが、ぼくは普通の人がプログラミングできるようになるには10年かかると思っているので)。一人前になるとき、プロのプログラマとしてある1つの言語にこだわるべきかというと、たぶん*こだわらない*ほうが良いだろうと思っている。

なぜかというと、今回転職しようと試みた際にも痛感しているが、やはり1つの言語にばかりこだわっていると、時間を無駄にするからだ。たとえばぼくはSchemeやHaskellが好きでSchemeについては7年ぐらいやってるけど、その時間のなかで、RubyやJavaやC++でもちょっとぐらいプログラムを書いておけばよかったと後悔している。まぁ「ちょっとぐらい」と言ってもちょっとやっただけでは本当に身には付かないから、それなりに身を入れてやらなければいけないのだけど。でもこう、もしぼくもRubyのコミュニティに参加していれば、オブジェクト指向の話題とか、フレームワークとか、O/Rマッパとか、「共通の話題」(コモディティ)についてキャッチアップし、十分なスキルを身に付けることができていただろう。そして、それらの知識やスキルは、ぼくの好きなSchemeやHaskellにも導入できる。導入を試みることで開ける世界があったはずだ。

まぁ要するに、「ビジネスマンなら新聞を読め」みたいな話なんだけど。プログラマで一生やっていこうと考えているなら、自分の好む言語以外もチェックし、内容を理解できるようになったほうがいいよと。当然、上述の議論をされている方々は、複数の言語は「新聞を読む」的なレベルの上を行っていて、そのうえで議論をされているわけだけど。いちヘッポコプログラマとしては、同じヘッポコの人や、これから上を目指す人たちに言えることがあるかなぁ、と。

--

基本的にはそう思う。一方で、やっぱりぼくは、SchemeやHaskellが好きだ。なぜ好きかというと、ちょっと自分の生き方に合っている気がするからだ。ぼくはヘッポコだから普通の人と同じことをしていては普通以下の生産性しか出せない。だから普通の言語では足りない。そういったときに、SchemeやHaskellは「ふつうのやつらの上を行け」的な生産性の高さがある。そう。「ふつうのやつらの上を行け」という言葉にぼくはやられてしまっているんだ(これについては別稿を立てるべきだが、Paul GrahamやLisp界の人々を尊敬し共感しているという理由から、関数型言語を使いたいという面も大きい)。

ちょっとはみだし者で、普通の人との(悪く言うなら泥のような)チームワークが苦手な自分にとっては、SchemeやHaskellは魅力的に映る。それはやはり、少人数かつ短かいコード・少ないテストケースで高い機能を持つプログラムが組みやすいからだ。抽象ツリーの操作を行う分野ならLispを適用すると生産性が高いし、プロトコルが明確化されている分野ならHaskellで組むと生産性が高い。そういった性能上の優位点がはっきりとある一方で、LispやHaskellを使う人はそう多くない。だったらヘッポコの自分にもチャンスがあるかもしれないし、はみだし者の性でそこに惹かれてしまう。まぁそういう感じ。

ただし、今後はぼくも1つのプログラミング言語にこだわらないで、「なんでもできます、やります」と言えるのを理想としたいと思っている。そうせざるを得ないというか。

--

早起きしてテストプログラムを検証しようと思ってたのに、文章を書くだけで時間を費してしまった。orz
2010-03-04 07:58:36 / ふじさわ / Comment: 0 / Trackback: 0

Comment

コメント投稿機能は無効化されています。

Trackback

TrackBack投稿機能は無効化されています。