プログラミングが分かってる相手に気軽に挙動について訊ける機会なんてありませんね。仕事なら同僚に訊け…

プログラミングが分かってる相手に気軽に挙動について訊ける機会なんてありませんね。仕事なら同僚に訊けばいいと思いますけど、同僚が暇とは限りませんし、学生ならそういった相手がいないことが普通ではないでしょうか。

ということで、独りで言語を学ぶ方法について考えます。

作りたいものを決める 大変重要なところです。どの言語でも書けて、どの言語も多少の個性が出て、そこそこ簡単なものがいいですね。 ぼくの場合は blosxom という「テキストファイルをスキャンしてHTMLにするだけのブログツール」なんですが、まぁなんでもいいと思います。ぼくはウェブエンジニアなので、ブラウザに何か表示がでるとそれだけで嬉しいというところがあります。

リファレンスをひけるようにする どの言語も必ずどこかに言語リファレンスがあります。必ず公式のものを一式見れる状態にします。そしてできれば Chemr とか Dash みたいな瞬間的にリファレンスをひけるツールを用意します。 リファレンスは無限にひくことになるので、多少ここに時間をかけても良いところです。

書きはじめる とりあえず Hello, World! しましょう。Hello, World! をバカにしてはいけなくて、これは print デバッグという原始的でほとんどどんな言語でも通用するデバッグ方法を習得するために必要なことです。高級なデバッガは言語ごと、エディタごとに使い勝手が異なることが多いので、デバッグが辛すぎる状況になってから考えます。 このとき、公式にチュートリアルがあるならやってみても良いです。が、どうせチュートリアル見ても Hello, World! のやりかたぐらいしか分からないので無視しても良いです。

重要構文を覚える 条件分岐 (if)

ループ (for)

リテラルの表記方法 "foo" は文字列、123 は数字など これぐらいあればベタっと動くコードを書くことができるはずです。 クラス構文とか、そういうものはとりあえず無視しましょう。Java とか C# だとエントリポイントを書くために最初っから必要になりますが、まずはできるだけ無視します。言語特有の機能はとりあえず置いておいて、動くコードにします。

設計をなおす 多少動くものが書けそうなら、その言語で「最も良い書きかた」にできるだけ全てを直します。ここではリファレンスの特に文法をよく読んで「ぼくの考える最高に読みやすい書きかた」を探ります。とはいえ、だいたい言語ごとにセオリーが決まっているので、言語公式のライブラリとかを読むとてっとり早く雰囲気をつかめます。ただ、公式ライブラリが十分綺麗に書かれているとは限らないので、できるだけリファレンスに頼ったほうがいいと思います。 このとき大事なのは「これは読みにくいぞ」とか「オレはこう書きたいんだけど」という気持ちです。そういう自分の信念と、言語ごとの雰囲気の擦り合せを行います。できるだけ言語特有の良さを出すように書きます。最終的に「このコードは(他の言語名)から来たヤツが書いてんな」みたいな田舎臭さを消滅させることを目標とします。