積み読解消に向けて
興味の赴くままに技術書を買い漁っていたら、目次を眺めただけだったり、良くて途中まで読んだ本などが積み上がってしまった。昔はVue.jsやRustなど流行り(?)の技術に手を出して、浅い理解のまま放り出してしまうことが常だったのが原因だろうか。一冊の本を隅から隅まで通読するという読み方ができたと言える本は「プログラミングの基礎 浅井健一」ぐらいしか覚えがない。技術書を買って満足してしまうこの症状、深刻だと思う。
とはいえ、なぜ上記の本は読み通せたのだろうか。プログラミングの基礎はOCamlを使用して、タイトル通りにプログラミングの基礎を初心者に1から解説する本だ。しかも再帰や参照透過性など関数型の概念をバリバリ仕込んでいく。OCamlだから当たり前ではあるが、forやwhileの解説がほぼ出てこない入門書は初めて読んだ。大抵の繰り返しアルゴリズムは再帰で表現できる。そして初めからテストを書くことの重要性が説かれるし、最後には参照透過性の利点と副作用の危険性まで話は及ぶ。
React.js, Jetpack Compose, Swift UIなど宣言的UIは最早スタンダードとなりつつある。その根源にあるのが関数型のパラダイムだ。一括にはいえないだろうが、UIを関数のように扱い参照透過性を保つことでバグを抑制し変更が容易になることを目指していると自分は理解している。デメリットとして再描画の負担が無視できなくなることは有名だが、ライブラリ側の改善で将来的には軽減、あるいは解決しそうな気もする。
大きく話が脱線してしまったが、自分がこの本を読み通せたのは関数型の世界に丁寧に誘ってくれる本だったからだろう。宣言的UIや関数型パラダイムがJavaなどに取り込まれつつある現在、2007年出版のこの本の価値はさらに上昇しているのではないか。
ひと段落したので、とりあえず以下に積んでいるor消化中の本を整理しよう
1
2年前に購入し、前半で終わっている。滅茶苦茶高価。分厚過ぎるが、まとまった時間を取って読破したい。
優先順位 高
2
C言語の原典。先生が話題に出していて気になったので購入。現代からの観点だと癖のある記述もあるようだが、Cの本質を学べるはず。1の副読本。
優先度 高
3
前半のハードウェアの実装を終えたところで終了。アセンブラを書くところで面倒になって投げてしまった。最近9ccを読んでコンパイラ熱が出てきたので再開するかも。
優先度 中
4
アルゴリズムを鍛えるために購入。競技プログラミングをやるモチベーションを出したい...
優先度 中
5
「コンピュータは数学者になれるのか?」を流し読みして論理学に興味がわいたので購入。最近買った。軽妙な語り口が面白く飽きさせない。一番早く読了できそう。ここから徐々にステップアップしていくとTaPLまでの道が開けると聞くがいつになるのか...
以上の本を読み終わるまで新しい技術書は基本的に買わない縛りを導入しよう。そして、流し読みではなく精読することも必須。