Haskell,Clojure,OCamlのうち始めるのにおすすめのものはどれですか?
純粋な関数型言語を学びたいです。
ほかにもあったらよろしくお願いします
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答5件
0
宗教や哲学はわすれて、
http://www.mew.org/~kazu/material/2010-func.pdf
をみると関数型の要素がつまっているのは
Haskellです。
純粋=副作用がないとすると
Haskellです。
投稿2015/06/02 04:49
総合スコア36
0
最近よく言われている関数型プログラミングの長所(簡潔なコード、安全でバグが少ない、並列化しやすい)を学んで使いこなせるようになりたい、ということでしたら、やはり、MLの特徴を持った言語である、OCamlとHaskellをおすすめします。Clojureは、関数型パラダイムの要素も持っていますが、どちらかというと、Lispパラダイムという独自のものに属していると理解しています。
では、OCamlとHaskellのどちらから始めたらいいかというと... 難しいですね、片一方で済むくらい良書に恵まれていればいいのですが。私はどうしてるかというと、プライベートの時間で、両方同時に学んでます。(そして、仕事では強固な分散システムの開発をしているので、これらとは別に、5年ほど、Erlang/OTPを使ってます。)
日本語で関数型プログラミングの基礎を学ぶには、OCamlの方がよい書籍が揃っているように思います。ですから強いて言えば、OCamlから始めて、その後は、Haskellも並行して学ぶというのがおすすめでしょうか。
OCamlの日本語の書籍では「プログラミングの基礎」(浅井健一 著)の評価がいろいろな所で高いのですが、私は海外に住んでいるので入手できません。「プログラミング in OCaml」(五十嵐淳 著)は、電子版もあるので私も持っています。比較はできませんが、基礎から丁寧に解説されていて、良い本だと思います。
その他、関数型プログラミングの長所を解説した本でお薦めなのは、「関数プログラミング実践入門」(大川徳之 著)です。こちらは、Haskellと他の言語で書かれたプログラムを比較しながら解説されています。あと今読んでいる本で「Scala関数型デザイン&プログラミング」(Paul Chiusano、Rúnar Bjarnason著、株式会社クイープ 翻訳)もなかなかいい感じなのですが、これはある程度関数型プログラミングに慣れてからでないと、ついていくのが難しいかもしれません。
(編集:「関数型言語の長所」と書いていたところを、「関数型プログラミングの長所」に変更しました)
投稿2016/02/08 08:02
編集2016/02/08 08:52総合スコア2046
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
何から学び始めるか
関数型言語の中でも特にHaskellは、一般的に普及している手続き型言語に比べて、多くの方にとってみると使いこなせるようになるまで時間がかかる場合が多いです。
なのでLisp系で小さいコードを書きながら馴染んでいくのがいいかもしれませんが、ただ関数型言語がどのようなものであるか(関数型言語的なアプローチとはどんなものか)を簡単に知ってみたいという程度であれば、なにも関数型言語を選択せず、JavaScriptで関数型言語的なアプローチをとってみて雰囲気をつかむ程度でもいいかもしれません。
JavaScriptで学ぶ関数型プログラミング
http://www.oreilly.co.jp/books/9784873116600/
しかし上記アプローチではHaskellでプログラミングを行うことのメリットの半分も享受できないので、あくまで「関数を主体としたコード設計を用いてプログラミングを行うとどんな感じか」という雰囲気をつかむ程度の理解となります。それでもいい場合もあるかとも思いますので、Haskellを学習しようとして挫折した、あるいは挫折しかかっている、などの場合、箸休めとして上記アプローチもいいかもしれません。
何を学び続けるか
きちんと理解が進んでくると更に奥によりディープな世界が見えてくるようになるのがHaskellの良さです。そういう意味では簡単に満足せずに学び続けられるのもHaskellの良さであり、ソフトウェアやツールを作る喜びだけでなく、より高度な抽象思考を得られることによる世界の見え方の変化がもたらす喜びを得られるので、学び続けることそのもの自体を目的とする場合であれば最初からHaskellをおすすめします。
投稿2016/02/08 06:33
総合スコア12
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
関数型言語をここ数年勉強している者です。
marsさんが関数型プログラミングがどんなものなのかを純粋に知りたいけれど、
周囲に関数型言語に詳しい人がいないという前提であれば、OCamlをお勧めいたします。
OCamlは教育用にも使われている言語なので初心者でも取っつきやすいです。
ただし、コード補完やデバッグなどの高度な開発環境を整えるのに苦労するかもしれません。これといったIDEがなくテキストエディタを使うことになると思います(手近なものではocaml-top)。
その点ではHaskellの方が簡単ですが、Haskellでは関数型プログラミングの開発手法を深く学べる日本語の書籍が見当たりませんでした(すごいHaskell本はどちらかというと言語の解説に重きを置いているよう感じました)。一方、OCamlでそのあたりを学べる書籍として、浅井健一先生の「プログラミングの基礎」をお勧めいたします。
まずはOCamlを勉強して、気が向いたら他の言語もやるのが、一見遠回りに見えますが一番挫折しづらい道だと思います。
投稿2015/08/10 15:13
編集2015/08/10 15:19総合スコア12
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。