SICP 第2章に関するまとめ

images

1章まとめはこちら

SICPの第2章を学ぶ上で必要になるもの

・基本的に1章と同じで忍耐力。1章では「どうあがいても絶対にできない」というような絶望的な問題が存在しなかったけれど、2章では色々な事情で問題を解くのに手間がかかるものが多くなっている( このあたりから問題一つ解く際のデバッグに工夫が必要になってくる )。2章を通してちょいちょい出てくる記号微分あたりが割と鬼。

・集合の基礎知識(和集合とか共通集合とかそれくらい)、微分の基礎知識、行列の基礎知識。

SICPの第2章で得られるもの・メリット

関数型プログラミングの考え方とその威力を知る事になる。個人的にこのメリットは相当デカいと思ってる。accumulation, filter, map あたり、特に filter と map は抽象の設計次第で絶大な威力を発揮する。この辺りは実用におけるプログラミングにも活きてくる。

・そのmapの絶大さゆえに map厨になる

・関数型プログラミングの可能性とLISPの自由度が相まって LISP闇の世界への闇が開かれる。Common Lisp とか Haskell とか Clojure とかもいじりたくなってくる。Github上でClojureで書かれたアプリケーションのコードを見つけると何とも言えない喜びに満ちあふれる。周囲に関数型プログラミングを布教し始める (こんな事偉そうに言ってるけど僕はまだLISPも関数プログラミングも始めたばっかの超初心者です)

木構造の素晴らしさに対する理解が深まる。ただ計算量をセーブするだけじゃなくて、Huffman符号木での暗号化がモールス信号とか実世界のものに使用されていたり 色々感動する。

データ主導プログラミングパッケージング汎用演算について理解が深まる。またそのメリットやデメリットを身を以て体感することになる。

型実装とか強制型変換とか実際のプログラミング言語の実装に通じる話題も勉強になる。

第三章に行ける!!!!!!!!

割と実用に活き始めている。

SICPの第2章 理解度チェック

・選択子、構成子、抽象の壁について説明できるか。

・cons, list の違いを理解しているか。

・対 や リスト構造を car, cdr, cadr, caddr 等 を使用することで自由に展開できるか。

・対やリスト構造に対して 適切に再帰を組んで処理ができるか。

・accumulation, map, filter の威力と可能性に神秘を感じるか(真顔)。

・記号データの作り方、比較の仕方、記号データから成るリストの作り方を理解しているか。

・パッケージの概念を用いて複数のデータ表現を共存させる方法を理解しているか。

・汎用演算の実装方法を理解しているか。

・汎用演算、データ主導、メッセージパッシングのメリット・デメリットをそれぞれ説明できるか(Ex2.76)。

・型変換を導入した演算の実装ができるか(例: 複素数と整数)。

Written by Nisei Kimura ( 木村 仁星 )

- Sponsored Links -

<<

Top

>>