<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>きのこる庭 &#187; 書評</title>
	<atom:link href="http://kinokoru.jp/archives/category/%e6%9b%b8%e8%a9%95/feed" rel="self" type="application/rss+xml" />
	<link>http://kinokoru.jp</link>
	<description></description>
	<lastBuildDate>Wed, 09 Jan 2019 03:18:33 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.2</generator>
		<item>
		<title>LispでAIやらWebサーバ構築やら一通り体験できる本『Land of Lisp』書評</title>
		<link>http://kinokoru.jp/archives/828</link>
		<comments>http://kinokoru.jp/archives/828#comments</comments>
		<pubDate>Mon, 15 Sep 2014 09:37:04 +0000</pubDate>
		<dc:creator>Nisei Kimura</dc:creator>
				<category><![CDATA[書評]]></category>
		<category><![CDATA[CommonLisp]]></category>
		<category><![CDATA[Land of Lisp]]></category>
		<category><![CDATA[Lisp]]></category>

		<guid isPermaLink="false">http://kinokoru.jp/?p=828</guid>
		<description><![CDATA[<p>どんな本？ 総評するとLand of Lispでは、Common Lispで 対話型コマンドラインのゲームをつくったり Webサーバを立てたり SVGの描画をしたり AIプログラミングをしたり DSLをつくったり 一通り [...]</p>
<p>The post <a rel="nofollow" href="http://kinokoru.jp/archives/828">LispでAIやらWebサーバ構築やら一通り体験できる本『Land of Lisp』書評</a> appeared first on <a rel="nofollow" href="http://kinokoru.jp">きのこる庭</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p><a href="http://kinokoru.jp/wp-content/uploads/2014/09/83d5cc18da95c4bddd6c25900ca3fd71.png"><img src="http://kinokoru.jp/wp-content/uploads/2014/09/83d5cc18da95c4bddd6c25900ca3fd71.png" alt="スクリーンショット 2014-09-15 17.42.08" width="883" height="450" class="aligncenter size-full wp-image-829" /></a></p>
<h2>どんな本？</h2>
<p>総評するとLand of Lispでは、Common Lispで 対話型コマンドラインのゲームをつくったり Webサーバを立てたり SVGの描画をしたり AIプログラミングをしたり DSLをつくったり 一通り遊べる。かと言って敷居が高いかというとそんなことは無くて Lisp初めてな人でも取っ付きやすいように丁寧な解説がある。ページ数は多いけど、割とサクサク進められる(一部 難しい部分もある。特にAIプログラミングのあたりとかは比較的規模が大きい)。<br />
<span id="more-828"></span></p>
<h2>完了までの期間</h2>
<p>3週間程度。平日は帰社後に2時間ほど、毎週土日は3〜4時間ほどでできる分量だった。<br />
結構仕事が忙しい時期で手がつけられない日もあったので、人によってはもう少し早く終わるかもしれない。</p>
<h2>学んだこと・感じたこと</h2>
<p><strong>1. 「Lispがすごい理由の一つはマクロである」と言われる由縁がわかった。</strong><br />
正直これが一番大きな学びだったと思う。<br />
17章「ドメイン特化言語」で実際にLispコードを別言語に変換する様は本当にすごいと思ったし、将来性を感じた。<br />
( 因みに誤解の無いように述べると「マクロは使うべきではない」という人もいるし、マクロだけがLispの素晴らしさではない )</p>
<p><strong>2. Common Lispの文法がそこそこ身に付いた。</strong><br />
Schemeから来たし、SICPで最低限の文法を身につけた程度なので最初は似たような手続きが多くて苦労した。<br />
とはいえ終わる頃にはCLでの書き方とかそれなりにわかるようになった。</p>
<p><strong>3. 関数プログラミングの「不浄な部分」「聖なる部分」 </strong><br />
Common Lispでの関数プログラミングにおいて、副作用を認める「不浄な部分」と関数的に書く「聖なる部分」に分けてプログラムを組んで行くっていう考え方は面白かったし、しっくりきた。</p>
<h2>Land of Lispを学ぶ上で知っておくと助けになると感じた部分</h2>
<p>・HTML<br />
・AIプログラミング<br />
(アルファベータ法、ミニマックスアルゴリズム、ヒューリスティクス等)<br />
・対話型プログラミング<br />
・SVG<br />
・遅延評価<br />
・末尾最適化<br />
・Lispによる再帰</p>
<p>遅延評価とか末尾最適化とかLispによる再帰とかはSICPで嫌という程出てきたから割とすんなりと落とし込めた。<br />
HTMLとかSVGの最低限の構造を知っておくと、は17章の「ドメイン特化言語」の章で マクロを使ってDSLを表現する際 その威力に感動するだろう。<br />
ちょっと踏み込んだSVGに慣れておくと、19章あたりでSVGを利用したWebインタフェースを組む時にコードの理解が容易になるかもしれない。<br />
対話型プログラミング、AIプログラミング独特の書き方があるので、馴染みがないと苦労するかも。</p>
<h2>次にすること</h2>
<p>・「Lispを別言語に変換するマクロを作って 業務でお咎め無くLispを好き放題使えるようにしたい」と思うようになったけど、銀の弾丸臭がするので 引き続きマクロに慣れ親しんでいきたい。<br />
・残る積読本は「<strong>実践CommonLisp</strong>」「<strong>On Lisp</strong>」。次は「実践CommonLisp」。<br />
・10月に関数型言語全般の比較的大きなイベントがあるみたいなので 圏論とモナドを理解する為にもしかすると先にHaskell本を一冊やるかもしれない。<br />
・↑を片付けたら「<strong>Let over Lambda</strong>」「<strong>実用CommonLisp</strong>」のいずれかを購入予定。</p>
<iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=2066-7997-4643&o=9&p=8&l=as1&asins=4873115876&fc1=000000&IS2=1&lt1=_blank&m=amazon&lc1=0000FF&bc1=000000&bg1=FFFFFF&f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>
<p>The post <a rel="nofollow" href="http://kinokoru.jp/archives/828">LispでAIやらWebサーバ構築やら一通り体験できる本『Land of Lisp』書評</a> appeared first on <a rel="nofollow" href="http://kinokoru.jp">きのこる庭</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://kinokoru.jp/archives/828/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>『計算機プログラムの構造と解釈』(SICP)を読み終えて</title>
		<link>http://kinokoru.jp/archives/794</link>
		<comments>http://kinokoru.jp/archives/794#comments</comments>
		<pubDate>Wed, 20 Aug 2014 05:17:50 +0000</pubDate>
		<dc:creator>Nisei Kimura</dc:creator>
				<category><![CDATA[書評]]></category>
		<category><![CDATA[SICP]]></category>

		<guid isPermaLink="false">http://kinokoru.jp/?p=794</guid>
		<description><![CDATA[<p>ようやくSICPが終わった。念願の夢の1つを叶えた。「ポインタを理解する」「コンパイラをつくる」とかから始まり 今年に入って 技術者として個人的にやりたかった事を3つ実現できた。良い調子。 サムネは記念にマッカーシー先生 [...]</p>
<p>The post <a rel="nofollow" href="http://kinokoru.jp/archives/794">『計算機プログラムの構造と解釈』(SICP)を読み終えて</a> appeared first on <a rel="nofollow" href="http://kinokoru.jp">きのこる庭</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p>ようやくSICPが終わった。念願の夢の1つを叶えた。「ポインタを理解する」「コンパイラをつくる」とかから始まり 今年に入って 技術者として個人的にやりたかった事を3つ実現できた。良い調子。<br />
サムネは記念にマッカーシー先生(再使用が許可された画像)。</p>
<p><a href="http://kinokoru.jp/wp-content/uploads/2014/08/jmc.png"><img class="aligncenter size-full wp-image-802" alt="jmc" src="http://kinokoru.jp/wp-content/uploads/2014/08/jmc.png" width="514" height="343" /></a></p>
<p><span id="more-794"></span></p>
<h2>完了までの期間</h2>
<p>3.5ヵ月程度。平日は帰社後に2～3時間ほど、毎週土日はSICPに費やした。</p>
<h2>学んだこと・できるようになったこと</h2>
<p><strong>1. より抽象的に物事の仕組みが考えられるようになった。</strong><br />
(「言語」という制約されたドメインを取っ払って純粋に実装について考えられるようになった)<br />
<strong>2. 再帰のコードは悩まなくてもスンナリ頭に入るようになった。</strong><br />
<strong>3. Eval &amp; Apply の陰陽によるプログラムの成り立ちを理解した。</strong></p>
<p><strong>4. 数学・コンピュータ科学に関する以下のことが人に説明できる程度には身についた。</strong><br />
- Newton法<br />
- エラトステネスの篩<br />
- パスカルの三角形<br />
- 不動点探索<br />
- ユークリッド互除法<br />
- 二分木<br />
- モンテカルロ法<br />
- データ主導プログラミング<br />
- メッセージパッシング<br />
- フレーム<br />
- セマフォ<br />
- Huffman符号化木<br />
- 非決定性計算<br />
- 並列処理<br />
- ストリーム<br />
etc&#8230;</p>
<p><strong>5. 関数プログラミングに可能性を感じた。</strong><br />
- apply, map, filter の絶大な威力に戦慄した。<br />
- 無限ストリームに戦慄した。<br />
※ 特に Huffman符号化木がモールス信号とか実用で採用されている点に関しては結構感銘を受けたのと同時に、アカデミックな分野がまだまだ現実世界に応用できる可能性を秘めていると確信した。</p>
<p><strong>6. 集中力が養われた。<br />
7. 昔難しいと思っていた本が割とすんなり読めるようになった。<br />
8. (´・ω・`)がLispの構文のようなものに見えるようになった。<br />
9. 「スマフォ」という単語を見ると「セマフォ」を思い浮かべるようになった。<br />
10. 「エラトステネス」のtypoがなくなった。<br />
11. 括弧が無意識の世界に消え去った。<br />
12. Lispの闇の扉が開いた。<br />
13. lambda<br />
14. λ<br />
15. 神はLispで世界をおつくりになられた<br />
</strong></p>
<h2>大変だったこと・不安だったこと</h2>
<p>1. 問題を一つ解くのに相当時間がかかることもあったので常に頭を悩ませていた。<br />
2. 毎晩遅くまでパソコンに向かって勉強していたので日中眠気に襲われることがしばしば。<br />
3. 周囲がAnsibleとかDockerの話をしている中で自分だけ古典をやっていたので 最新技術のアウトプットが遅れるのが心配だった。<br />
とはいえ、いつまでも「SICPやりたい」という思いが頭の片隅に残っている状態だけは避けたかったので集中的に時間を設けてさっさと終わらせた方がよいだろうと思って終わらせた。</p>
<h2>実際に終えてみた感想</h2>
<p>正直一周するだけでは勿体無い本だと感じた。スルメ本(なんだそりゃ)。<br />
特に4章以降、内容が面白いのにデバッグが中途半端で理解度が曖昧な部分が出てしまったので、これからSICPを始める方にオススメすることは、とにかくデバッグ環境の再現は面倒でも必ずやった方が良いということ。特に4章以降に関してはデバッグがあってこそ理解が深まるし 楽しいし、何より5章への繋ぎになる(逆に4章の理解が曖昧だと5章で地獄を見る)。</p>
<h2>SICPは人生を変える本だったか</h2>
<p>まだやり終えたばかりだから何ともいえないし、そもそも元々文系寄りの自分が中途半端な理解度でSICPに言及しても良いのかわからない。<br />
ただ、感じた点を3点挙げると以下の通り(飽くまでも主観論)。</p>
<p><strong>1. 技術に対する興味の範囲(個人的に未開拓の部分)は明らかに広がった。</strong><br />
SICPを続けていくうちにLispのごく一部に触れるわけだけど、そのうちLispを取り巻くマクロの世界に憧れを抱き始めるようになった(なお、SICP自体にはマクロの話は出てこない)。その思いはSICPを解き進めていくうちにどんどん強くなっていって、SICPを終えた後はもっとLispを深めたいと思う程になった。SICPはLispの本ではないけれど、それ程までにLispは魅力的だった(初心者の自分から見ても)。</p>
<p><strong>2. アカデミックな視野がちょっと広がった</strong><br />
膨大な学問の世界のごくごく一部とはいえ、コンピュータサイエンスに関する知見は確実に広がったし、先人が生み出した素晴らしい抽象化されたモデルは今後の自分の発想を支える糧になると思う(二分木がHuffman符号化木に、Huffman符号化木がモールス信号のモデルに変貌を遂げたように 現実の状況に応じて姿を変えて)。<br />
アウトプットが重視されている現代においても、個人的に 本質的な革新を支える要素として学術的なモデルに依存する所は物凄く大きいと考えている(今「イケてる」なんて言われている技術が実は1980年代の学術論文に書かれていた なんて話もチラッと聞いたことがある)。</p>
<p><strong>3. 日頃「抽象のモデル」を無意識で組み立てる習慣がついた</strong><br />
これは上記の「学んだこと・できるようになったこと」の1番と若干被るけれど、ある事実がどのように構造化されているのか、どのように抽象化・具体化しうるのか。抽象の概念は学術的なモデル、システムを超えてコミュニケーション、日常生活にも活きてくる(…と信じたい)。</p>
<h2>次にすること</h2>
<p>Lispと関数型言語にすっかり魅せられてしまった、ということで既に以下の三冊を購入済み。<br />
(僕のようにLispも関数型言語も初心者な人間がSICPをやっていると少なからずこのように闇に引き込まれると思う)<br />
次のアクションは年内に以下の三冊を終了させる。</p>
<p><strong>・Land of Lisp<br />
・実践Common Lisp<br />
・On Lisp</strong></p>
<p>Lispに関しては時間があれば<strong>Let over Lambda</strong>, <strong>実用Common Lisp</strong>もトライしたい。</p>
<p>んでもってLispを散々遊びつくした後はHaskellかClojureをいじるんだ。<br />
Schemeやった後の感想として、なんか直感的に見やすいのはClojureだけど モナドやら圏論やら面白そうな話題が飛び交っている Haskell をいじることになりそう。</p>
<p>…と、ここまで来るとなんだかインプットに寄りすぎな感じがするので、今年度 上記を一通りいじった後は 実際に上記のツールを交えて 習慣的にアイデアを発想しながら形にしていくことを中心に動いていこうと思ってる。</p>
<h2>最後に</h2>
<p>正直僕一人だけだったら確実に挫折していました。<br />
読書会で志を共にした皆さん、先にSICPを学ばれてブログに解説を書かれていた方々、SICPを通して様々な考察と問題を投げかけてくれたBen Bitdiddleさん、Louis Reasonerさん、Eva Lu Atorさん、Alissa P Hackerさん 他たくさんの方々に感謝。</p>
<h2>リンク</h2>
<p><strong>・SICP難易度リスト</strong></p>
<p>ものすごく主観的ですが以下に難易度リストをまとめました。</p>
<p><a href="http://kinokoru.jp/archives/584" target="blank">第1章 難易度リスト</a><br />
<a href="http://kinokoru.jp/archives/577" target="blank">第2章 難易度リスト</a><br />
<a href="http://kinokoru.jp/archives/625" target="blank">第3章 難易度リスト</a><br />
<a href="http://kinokoru.jp/archives/711" target="blank">第4章 難易度リスト</a><br />
<a href="http://kinokoru.jp/archives/768" target="blank">第5章 難易度リスト</a></p>
<p><strong>・SICP学習事項まとめ</strong></p>
<p><a href="http://kinokoru.jp/archives/572" target="blank">第1章に関するまとめ</a><br />
<a href="http://kinokoru.jp/archives/628" target="blank">第2章に関するまとめ</a></p>
<iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=2066-7997-4643&o=9&p=8&l=as1&asins=4798135984&fc1=000000&IS2=1&lt1=_blank&m=amazon&lc1=0000FF&bc1=000000&bg1=FFFFFF&f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>
<p>The post <a rel="nofollow" href="http://kinokoru.jp/archives/794">『計算機プログラムの構造と解釈』(SICP)を読み終えて</a> appeared first on <a rel="nofollow" href="http://kinokoru.jp">きのこる庭</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://kinokoru.jp/archives/794/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
