学び方。

最近ぜんぜん勉強らしいことをしていない。
というわけで学び方について考えてみた。


世の中にはいろいろな学習方法があるが今のところ万能解は無い。
かといってありきたりな方法ではありきたりな結果しかでないことは明白だ。
そこで歴史的にある程度の実績を持っていてかなりの成果を挙げているものについて注目してみる。
将棋、そろばん、などである。


そこから考えたこと、

  1. まずは簡単なものから少しずつ難しくしていく。→ありきたり、時間かかる、頭打ちになることも。
  2. 基本を覚える。ルール、駒の動きなど。 →覚えてないと困る。きちんと把握すべき。
  3. 基本パターンを覚える。 振り飛車など。 →これも覚えて無いと方針が立てられない。
  4. 定石(囲碁用語だけど)を覚える。 詰め将棋。 →これがかなり重要だと思われる。
  5. 鍛える。強い人と対戦する。 →そこから多くのことを学び取る。
  6. 自分の行動、成果を記憶する。 →反省点などを探す。
  7. 他の人のものを記憶する。名人戦の対局など。 →こういうところからも学び取る。
  8. イメージとして完全に頭の中だけでシミュレートする。→更なる高みへ。

ここで書いた、覚える、記憶する、というのはなんとなくというレベルではない。
将棋の名人は板を必要としないくらいはっきりと完全に記憶しているわけである。
これをプログラミングに当てはめてみよう。

  1. 一般的な方法。本を読んだり講義を受けたり。
  2. 文法、構文を覚える。 →これが案外軽視されているみたい。バグの元。
  3. 基本tips オブジェクト指向 など →これもしっかりと覚えておきたい。特にtips
  4. 応用tips 最適化技法とか。 →こういう情報があまりまとまってないような。
  5. 格上の人のソースと自分のソースを比較する。→手間隙惜しまずやってみる。
  6. 自分のソース、履歴などを覚える。→コメントとかに頼り過ぎない。
  7. 有名なソースとかは覚える。
  8. 頭の中でソースを完結させてから書き出す。→目指せ完全ソース。

問題は将棋が歴史的に鍛えられてきたことに対してプログラム言語等はまだ発展段階にあるということだ。
また、技術上の制約等から複雑なルールになっている言語もある。
そういう観点から言えば最近できたC#とかD言語、逆にシンプルなアセンブラがいいかもしれない。