Hatena::ブログ(Diary)

Oh, you `re no (fun _ → more) このページをアンテナに追加 RSSフィード

Ah well, a dromedary has one hump and a caml has reference cells, buffers, and a garbage collector.

2013-01-17

関数型言語を独学で勉強している学生です への答

http://oshiete.goo.ne.jp/qa/7896221.html にこういうのがあった:

情報系の大学3年生です。

僕は関数型言語に興味がありhaskelllispを勉強しています。

...

昨今のIT企業は新卒採用の際、学生時代に作ったプログラムを評価し採用の是非を決めると思います。

もし関数型言語で何か作っても評価されるのでしょうか。

僕ができることといえば、本やサイトに載ってあるサンプルを少し改良するぐらいです。

そんな作品を企業側が積極的に評価し、採用してくれるでしょうか。

...

自分で考えるべきことでしょうが、調べるばかりで頭が混乱して日常生活に支障がでてきてます。

全文はリンク先を見て。

答えようと思ったが、ログインとかユーザ登録とか実にアホラシイのでここに書いておく。

関数型言語は実用的かどうかについて

関数型言語を実用に使っている人は、実用的だと思って使っているのです。

あなたのように使っていて確かに楽しいかもしれないが、楽しいから使っているのでは、ない。

なぜあなたが Java, Ruby, Python の方が実用に使いやすいと思っているか、理由はいくつかあるはずです。

  • あなたがやりたい事の知見が Java, Ruby, Python ならば豊富にあるが関数型言語での事例が無いか、あなたが手に届くところに事例が転がっていない
  • あなたは関数型言語を実用に使おうと本気になったことがない

関数型言語は汎用的に使えますが、得意だとされてきた分野があります。たとえばプログラミング言語の処理(コンパイラ)や、金融など数学に近かったり、厳密なエラー処理が必要な分野など。このような分野では関数型言語はゲームや Webサービス開発などの分野に比べて比較的に普及しています。あなたがやりたいことが、これらの関数型言語が得意とされている分野から遠く離れているのであれば、非実用的と感じられるのは自然なことです。

しかし関数型言語は汎用の言語です。それ以外の分野でも確実に使われはじめています。ゲームでは Doom中の人が注目しています。Web サービスでは Twitter, Facebook などいろんなところが一部開発に採用しています。ただ、こういったことは、まだ普通にはあまり知られていないのかもしれません。もちろんそれでも得手不得手はあります。たとえば極端な話、あるフォルダにあるファイル名を一括して変更するのであれば私は関数型言語を使うような時間の無駄はしません。shell を使います。

あなたは「本やサイトに載ってあるサンプルを少し改良するぐらい」だそうですので、実際に本腰を入れて関数型言語で実用的なことをしようと思ったことがないのでしょう。やってみようと思っても、実際に手を動かしたことがないにちがいありません。それではいつまでたっても関数型言語はあなたにとって実用的なものにはならないし、Java, Ruby, Python の方が実用に使いやすいでしょう。

もし関数型言語で何か作っても評価されるのでしょうか

はい。

技術を重視する企業であれば、履歴書にあなたの書いたソフトウェアリストがあればそれを調べてみるものです。それは関数型言語であろうが Java, Ruby, Python であろうが関係ありません。事実私たちは、履歴書にそのような情報が書いてあればそれを見て試したりします。そのようなリストがあるということは、そのプログラミング言語を実用的に使えるというよい指標になりますし、コードを見ればその人のプログラミングスタイルがわかります。この情報が全く無い履歴書を持ってくる方はその人のプログラミングレベルを推し量ることが難しい。面接でプログラムを書かせたりすることになります。個人的な経験上、面接で突然プログラムを書かされるのは心理的にかなり大変です。(いやまあ、ソフトウェアリストがあってもコード書かせますけどね) (新卒採用でガバァッと取ってから後で適性を考えるような日式大企業のことは知りません。)

サンプルを少し改良した位では誰も評価してくれないでしょう。何かしら価値のあるものをその言語で自分の手で作ったことがあるか、どうか、の経験の指標として役にたつのですから。

もちろん採用側が関数型言語に興味が無ければ何の意味もありません。たとえばもしあなたがラテン語がペラペラだったとして、京都の老舗旅館があなたに興味を持つでしょうか。有名な企業が関数型言語を採用しはじめ、注目度が上がってはいますが、では関数型言語に興味を持っている企業が多いかというと、まだ少ないです。また、仕事では全く関数型言語は使っていないが、関数型言語に興味を持つ人は優秀に違いない、ということで採用条件に書く、あなたにとってはミスマッチな企業 (Haskell のパラドックスというそうです) もないわけではありません。ですから単にキャリアとして考えるなら関数型言語一本に絞るのはリスクにさえなる場合もあるでしょう。広く使われている技術を身につけて広い可能性をさぐるか、新しい (関数型言語自体は新しいものではありませんが) 技術に特化して狭い専門性のあるキャリアを選ぶか、これはあなたの人生の選び方なのでなんともいえません。まあ間違いなく関数型言語の専門性というものはこの先薄れていきますから、長々期的にはあまり関係ないと思いますが。

関数型言語が楽しいのであれば、何か実用的なものを一つ書いてみてはいかがでしょうか。慣れたプログラミング言語で、これを書きたいなあ、と思っているものを、関数型言語で書けばよいのです。それで関数型言語が嫌になってしまったらそれでしょうがないし、何か仕上げたら履歴書に書けばいい。万が一、そもそも自分が書きたい物がないとか、書きたいものが思いつかない、のであれば、関数型言語とか以前の問題で、プログラマへの適性をまず考えるべきかと思います。

いろいろ考えすぎて日常生活に支障がでている

人生第一。仕事は第二。支障が出るくらいなら休んだ方がいいです。

なんか関数型言語にはまる若い人は突き詰めてものを考えるのが好きなのかいろいろ突き詰めますねぇ。人生長いんだから気楽にいきませんか。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証