プログラマが考えるプログラム言語の学び方
ドットインストール見る。
いやわりとガチで。
とか言いつつ、実はドットインストールって新人向け学習用サイト探す時にちらっと見たことがある程度だったりします。
あ、いい感じじゃね、と、思っただけという。
実際に私が実践した学習方法としては、まず開発環境を作る。
次に最小限でrun可能なプロジェクトを作る。
そのあと、実際にrun可能なアップデート案件の対象のプロジェクトを修正しながら学習する。
そういう、現場に入ってるか実ソースないと無理という学習方法だったりします。
とりあえずブレイク貼りまくって動作を理解するところから始めるという感じですね。
ブレイク貼りまくって〜とかいう動作の解析は5分もすれば終わりますけど。
そのあと埋め込まれてるログを全てコメントアウトして自分で適当にログ貼りながら認識に間違いがないかを確認して、早速修正を始めるという方法で学びました。
ぶっちゃけ最初からコレできるならわざわざ学習の期間とか取らなくても良いですよねという感じなんですけどね。
というかプログラム言語というのは本来単純で、あとから乗せられた処理以外は基本的にリファレンスに正しい動作が載ってるものなんですよね、と。
そう考えると、書かれてる記述からアルゴリズムだけ抽出できる目があるならあとは記法だけググればコーディングはできる。
可能ならそういう数段階すっ飛ばした方法で学んだ方が効率が良いです。
可能なら、ですが。
基本的に初めてソースいじるぜー、って人だとそういう目を持ってるわけもなく、当然一からのスタートになることだろうと思います。
そういう場合にすべきことを順番に書くとすると、こんな感じですかね。
1.開発環境を作ります。
2.実動作可能な環境を作ります。
3.ログを出力します。
4.変数の値が入ったログを出力します。
5.画面を表示します。
6.画面にボタンを作ります。
7.ボタンがクリックされた回数をカウントします。
8.二つ目のボタンを作成し、それぞれがクリックされた回数をカウントします。
9.画面を切り替えます。
10.ボタンがクリックされた回数を別の画面に渡します。
とまあ、言語と開発環境にもよりますが初日でここまでできればもしかするとプログラマの適性があるかもしれないですよね、とか思いますよね。
単に書かれても『これくらいしかできないでしょってバカにしてんのか』、とか勘違いされそうで嫌なんで理由を書いておくとすると……。
1はまあ当然ですよね。
まず何は無くともこれがないと話にならないですし。
プログラム勉強するって座学で済むことじゃないんで。
実際に走らせながら修正しないと普通にバグります。
というか実動作がわからないと何を学ぶのかもわからなくなるでしょう、と。
文法学べば良いってものでもないですしね。
2は、これができない言語とは付き合い方を考えた方が良いかな、と思いますね。
例えばAndroid Javaとか。
場合によっては新しいプロジェクト生成した瞬間にエラー祭りになるIDEとかもありますし。
3は、実際のプログラムというのは大半が目に見えない部分で動いているということを理解するのに良いんじゃなかろうかと思います。
コンソールに出力しても、実際に動かしてるときは基本的に見えないですからね。
まあ、環境用意すれば見ようと思えば見えるんですけどね。
4は、データ型とかその辺りが大事になってくる要因を理解しやすくなるかなぁ、と。
言語によっては単に$1とか適当にぶっこめば出力してくれるんですけど、逆に言語次第では%@とか%dとか%ldとかフォーマット指定子というのと表示するデータを合わせる必要があったりしますからね。
5は、細々としたことが続いたんで実際に動作するものを作るというのが一つ。
UserInterfaceの作りの基本中の基本を理解するというのが一つ。
人に操作させようと思うと、まず見せる必要があるというところですね。
6は、実際に操作できるものを作るのって実はそんなに難しくないということを理解して欲しいというのと、こういう感じで機能が増えていくとちょっとずつ楽しくなってきますよね、というところ。
7と8は、変数についてですね。
例えばint clickCountとかの変数一つだと二つのボタンがクリックされた合計回数しか記録できないとか。
9と10は、クラスについてですね。
それぞれが持ってる値というのは違うというところです。
画面Aが持ってる情報というのは何かしらの方法で渡さないと画面Bには分からないですよ、と。
まあ、単に順番に沿ってやってるだけだとそこまで考えないんでしょうけどね。
で、グローバル変数とか作ってしまってプログラム知ってる人からツッコミが入る、と。
ちなみにとりあえず10個のステップにしたのはキリが良いからというのと、ここから先は言語特有の話が濃くなり始めるから何も考えずに書くとグタグダするというのが理由です。