クロージャやラムダ式を理解していない組込エンジニアが関数型言語を理解するチャレンジングな4冊(+6冊+α)
手続き型言語を主なフィールドとして頑張ってきた組み込みエンジニアが関数型言語に興味を持ったので相談したら以下の4冊(+6冊)の本を薦められました。順次読んでいきます。多分にチョイスが偏ってます(ので、随時補正を取り込んで下に追記してます。初出は6冊だったのですが現時点で10冊。お好みでどうぞ。一部はWebで公開されていると教えていただいたのでリンクを足しておきました。一夜明けて、さらに参考文献が沢山きたので追記しました)。
ただ全ての本を連続的に読むことでタイトルのように関数型言語がわかった!みたいな意味を成すかはわかりません(しばらくまって結果を見たほうが参考になるはずです)。1冊か章の区切りかでまとめていくので一緒に読んでくれたりお勧めの本を教えてくれたり、誤った理解をなおしてくれると更に喜びます。とりあえず全部買ったので今からスタートです
(追記:関数型言語、という入り口から入るなら「プログラミングの基礎」という本記事の最後のほうで紹介している書籍が評判良いです、あとブログを書いている本人はクロージャやラムダ式を理解したほうが便利そうだ、という入り口で本を選んでもらってますので全ての関数型がこの偏ったチョイスで語れると思うなよ!という気配はたくさんしてます。より純粋に関数型言語を学びたいならこっちがいいよ、みたいな感じで色々おすすめを教えてもらえると嬉しい感じです)。
なおこういう本は本人の知識ベースに依存するところが多いように感じてますので
チャレンジャーの背景のほうも大事かな、と。一応明記しておきます。
読む人はプログラマ歴:6年
情報処理系を勉強してて数学の知識はふつうの学生相当(微分積分、線形代数、グラフ理論、統計解析等)。コンピュータサイエンス系は情報理論、データ構造とアルゴリズム、画像工学等。
職業としては組み込みエンジニア。LinuxやRTOSからAndroidプラットフォーム関係にシフト。アプリからデバドラまで経験してますが言語はC/C++、Javaで思いのほか少ない。他の言語も手習い程度には。
そのような背景なので関数型言語に関する知識があまりない。コードコンプリートやEffective Java、デザパタ本とかは読み終わってる。
まず基本的な理解について薦められた本。これはJavaScriptしたことないのにTypeScript触ろうとしたときにクロージャや無名関数の概念が良くわかって無くて「とりあえず理解しやすいやつ」という背景のもとに紹介された。
JavaScript Ninjaの極意 ライブラリ開発のための知識とコーディング (Programmers’ SELECTION)
- 作者: ジョン・レシグ,John Resig,ベア・ビボー,Bear Bibeault,勝亦勇,吉川邦夫
- 出版社/メーカー: 翔泳社
- 発売日: 2013/05/25
- メディア: 大型本
- この商品を含むブログ (7件) を見る
原本はNinjaっつってるのにサムライの絵が描かれてるミラクル。
ラムダ式についていろいろ教えてもらったあと、とりまコレよんどけって投げられた本がこちら。
- 作者: Miran Lipovača,田中英行,村主崇行
- 出版社/メーカー: オーム社
- 発売日: 2012/05/23
- メディア: 単行本(ソフトカバー)
- 購入: 25人 クリック: 580回
- この商品を含むブログ (69件) を見る
すごいH本と呼ぶらしい。この本の前にふつうのHaskellっぽいのを一段挟めとか挟まなくていいとかという議論もあった。ハイセンスなチョイスなのかもしれない。
あとこのあたりのプログラミングとは何だ、みたいなことを考えるのにポールグレアムっていう人の本を読まなきゃダメ(影響を受けたほうがいい)らしい。
- 作者: ポールグレアム,Paul Graham,川合史朗
- 出版社/メーカー: オーム社
- 発売日: 2005/01
- メディア: 単行本
- 購入: 109人 クリック: 4,884回
- この商品を含むブログ (583件) を見る
Web版はこちらから(http://practical-scheme.net/trans/hp-j.html)
そして今回の最終目標はこれ。
- 作者: ポールグレアム,野田開,Paul Graham
- 出版社/メーカー: オーム社
- 発売日: 2007/03
- メディア: 単行本
- 購入: 10人 クリック: 146回
- この商品を含むブログ (128件) を見る
こちらもWeb版がある(http://web.archive.org/web/20061208031140/http://user.ecc.u-tokyo.ac.jp/~t50473/onlisp_j.pdf)
あと言及された本としては以下があるけど難易度高めな感じしかしない。ので今回は読まない予定ではあるが、2冊ある。
- 作者: ジェラルド・ジェイサスマン,ジュリーサスマン,ハロルドエイブルソン,Gerald Jay Sussman,Julie Sussman,Harold Abelson,和田英一
- 出版社/メーカー: ピアソンエデュケーション
- 発売日: 2000/02
- メディア: 単行本
- 購入: 35人 クリック: 1,149回
- この商品を含むブログ (486件) を見る
原著であればWeb版があるらしい(http://mitpress.mit.edu/sicp/full-text/book/book.html)。
- 作者: Benjamin C. Pierce,住井英二郎,遠藤侑介,酒井政裕,今井敬吾,黒木裕介,今井宜洋,才川隆文,今井健男
- 出版社/メーカー: オーム社
- 発売日: 2013/03/26
- メディア: 単行本(ソフトカバー)
- クリック: 68回
- この商品を含むブログ (11件) を見る
さっそく@kisさんから推薦があった本を追記
プログラミングの基礎 (Computer Science Library)
- 作者: 浅井健一
- 出版社/メーカー: サイエンス社
- 発売日: 2007/03
- メディア: 単行本
- 購入: 17人 クリック: 409回
- この商品を含むブログ (126件) を見る
プログラミング言語の基礎概念 (ライブラリ情報学コア・テキスト)
- 作者: 五十嵐淳
- 出版社/メーカー: サイエンス社
- 発売日: 2011/07
- メディア: 単行本
- 購入: 6人 クリック: 60回
- この商品を含むブログ (12件) を見る
- 作者: 萩谷昌己,西崎真也
- 出版社/メーカー: 岩波書店
- 発売日: 2007/06/27
- メディア: 単行本
- 購入: 14人 クリック: 442回
- この商品を含むブログ (36件) を見る
1日経ったらかなりの推薦がきてたので追記します。
そのままOn Lispをよむとかなりの確率で死ぬので、という心優しいひとから
- 作者: 竹内郁雄
- 出版社/メーカー: 翔泳社
- 発売日: 2010/03/10
- メディア: 単行本
- 購入: 31人 クリック: 565回
- この商品を含むブログ (49件) を見る
紹介サイトには「 perl, python, ruby, JavaScript といった「モダンなスクリプト言語」が、実は構文糖衣をかぶったLISPにすぎないことを、利用者は早かれ遅かれ発見する」とまで書かれている気になる一冊
「初めての人のためのLISP」をよんだ後、以下のURLからCommon Lispについてざっくり理解して、On Lispにチャレンジが一番死ににくい登山路の様子。
Practical Common Lisp
http://www.gigamonkeys.com/book/
さらに気になるのであれば以下の本を読むといいらしい。
- 作者: ダグホイト,Doug Hoyte,タイムインターメディアHOPプロジェクト
- 出版社/メーカー: エスアイビーアクセス
- 発売日: 2009/07
- メディア: 単行本
- 購入: 9人 クリック: 73回
- この商品を含むブログ (28件) を見る
あと英語しかないものではこちらの紹介を受けました。
ジョン・バッカスのチューリング賞受賞記念講演論文。
関数型言語が何故必要とされるか、についての理解の手助けとして。
"Can Programming be Liberated from the von Neumann Style?"(プログラミングはフォン・ノイマン的スタイルから解放されるか?)
http://www.stanford.edu/class/cs242/readings/backus.pdf
いっぱんに論文のような原典は初出の概念や考え方を述べるため安易な表現で丁寧に書かれてることが多いので書籍よりも信頼性が高い、という意味だと思ってます。