- 良い言語があるという噂を聞く
噂を聞いて興味が出ると、暇を見つけて触ってみようという気持ちが起こる。 - 公式サイトを散策する
Getting Started的なものを見たり、リファレンスを探したり。 - 入門サイトを探す
できれば日本語で書かれている簡単なサイトを。なければ仕方なく英語サイトを。 - 環境を用意する
まずはコンパイラとかをダウンロードしたりインストールしたり。 - Hello Worldしてみる
プログラマのたしなみとして。この時点で満足して学習をやめてしまうことも多い。 - IDEを探す
コード補完とかしてくれると嬉しい。良いものがなかった場合はがっかりしながらエディタで書く。 - 基礎的な処理を書いてみる
ループとか、文字列処理とか、ファイル操作とか、そのへん。 - 何か作ってみる
日々の生活で必要と思ったものを書いてみる。もしくは聞きかじった知識から「こういうの作るのに向いてるかな」と思ったことを試してみる。 - うまく作れずにしばらく苦しむ
思ったように書けなかったり、なんか違うなぁと思ったり、既知の言語だったら簡単に書けるのにと思ったりしながら、うだうだする。 - だんだんうまく書けるようになってくる
思いついた処理を悩まずに書けるようになる。ちょっと楽しくなってくる。このあたりで満足して学習をやめてしまうことも多い。 - 厳かな感じのする書籍を読む
この時期になってようやく書籍に手を出す。動物の絵が書いてあるヤツとか、その分野で評判の良いヤツとか。 - 今までたくさんの勘違いをしていたことに気づく
これまで独学だったところで書籍を読むと、いろいろ間違った解釈をしていたことが分かる。 - その言語のことが分かった気になる
最初に「俺はこの言語をマスターしたぜ」的な気持ちになるのがこの頃。 - 言語の本体(標準ライブラリとか)を読んでみる
その言語を使って書かれているコアの部分があるようだったら、それを読んでみる。言語作者が自ら書いた部分とかを見ると少しだけ考え方が伝わったような気持ちになる。 - 読んでも分からない箇所があって凹む
「なんだ、この記述は?」と思うような表記が見つかったりして、自分の理解がやはりまだ浅はかだったと気づく。 - 有名なライブラリのソースをちら見してみる
その言語を使って書かれたライブラリの中で、鉄板なものを見てみる。こういう書き方もあるのかと感心することしばしば。 - 概ねどのソースでもスラスラ読めるようになる
文法的には理解した感がある状態。「俺はこの言語をマスターしたぜ」的な気分が再び沸々と湧いてくる。もちろんこの気持ちはすぐに崩れ落ちることになる。 - マイナーどころの機能を使ってみる
リファレンスなどを見てみて、こんな機能あるんだと思ったものをいろいろ実際に触ってみる。自分はまだ全然この言語を把握しきれてなかったと実感したりもする。 - 有名なライブラリやフレームワークを使ってみる
その言語の機能だけでなく、有名どころの物品の使い方をマスターする。マスターはするけどたいてい実戦投入されることなく知識だけで終わる。いいんだ。プログラマにはそういう無駄な知識も大事なんだ。 - 作りたいと思ったものを作り始める
この頃にはだいぶその言語に毒された状態になっているので、以前に書いた時とはかなり違ったコードを書くようになっている。 - もっと良いコードの書き方があるはずだと探求を始める
「こんな書き方したらどうだろう?」と思ったことを試すのに熱中してしまい、作りたいと思ったものがいつまでも完成せずに終わったりする。 - 最新リリースを追い始める
次のバージョンには何が入ってるのかが気になり、ベータ版などに手を出して感動しつつ痛い目に遭うという器用なドM的振る舞いをし始める。ここまで来ると向上心で勉強しているというよりは、ある種の病に近い状態である。 - エンドレス
「俺はこの言語をマスターした!」「いや、マスターしてなかった!」「今度こそマスターした!」「ごめん、嘘、まだだった」という終わらないループの中を飽きるまで回り続ける。
2011年05月12日
個人的プログラミング言語を学ぶフロー
最近の自分の行動を見て、こんな感じのフローを考えてるのかなぁと分析する用途で書いてみた。順序はところどころ混ざり合うので一直線ではありません。