職業柄「プログラミングってどうやったら上達しますか?」と相談されることがあります。
自分よりも経験豊富な方がいらっしゃるのであれば、コードレビューを受けるのが一番良いと思います。 一人で気が付けない視点や関連知識も同時に教えてくださいます。
自分だけで学習するなら、沢山のコードを書いてみる、読んでみる、エラーを対処することが上達の近道と思いますが、これらはプログラミングに不慣れな初心者には難しいと思います。
初心者から中級者を目指したい方は、こんな学習方法はいかがでしょうか?
ポイントは「想像を働かせて、ちょっと変えてみる」です。
初心者のつまずきポイント
最初から「難しい内容でも全て理解しなければならない」という先入観だと自己学習に疲れてしまいます。 だんだんと知識が繋がっていくように学習していくのがポイントです。
学習手順
手順1)サンプルコードを実行
最初はプログラミング入門書に書かれているサンプルコードを実行して基本を学びましょう。
入門書は薄いものでOKです。
例えば以下のようにJavaで「配列の内容を表示する」サンプルコードがあったとします。
Sample.java
package sample;
public class Main {
public static void main(String[] args) {
//配列の生成と初期化
int[] array = {10,20,30,40,50};
//配列の中身をすべて表示
for (int i=0; i<5; i++) {
System.out.println(array[i]);
}
}
}
実行してみると以下の結果になりました。
10
20
30
40
50
予想通りですね。
手順2)ポイントの確認
次に入門書に書かれているサンプルコードのポイントを確認します。
- 配列の初期化(={10,20,30,40,50}と書く)
- 配列の要素のアクセス方法(array[i]と書く)
ここまでが通常の入門書を使った学習です。
手順3)ちょっと変えてみる
得た知識だと「配列の i < 5 の部分で繰り返しが指定できる」です。今得た知識と今までの知識を使って仮説を立てて実行します。
「配列の5つの要素を表示されているが、4つ表示したい場合はココを変えてたらできるかな?」
for (int i=0; i<5; i++) {
▼
for (int i=0; i<4; i++) {
実行して確認します。
10
20
30
40
仮説の通りの結果になりました!
「配列の要素は5だが、6つ表示した場合、どんな結果がでるだろう?」
for (int i=0; i<5; i++) {
▼
for (int i=0; i<6; i++) {
実行して確認します。
10
20
30
40
50
Exception in thread "main" 50
java.lang.ArrayIndexOutOfBoundsException: Index 5 out of bounds for length 5
at sample.Main.main(Main.java:12)
最後にエラーになって終了するようになりました。 「要素以上を表示しようとするとエラーが発生する。その時のエラーは ArrayIndexOutOfBoundsException なんだ」とだけ覚えておきます。
あえて、エラーになるようなコードを実行することもポイントです。
プログラミングの半分はデバッグ作業(プログラムの不具合を見付けて修正する作業)といわれています。 あえてエラーを発生させた経験などは、デバッグ作業時に「あ、あの時のエラーか」と冷静に対処できるようになります。
ポイント
こんな感じで「ココを変えたらこうなるのでは?」と考えて、実行して、確認すると、サンプルコードを通じて今までの知識を使いながら主体的に学べるようになります。
これを続けていくと、自分の中にある知識が整理されますし、あえてエラーを発生させた経験をしておくと、実践でも取り出しやすい深い知識となります。
サンプルコードを、ちょっと変えてみるだけなので、ぜひ取り入れてみてください。