SICPについての私のtwitterの発言の補足

SICPの1章は2章の準備であり、2章は3章の準備であり、3章は4章の準備であり、4章前半のメタサーキュラーインタープリタSICPのすべて。4章後半の論理型プログラミングと5章は応用あるいは補足

yadokarielectric on Twitter: "SICPの1章は2章の準備であり、2章は3章の準備であり、3章は4章の準備であり、4章前半のメタサーキュラーインタープリタがSICPのすべて。4章後半の論理型プログラミングと5章は応用あるいは補足"

だから4章前半だけを読めば十分なんだけど、その基礎知識がないひとは1章から3章も読まないときつい、というだけ

yadokarielectric on Twitter: "だから4章前半だけを読めば十分なんだけど、その基礎知識がないひとは1章から3章も読まないときつい、というだけ"

どう見ても言い過ぎです。本当にあ(ry


というか、メタサーキュラ・インタープリタSICPの中でも重要なコンテンツであるのは事実ですが、それは一つの見方に過ぎません。

2章や3章で挫折したのでは意味がないのか。

結論から言うと、決してそんなことはないです。SICPはいろんな読み方ができる本です。その一つが「関数型プログラミングの初級トレーニング本」という読み方です。
SICPの1章や2章では、読者は変数を書き換える「set!」を使うことを許されず、純粋関数型でのプログラミングを強いられます。set!が使えるようになるのは3章からですが、読者が状態を自分で扱うことを「必要悪」だと感じるような書き方がなされています(本当のプログラミング初心者がSICPを読んではいけない三つの理由 - ヤドカリデンキ商会(第一倉庫)の理由1を参照)*1
つまり、関数型プログラミングで(というか一般のプログラミングでも)重要な「状態を持っていいのは原則として環境だけで、ユーザーが勝手に変更できる状態は悪である」という原則が知らず知らずのうちに身につくようになっています。このあたりを読んでいた当時、この流れは本当にしびれました。

*1:ちなみに、あのエントリのタイトルである「本当のプログラミング初心者がSICPを読んではいけない」というのは反語であって、本当に言いたかったのは「初心者こそSICPを読むべき」ということでした。わかりにくいエントリですいません