プログラミングの基礎 読了した

「プログラミングの基礎」を読み終わった。本当に読んでよかったという感想しかでてこない。

本の内容は紹介しても楽しみがなくなってしまうし、自分のような人間が不正確な情報を流通させてもシャーないので「なぜ読んでよかったと思ったのか」を将来の自分へメッセージの意味でも書いていく。

もともと関数型言語的な考え方に触れてみたことがなかったので、初挑戦として OCaml とかよく分からないけど大丈夫かなと心配していたけどそんな心配は杞憂だった。

概要

  1. 覚えることが少ない
  2. デザインレシピなどのお作法
  3. 補足資料が無料でみれる

1. 覚えることが少ない

技術書でよくある構成として下のようなものが多い。少なくとも自分が読んでいるプログラミング言語の解説本とかはこうなっていることが多かった。

  1. 言語の歴史概要
  2. 言語機能、文法などの紹介
  3. 小さめのサンプルプログラム

「プログラミングの基礎」は下のような構成。

  1. 1 章から 16 章まで基本的な文法でサンプルプログラムが完成
  2. 17 章以降でさらに便利な機能などを使ってリファクタリング

何かというとサンプルプログラムの完成まで「覚えること」が少ない。結果的にかなり早い段階で達成感が訪れている。そしてそれにより気持ちにドライブがかかる。

また、覚えることの少なさは結果的に基本的な文法のみの積み上げで理解をできるということにつながっていて、積み上げていく作業それ自体が楽しくなっていく。

サンプルプログラムはサンプルとはいえ「メトロネットワーク(地下鉄)の最短経路を調べる」という一見難しそうと躊躇してしまいそうになるもの。これがスルスルと 16 章まで読み進めて完成したときには素直に感動してしまった。

この感動の余韻をもったままこれを新しい機能や文法でリファクタリングしていく、これ自体すでに理解したプログラミングがどんどんスマートになっていくことで新しい機能への「受け入れ感」を感じながら進められる。「なるほどーそうだよねー。便利だなー」と素直な気持ちで読める。

2. デザインレシピなどのお作法

この本は最初から一貫して「デザインレシピ」という「型」を繰り返すことでプログラミングを書いていく。これは下のようなもので(抜粋)、テストファーストな TDD 的な考え方なども含まれている。

[目的]
作成する関数が何をするものかを考える。

[例]
作成する関数に望まれる入力と出力の例を作成する。これがテストプログラムになる。

[本体]
関数の本体を作成する。

[テスト]
上で作ったテストプログラムを使って確認する。

これをクドいなと思われる程繰り返す。読み進めていく際に感じたのはこのデザインレシピがあるおかげで、私のような雑な仕事をするタイプの「挫折感」が軽減されている。これも先に読み進めるためのドライブ感に一助している。

3. 補足資料が無料でみれる

著者の浅井健一さん(ベンジーかよ!)が無料で解説動画を公開している、これがすこぶる分かりやすい。しかも本の中には解説されないちょっとだけズレた内容で解説をしてくれているので理解が進む。

若干途中で小芝居が入ってたりしておもしろいです。個人的にはかなり楽しみました。本は読んだけど動画は後半まだ観ていないものが数本あるのでまだ楽しみが残っている。もう自分の中ではロックスターだよ。「プログラミグの基礎」はベンジー本と呼んではどうか。

参考