今月のSoftwareDesignが関数型特集だったので買ってみました。LispとかScalaで遊んでいます。
Scalaってけっこう便利そうですね。英文中に含まれる単語数をカウントするメソッドが例示されていたのですが、めちゃめちゃシンプルでわかりやすいです。PythonのリストにもgroupByとかメソッド用意してくれないかしら。
text.split(" ").groupBy(identity).mapValues(_.size)
ここで突然愚痴を始めるのですが、会社の人は目的意識がハッキリしている人が多く、プログラミング言語を「それって何の役に立つの?」って訊かれることがよくあります。プログラミング自体はツールであり、手段にあまり拘っていてはいけないと考えているようです(私自身もそれには同意するのですが)。
しかし、Rでちょっとした前処理をする際にfor文使いまくってたり(関数型の考え方を使ったほうが楽なはずなのですが)、ネストの深い読みづらいコードを書いてるのを見ると、なんだかなあと感じることもあります。また、よりインフラに近い部分の知識も足りてない人も多く、裏側を担当している方に負担をかけてしまっている気がします(でも、自分自身にも知識が足りてないので何も言えねえ‥)。
PythonとかRではfor文遅いので使うなって言われるけど、for文使わないコードの書き方はいっぺん関数型言語を勉強すれば身につけられる気がする(けど自分自身あまりそういう書き方できないのでアレ)
— 黒めだか (@takeshi0406) 2015, 7月 19
もう少し、プログラミングやエンジニアリング自体を楽しんでもいいんじゃないかと思っています。私は傲慢な言語が好きなので、他人に見せて恥ずかしくない(自慢できる)コードを書きたいというモチベーションを理解して欲しいと思ってます。
自分はDJする際に「DJは音楽を組み合わせて表現するので、音源を集めることを躊躇してはいけない」と教わっていて、それはプログラマーでも同じだと思っています。