なぜ関数型プログラミングは難しいのか? ソフトウェアデザイン 2015年8月号 ― 2016年04月07日 08時38分44秒
ASAHIネット(http://asahi-net.jp )のjouwa/salonから。
---
最近、Lisp, 関数型プログラミング、Prologなどの本のお買い上げや、本の出版がいろいろあって、勝手に盛り上がっているという話を何度か書いたけど、まとめる時間がないので、小出しにする。これもその1つ。
お買い上げありがとうございます。
Lispから始まってるから、偉い!と思って、私も買って読みました。
PHPプログラマがScalaを習得するまでの話とか、Scalaにそんな言語仕様あったんだと思うことがあった。ScalaでCAS-UBという電子書籍の出版システムを書いたのは、もう6, 7年前ですからね。復習にもなりました。
http://www.amazon.co.jp/exec/obidos/ASIN/B00XVN1OSU/showshotcorne-22/
ソフトウェアデザイン 2015年 08 月号 [雑誌] 雑誌 – 2015/7/18
技術評論社にある紹介。目次もあります。
http://gihyo.jp/magazine/SD/archive/2015/201508
ソフトウェアデザイン 2015年8月号
なぜ関数型プログラミングは難しいのか?
Lisp,Scala,Haskell,Elixir,Python,Clojure,関数型のエッセンスを学習する
関数型言語を難しく感じるのは、手続き型、命令型の言語からは、発想の転換が必要だからでしょう。
関数型は、変数に、一度代入したら(値を束縛したら)、変更不可能(Scalaみたいに例外的に許す場合もある)。変数が変更不可能で、どうやってプログラムを書くんだと思うかもしれないが、むしろ、きれいに書けるんですよね。
関数型では、forやwhileといった、ループは書かないのが普通。ループなしでどうやってプログラムを書くんだと思うかもしれないが、むしろ、きれいに書けるんですよね。
データのストリームに次々と処理を当てはめる感じで、いわゆるコマンドチェーンのスタイルになる。
イメージとしては、工場の流れ作業です。
ベルトコンベアで流れている材料が、まず、きれいにカットされて、それが加熱されて、ああだこうだと色々と処理されて、最後は、パッケージに入れられて、商品になる。
ああいう感じがつかめれば、関数型言語は、ほぼ手中にできています。
別に関数型言語でなくても、そういうスタイルのプログラミングはできるし、本書でも、Pythonで関数型言語のスタイルで書く記事があります。
これは、RubyやJavaでもできます。C++にもそういうライブラリがあるし。
Java 8のストリームとコレクションなんかは、まさに、関数型のいいところを使って並列・並行処理ができるようになってますね。
Scalaは、最初から、関数型とオブジェクト指向のいいとこ取りをやってます。
関連:
http://iiyu.asablo.jp/blog/2016/03/23/8055737
はじめてのLisp関数型プログラミング――ラムダ計算からリファクタリングまで一気にわかる
http://iiyu.asablo.jp/blog/2016/02/15/8018864
「Scalaパズル 36の罠から学ぶベストプラクティス」、「関数型オブジェクト指向AI プログラミング―Scala による人工知能の実装」
http://iiyu.asablo.jp/blog/2015/03/29/7600131
Scala関数型デザイン&プログラミング、Effective Perl 第2版
http://iiyu.asablo.jp/blog/2013/11/13/7053738
「Clojureによる、初めての関数型プログラミング」ほか、新世代LispのClojureネタ
http://iiyu.asablo.jp/blog/2012/10/31/6618253
WEB+DB PRESS Vol.67、Jenkins, 関数型プログラミング
http://iiyu.asablo.jp/blog/2013/08/04/6934387
関数型言語の解説書目録、Functional Programming Bibliography
---
最近、Lisp, 関数型プログラミング、Prologなどの本のお買い上げや、本の出版がいろいろあって、勝手に盛り上がっているという話を何度か書いたけど、まとめる時間がないので、小出しにする。これもその1つ。
お買い上げありがとうございます。
Lispから始まってるから、偉い!と思って、私も買って読みました。
PHPプログラマがScalaを習得するまでの話とか、Scalaにそんな言語仕様あったんだと思うことがあった。ScalaでCAS-UBという電子書籍の出版システムを書いたのは、もう6, 7年前ですからね。復習にもなりました。
http://www.amazon.co.jp/exec/obidos/ASIN/B00XVN1OSU/showshotcorne-22/
ソフトウェアデザイン 2015年 08 月号 [雑誌] 雑誌 – 2015/7/18
技術評論社にある紹介。目次もあります。
http://gihyo.jp/magazine/SD/archive/2015/201508
ソフトウェアデザイン 2015年8月号
なぜ関数型プログラミングは難しいのか?
Lisp,Scala,Haskell,Elixir,Python,Clojure,関数型のエッセンスを学習する
関数型言語を難しく感じるのは、手続き型、命令型の言語からは、発想の転換が必要だからでしょう。
関数型は、変数に、一度代入したら(値を束縛したら)、変更不可能(Scalaみたいに例外的に許す場合もある)。変数が変更不可能で、どうやってプログラムを書くんだと思うかもしれないが、むしろ、きれいに書けるんですよね。
関数型では、forやwhileといった、ループは書かないのが普通。ループなしでどうやってプログラムを書くんだと思うかもしれないが、むしろ、きれいに書けるんですよね。
データのストリームに次々と処理を当てはめる感じで、いわゆるコマンドチェーンのスタイルになる。
イメージとしては、工場の流れ作業です。
ベルトコンベアで流れている材料が、まず、きれいにカットされて、それが加熱されて、ああだこうだと色々と処理されて、最後は、パッケージに入れられて、商品になる。
ああいう感じがつかめれば、関数型言語は、ほぼ手中にできています。
別に関数型言語でなくても、そういうスタイルのプログラミングはできるし、本書でも、Pythonで関数型言語のスタイルで書く記事があります。
これは、RubyやJavaでもできます。C++にもそういうライブラリがあるし。
Java 8のストリームとコレクションなんかは、まさに、関数型のいいところを使って並列・並行処理ができるようになってますね。
Scalaは、最初から、関数型とオブジェクト指向のいいとこ取りをやってます。
関連:
http://iiyu.asablo.jp/blog/2016/03/23/8055737
はじめてのLisp関数型プログラミング――ラムダ計算からリファクタリングまで一気にわかる
http://iiyu.asablo.jp/blog/2016/02/15/8018864
「Scalaパズル 36の罠から学ぶベストプラクティス」、「関数型オブジェクト指向AI プログラミング―Scala による人工知能の実装」
http://iiyu.asablo.jp/blog/2015/03/29/7600131
Scala関数型デザイン&プログラミング、Effective Perl 第2版
http://iiyu.asablo.jp/blog/2013/11/13/7053738
「Clojureによる、初めての関数型プログラミング」ほか、新世代LispのClojureネタ
http://iiyu.asablo.jp/blog/2012/10/31/6618253
WEB+DB PRESS Vol.67、Jenkins, 関数型プログラミング
http://iiyu.asablo.jp/blog/2013/08/04/6934387
関数型言語の解説書目録、Functional Programming Bibliography
コメント
トラックバック
_ ホットコーナー - 2016年04月08日 10時30分17秒
ASAHIネット(http://asahi-net.jp )のjouwa/salonから。
---
アンテナハウスの新人から、C++の入門書は何がいいかという質問があったので、ざっくり調べてみた。
初心者だけでなく、C++を実
---
アンテナハウスの新人から、C++の入門書は何がいいかという質問があったので、ざっくり調べてみた。
初心者だけでなく、C++を実
_ ホットコーナー - 2016年12月30日 10時54分52秒
ASAHIネット(http://asahi-net.jp )のjouwa/salonから。
---
JavaScriptで関数型プログラミングをやる本が出ていた。しかも洋書の翻訳ではなく、日本で書いたもの。
目次と索引をみたら、非常
---
JavaScriptで関数型プログラミングをやる本が出ていた。しかも洋書の翻訳ではなく、日本で書いたもの。
目次と索引をみたら、非常
コメントをどうぞ
※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。
※なお、送られたコメントはブログの管理者が確認するまで公開されません。
※投稿には管理者が設定した質問に答える必要があります。