読者です 読者をやめる 読者になる 読者になる

森理 麟(moririring)のプログラマブログ

ゲームプログラマ森理 麟がのプログラムの話題を中心に書くブログです。

第一回関数型言語勉強会懇親会に出て分かった多くのこと #fpstudy

勉強会

関数型言語勉強会に参加して

関数型言語勉強会に出た。

スピーカーのレベルは高かったし、かなり笑いを誘う人が多かったので凄く面白い勉強会だった。

しかし、ん?結局関数型言語は何が良いかはさっぱり分からなかった。

そう思って懇親会に参加。で、結局関数型言語って何が良いの?という質問を聞きまくった。

関数型言語のメリット

運良く周りが結構スピーカーだった人が多かった。そして幾つかの事が分かった。

ズバリ関数型言語のメリットはソースコードを短く書ける。

これが全面的なメリットだ!と言っていた人はいなかったけれど、突き詰めるとこれがいちばんメリットじゃないかなと思った。

他の言語なら2行で書ける命令を、ある言語なら1行で書けますってだけで乗り換える意味はあると思う。

短く書ける理由

短く書ける理由として、抽象度が高いとか色々聞いたけれど、イマイチ、ピンとこなかった。

まあでもオブジェクト指向言語も関数言語も両方やっていた人が居たので、聞いてみた。

「同じことをやろうとしたら確実に関数型言語の方が短くなる?」と。

「それは絶対なる」とのこと。素晴らしい。

実戦向きなの?

短く書けるというメリットがあるなら実戦に向いているのかな?と思ったらここはイマイチ感が強かった。

C#が書ければWinodwsのアプリは作れるし、Javaが使えればAndriodのアプリが作れるけれど、

Haskellが使えるから何が出来る?という点はすっきりした回答は得られなかった。

じゃああんまり実践向きではなくて、理論が素晴らしい的な言語かなーという印象になった。

メリットの根本

短く書ける点について詳しく聞くと、結局ラムダが使えるという事に集約されるようだった。

じゃあ、じゃ別にC#で良いんじゃない?と思った。

わざわざ関数型言語使わなくたって、ラムダ使えるし、勿論短く書ける。

なんせC#って世界最強の言語だから(主観)。

その後もう少し質問

取り敢えず最初に話して居た人らから聞いたのはそんな感じ。

でもまだモヤモヤしていたので、また別の人にも同じ質問を投げてみた。

関数言語って何が良いのですか?聞く人が変われば当然聞ける話も変わる。

僕的には、2回目に聞いたグループの人らの話は結構実践的な価値が見い出せた。

関数型言語自体の優位性

関数型言語の考え方自体が結構優れているので、その考え方を覚えれば、非関数型言語で組んでも優れたプログラムになるという話を聞いた。

達人プログラマにある、毎年1つは新しい言語を覚えろという考え方だと思った。

これは「凄い!」と思った。関数型言語って凄いけれど、実践的では使えないと思ったけれど、そもそも考え方が間違っていたと思った。

プログラマとして優れた関数言語の考え方を利用してやればそれで良いんだよという話は聞いて妙に納得した。

関数型言語を覚えておけ

例えば、関数の非破壊という考え方はどの言語でも知っていた方が良い。テストとかも作りやすくなる。

ラムダ式に関しても優れた考え方なので、とりあえず後から仕様に入れたC#よりも最初から言語仕様に入っているF#の方がより馴染んで使える。

うむそれは確かに。便利だから後から入れたのと最初から前提で作られいるのではやはり意味は違うはず。

これはそもそも僕の持論だけど、後から出た言語は先に出た言語よりも優れているというのがある。

ま、つまりF#はC#よりも優れているわけで、とりあえず一通り把握する価値はあるなーと思った。

まとめ

この話、どちらかというと懇親会でなくて本編で聞きたかったかなと思った。本編での結論はただひとつ

本編で聞いていればもっと多くの人がよし関数型言語やってみようという気になったはず。

そういう訳で、達人プログラマになるためにF#を少し勉強してみよう。

さて、内容全般は、森理が聞いていた思ったことのまとめです。間違っている把握は森理の責任です。

違うと思った点はコメントなどでツッコミ頂ければ嬉しいです。その他、関数型言語のメリットがあるという方は教えて下さい。