挫折しないプログラミング勉強法を図解してみる
お疲れ様です。Y研究員です。プログラム勉強法の「写経」を実践しながら研究しています。今日はタイトル通り、挫折を防ぐ方法を図解します。
目的一直線を何個かやる
ChatGPT4にプログラムを作ってもらい、それを「写経」をする勉強法です。大まかに解説をしてもらい、疑問点は更に詳しく質問します。応用問題も作ってくれるので「写経」の次の「少し変えてみる」ができます。知識の定着です。
お題はゲームにしていますが、目的一直線な感じがしました。よくあるプログラミング言語の本とは違う感じです。本では網羅的にプログラムの書き方を紹介します。図解してみます。
ChaGPTを使って勉強すると、目的に向かって必要なことだけをします。余計なことはやりません。分からない所を質問すれば幅は広がりますが、広い範囲をカバーしている感じがしません。図にも書きましたが、何個か作るとカバー範囲が広がりそうです。
プログラミング言語の本には、言語の説明を網羅的にする物があります。自分はこれが苦手で、挫折した経験が何度もあります。問題点は、何に役立つのか分かりにくい短いコードが続くことです。興味が減退するので継続が難しいです。逆に目的がはっきりした本は続きやすいです。例えばゲームをつくるとか、深層学習を理解するとかです。
C言語の「経典」といわれるK&Rは言語の使い方を紹介し続ける本です。なのに読破でました。不思議に思ったので、改めて考えました。理由は多分「コンパイラを作る」が目的だったからだと思います。どの章も、結局はC言語でC言語のコンパイラを作る目的につながっていました。
動くものを作る
ソフト開発手法を表す絵です。プログラミングの学習にも役立つ気がしました。
上はウォーターフォールという伝統的な手法です。段階を踏んで部品を作って結合させます。下はアジャイルです。動くものを作りながら強化していきます。
プログラミングの勉強も、部品ばかり作っていてはつまらないです。小さくても良いので動くプログラムを「写経」したいですね。
石の上にも「三ヶ月」
スキルアップを実感するまでに時間がかかります。この辺は、語学学習も同じですね。
語学学習では6段階に分ける方法があります。A1-A2-B1-B2-C1-C2です。AとBでは違いが有り、BとCでも違いがあります。Cはネイティブレベルです。ただ、次のレベルに上がるには時間がかかります。その間に飽きてしまい、挫折するケースが多いです。
ことわざだと「石の上にも3年」です。プログラミングなら最初は3ヶ月でも良いと思います。今から始めれば梅雨明け頃には、遅くてもお盆の前くらいにはなんとなく出来るようになっているイメージです。
自分の場合は
前回の記事の通りHaskellを続けたいと思います。まずは迷路です。昨日は配列の処理をやっていました。素数を見つけるプログラムがすごく簡単に書けました。「関数」と言うだけあって数学向きです。同じ入力なら結果が同じことを保証するのが関数です。簡単なシュミレーションとか物理エンジンを作っても面白いかなと思いました。
sieve :: [Int] -> [Int]
sieve [] = []
sieve (p:xs) = p : sieve [x | x <- xs, x `mod` p /= 0]
primeUpTo :: Int -> [Int]
primeUpTo n = sieve [2..n]
それではまた!
無料のプログラミングクラブCoderDojoを運営するにあたり寄付を受け付けています。お金は会場費・Wifiの費用・教科書に使用します。