プログラミングを学習するということ

脳内コンパイラを育む作業

 思考実験内での動作をコンパイラの動作に近づけていく作業

 推論 → 実行 → フィードバック → 
- 実行結果が正しい場合:推論が正しいことにする(間違っているかもしれないが)
- 実行結果が異なる場合:脳内思考回路の修正。どうしてそうなったか考える

良いプログラムとは何か?

 プログラム言語には人間の感覚が入り込む余地があり、そこには文学的な側面が生まれる。日本語の文章に正解が無いように、プログラムコードにも正解は無い。
 ただ、良い日本語文章というのが存在するように、プログラムコードにもそのようなものは存在する。

 良いとされているものの特徴を列挙する。

  • シンプル
  • 意図がわかる
  • 程よく抽象化されている
  • 表現に一貫性がある
  • (直感的に)読みやすい。整理されている。 日本語で言うと、句読点の使い方や改行の使い方

 感動的な日本語の文章があるように、感動的なプログラムコードも存在する。どんなにすごい人も、最初は誰かの真似をして上達してきたという事実がある。上達の近道は良いとされる文章・コードを読み、真似てみること。真似たことは小さい単位でパーツとなって自分のものになる(はず)。
 そうすると、小さいものを組み合わせて大きなものを作り上げることができるようになる。(1からセーターを編むことを想像するといいかもしれない。)

変化に対応できる力

 上記の文章では、プログラムを書けば書くほど上達するように見えるし、それはある意味では正しい。(特に初期段階では書けば書くほど上達する。)ただ、現実ではお年の召された方ほどプログラミングスキルが高いということは無い。むしろ、ある1つのことには強いが、他のことに応用できなかったり、新しい技術についていけなくなるといった傾向が生まれてくる。本当に良いプログラマに年齢は関係ない。ただ、日頃からの情報収集(アンテナ・トレンド)や作業効率を高める工夫(開発環境・エディタ)といった部分でもかなりの差が出てくると思われる。