SICP 読了
計算機プログラムの構造と解釈(以下SICP)を読み切りました。 2022年9月22日から2023年4月30日まで、157日間かかりました。
10年前は途中で挫折したけど、今ならやりきれると思って重い腰を上げた。無理せず1日1Pを目処にして、2~3年掛かっていいから継続してやり切る事を目標に。
— 伊織@S式GPT-0.3相当 (@kakkokka) 2022年9月21日
次回は`1.1.5 手続き作用の置き換えモデル`から
7P/366P#iori_sicp pic.twitter.com/yM9VRJARZP
読み終わりましたが「やりきった」「理解しきった」とは、口が裂けても言えません。 全体の難しさや濃淡を考えなかった場合、なんとか70%くらいの理解度だと思います(章や節の難易度や濃さを考慮すると40%くらい...?).
けどpassした問題もありますが、結構ちゃんとガッツリ問題は解きました。
1. SICPと私
1.1 12年前
SICPは自分にとって特別な書籍です。 25歳の頃に一度勉強会形式でチャレンジしたものの、全く付いて行けずに当時の自分がいかに知識も技術もないのか教えてくれて感謝しています。
実は「自分は一生かかってもSICPを読み切る事が出来ないのではないか」と思っていました。 それは地頭的な意味合いで、自分にはこれを理解したり解いたりするのは無理なのではないか?と。
1.1.1 SICPへの信仰
SICPにはそういった、ある種の畏敬の念を抱いていました。 それは大自然への信仰にも近い想いや思想と言えます(SICPは海というよりは山だと思うので山岳信仰に近いと思います(???))。
LISP を勉強しておきたいのは、別の理由からです――それをモノにしたときにすばらしい悟り体験が得られるのです。この体験は、その後の人生でよりよいプログラマーとなる手助けとなるはずです。たとえ、実際には LISP そのものをあまり使わなくても。
1.2 12年後
しかしあれから12年、久しぶりにSICPを手に取り、ざっとななめ読みしてみると今なら行ける気がしました。 あのSICPを自分が(完璧じゃなくても)最後まで読めるかもしれない...
完璧な理解は求めない(2週目3週目で少しずつ理解度を上げる) 無理せず1日1P,1問を目処に継続してやり切る事が目標
この2つを指針にやり始め、遂に157日かけて読み切りました.
大切なことなので2回目になりますが、「やりきった」「理解しきった」とは、口が裂けても言えません。
2. 感想
2.1 良かった点
2.1.1 (not 技術の話)
まずは技術的な点よりも最終章である5章辺りに入って終わりが見えてきてから、「あのSICPをここまで読んだ」という自信がついた事でしょうか。
この辺りからSICPと同時進行で英語を勉強し始め、昔に挫折したギターをやり始めました。
「あのSICPを5章まで来たんだから、SICPは中学英語より500倍(雑)難しいんだからやれるやろ」 「ギター弾けるようになる割合よりも、SICP挫折する割合の方が高い。今の俺ならギターだって弾けるようになる」
という謎の自信がつきました。
後は「無理せず1日1P,1問を目処に継続してやり切る事が目標」というのが良かったです。 これは英語やギターにも役立っています。
技術書はその時期の気分で読んだり読まなかったりしていましたが、引き続き毎日技術書をやっていこうと思います。
2.1.2 (eq 技術の話)
lispそのものや再帰等々、いわゆるSICPで最初に躓きがちな辺りは以前やってたので特に問題なかったです。
ポインタ、環境とフレーム、この辺りは理解が浅かったので勉強していて凄い楽しかったです。 後はストリーム、これは自分的に凄い良かったです。 実務でも役に立ちまくっています。
あとはやはり4章と5章は勉強になりました。 理解は浅い自覚がありますが...
特に5章はもう一度やりなおしたいな。
2.2 良くなかった点
章の途中の問題、これが「まだ動かせないけどこの様に修正せよ」というのが多くて辛かった... 今までやってきた技術書でこの形式は初めてだったと思います。
途中からググって、過去の先人が残したプログラムを持ってきて問題のソースコードを動かせるようにして問題を解きました。 が、これ本当ならそれが出来ない状態で頭の中で考えてやるんですよね? 凄すぎでしょう...
3. SICPと私の今後について
4章から理解度が急激に浅くなっています。
難しさよりも100日を超えた辺りからの「飽き」が原因です。 ここで辞めたら二度と再開しない気がする、と思って気合で読みましたが途中からもう飽きてきていて...
それでも通しで読めたのは大きかったです。 また気分が向いたら本を開いて「あーここ理解浅いからやろう」みたいにやっていきたいと思います。
今はそんな気になれませんが、更に気が向いたらまた通読してみる事もあるかもしれません。
4. 最後に
教育者, 将軍,栄養士, 心理学者, 親はプログラムする。軍隊, 学生, 一部の社会はプログラムされる.