友達がいなくても新しい言語は学べる
プログラミングが分かってる相手に気軽に挙動について訊ける機会なんてありませんね。仕事なら同僚に訊けばいいと思いますけど、同僚が暇とは限りませんし、学生ならそういった相手がいないことが普通ではないでしょうか。
ということで、独りで言語を学ぶ方法について考えます。
作りたいものを決める
大変重要なところです。どの言語でも書けて、どの言語も多少の個性が出て、そこそこ簡単なものがいいですね。
ぼくの場合は blosxom という「テキストファイルをスキャンしてHTMLにするだけのブログツール」なんですが、まぁなんでもいいと思います。ぼくはウェブエンジニアなので、ブラウザに何か表示がでるとそれだけで嬉しいというところがあります。
リファレンスをひけるようにする
どの言語も必ずどこかに言語リファレンスがあります。必ず公式のものを一式見れる状態にします。そしてできれば Chemr とか Dash みたいな瞬間的にリファレンスをひけるツールを用意します。
リファレンスは無限にひくことになるので、多少ここに時間をかけても良いところです。
書きはじめる
とりあえず Hello, World! しましょう。Hello, World! をバカにしてはいけなくて、これは print デバッグという原始的でほとんどどんな言語でも通用するデバッグ方法を習得するために必要なことです。高級なデバッガは言語ごと、エディタごとに使い勝手が異なることが多いので、デバッグが辛すぎる状況になってから考えます。
このとき、公式にチュートリアルがあるならやってみても良いです。が、どうせチュートリアル見ても Hello, World! のやりかたぐらいしか分からないので無視しても良いです。
重要構文を覚える
- 条件分岐 (if)
- ループ (for)
- リテラルの表記方法 "foo" は文字列、123 は数字など
これぐらいあればベタっと動くコードを書くことができるはずです。
クラス構文とか、そういうものはとりあえず無視しましょう。Java とか C# だとエントリポイントを書くために最初っから必要になりますが、まずはできるだけ無視します。言語特有の機能はとりあえず置いておいて、動くコードにします。
設計をなおす
多少動くものが書けそうなら、その言語で「最も良い書きかた」にできるだけ全てを直します。ここではリファレンスの特に文法をよく読んで「ぼくの考える最高に読みやすい書きかた」を探ります。とはいえ、だいたい言語ごとにセオリーが決まっているので、言語公式のライブラリとかを読むとてっとり早く雰囲気をつかめます。ただ、公式ライブラリが十分綺麗に書かれているとは限らないので、できるだけリファレンスに頼ったほうがいいと思います。
このとき大事なのは「これは読みにくいぞ」とか「オレはこう書きたいんだけど」という気持ちです。そういう自分の信念と、言語ごとの雰囲気の擦り合せを行います。できるだけ言語特有の良さを出すように書きます。最終的に「このコードは(他の言語名)から来たヤツが書いてんな」みたいな田舎臭さを消滅させることを目標とします。
友達がいなくても言語は学べるか
リファレンスをひけば大丈夫です。安心しましょう。そして Google で検索すれば大抵のわからない問題は解決します。わからなかったことは公開される形で記録しつつ解決して、検索できるようにしましょう。そうすると後続の友達がいない人に優しいインターネットになります。
関連エントリー
- リファレンスマニュアルをインクリメンタル検索するやつを Electron で実装した https://github.com/cho45/Chemrtron 機能 インデックス用のクローラ 作ったインデックスのインクリメンタル検...
- ComplexAnalyserNode (WebAudio) を作った (IQ信号のFFT) https://github.com/cho45/complex-analyser-node WebAudio の AnalyserNode...
- 簡単かつ安く高精度なアンテナアナライザーを自作したい いろいろ回路の説明を見たりしていたのは自分で作ってみたかったからです。既製品を1つ持っていますが、海外製なので壊れたときに不安です。自分で作...
- ZenFone 3 上の Chrome for Android でサイトが中華フォントになる ZenFone3 (Android M) にしてからブラウザのフォントが Source Hans Sans になったのですが、このサイトの漢...
- BLE Nano + mbed の ADC の基準電圧 BLE Nano + mbed での ADC の基準電圧は VDD の 1/3 になっています。当然ながら VDD が変動するケースではこの...