いろんな言語に手を出す理由

LL魂の後に、id:scinfaxiに「どうして色々な言語を勉強するのか」というようなことを聞かれて、「色々な考え方を知るため」みたいなことを言った気がするけど、これについても今思うことを書いておく。

多数の言語を学ぶ目的としては、考え方を学ぶこと、そして自分が対処できる問題領域を広げることがある。

プログラミング言語には、それぞれ異なる思想があり、背景がある。"自然な"考え方や、プログラムの書き方は言語が変われば当然変わる。新しい言語を学ぶ中で、例えば関数型プログラミングだったり、アスペクト指向だったり、色々な概念が出てくる。そういう自分が知らない世界を見るのが楽しいし、理解できるともっと楽しい。次のターゲットはFortressとかDにあるtraitを使ったプログラミングかな。

プログラミング言語を"使える"ってことは、その言語で"自然な"考え方ができるようになるってことだと思う。そう考えるようになったのは、プログラミング診断室かなんかで、「どうみてもPASCALです本当にありがとうございました」なCのソースコードを見たとき。Cで書かなきゃいけないのに、Pascalで考えるのは(ネタとしてはアリだけど)マジなプログラミングとしては最悪だと思う。言語が変わったら、考え方もスイッチできるようにならなきゃな、と思った。

そして、プログラミング言語はそれぞれ得意とする問題領域がある。色々な言語を学ぶってことは、対処できる問題領域も増やすことに繋がるはず。俺はScheme大好きだけど、全ての問題をSchemeで解決しようとは思わない。シェルでコマンドを繋ぐならばシェルスクリプトが一番楽だし、低レイヤーなことをするならCとかアセンブラを使わなきゃいけないだろう。