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。
つまり、関数型プログラミングで(というか一般のプログラミングでも)重要な「状態を持っていいのは原則として環境だけで、ユーザーが勝手に変更できる状態は悪である」という原則が知らず知らずのうちに身につくようになっています。このあたりを読んでいた当時、この流れは本当にしびれました。