こんにちは。IT忍者です。勉強や実際にPCでプログラムを作成して試しても、つまづくポイントが、多々あるかと思います。ちょっとした対処方で、意欲を削がれないかもしれませんので、そのあたりに触れていきたいと思います。内容は基礎の基礎の内容かなとは思いますので知っているぞ~という人も多くいるかももですね~。
プログラミング学習つまづきあるある
・不具合が解消しない、エラーが取れない
・環境の問題で、学習内容通りに動かない
・理解が難しい処理のサンプル
きっとこの辺りが発生するかなと推測はできます。何日も詰まっている場合には、いくつかそんなときのポイントとして見てもらえればです♪ プログラミングを勉強する上で使い方と見方を覚えないといけないのが「DebugTool:デバッグツール」統合開発環境(IDE)なら大体付いています。(プラグインが必要なのありますが) そのうえで、「敵を知る」という部分でいくつかパターン化できそうな気がします。
プログラムは1文字でも間違えていると動かない
厳しいですよね。今や半自動でソースコードを機械がひな形を記述してくれますが、中の処理は人間なのでタイプミスとか、紛らわしい変数名とか使ってしまうとなかなか気が付きにくいもんです。またエラー内容も基本英語ですからね。w エラーは主に2種類になりますので、デバッグツールを使いこなせるとプログラムの内部処理も、1行づつ追っていけるので、理解度も深まります。
構文エラー
名の通り、該当言語に合わせて記述が必要だが記述名が間違っているというやつですよね。こっちの不具合は比較的、エラーメッセージのまんま 「 syntax error 」なので見つけやすい。コンピュータは融通聞かないですよね。「:」と「;」ちょっとしか違わないんだから、それぐらい補ってよと言いたくなりますよね~。残念ながら0と1しか理解できんのです。((+_+))
論理エラー
最初は、こちらのエラーの場合には、見つけるのがちょっと面倒です。なぜならプログラムの記述そのものは間違えていないからですね。例えば1をInputすると10が返る関数を作るとしましょう。でも 結果が、10以外のものが返ってくる という期待値は本来10だけど10以外になって、プログラムの処理は「正常終了する」。 どこでおかしくなっているのかわからない。プログラムは処理を命令すると処理が終わるまで、途中経過が見れない。ここでデバックツールの出番です。WEB系だと「 Chrome Developer Tools 」で、ブレークポイントも張り放題♪。ほぼほぼデバッグ出来ちゃいます。イヤーJavaScriptのデバッグもめっちゃ簡単♪
WEBサイト通りにやってるのになんかエラー出る
手順通りに開発環境とか構築しているのに、全然違うところのエラーで開発環境が整わない。これも面倒ですよね。私はこの辺の環境構築系は、めんどくさがり屋なので大っ嫌いですw
インストール手順とソフトウェアのバージョン確認
一息ついて、冷静に手順を振り返ってみましょう。開発環境を自分にPCに作るときによくあるのが
・ディリクトリ違い
・環境Pathが正しく設定できていない
・インストールするソフトウェアのVerが違う
・インストール順番が違う
・見直して見ても環境作れなかったら参照している記事が古いかも
理解が難しい処理
これがプログラミング学習でつまづくかもしれませんね。サンプルコードが「何やっているかわからない」 きっとなぜそうなるか謎と言う部分が沢山出て来て、そこに何時間かけても理解するまで、到達出来ない状況だと きっと学習意欲モチベーション下がりますよね。
一旦置いておいて先の処理の理解に進む
実務レベルの技にもあるのですが、他人のソースコードを読む必要性が出るケースが未来ではあると思います。そんな時に使う「ソースコード速読術」の1例ですが、
①処理全体の中から、起点となりそうな重要そうな部分を先に「点」として読み込みます。
②その処理だけで何をやっているかを把握します。
③前後の処理の部分を同様に把握します。
④上記理解できた部分から理解できていない処理の部分へ範囲広げます。
⑤点だった処理を前後を通して、線として内容を記述して繋げていきます。
最後1本の線になり、全体で何をやっている処理なのかを把握できるという流れです。
プログラム理解は流れに沿って読む事ばかりが手段ではない
マルチスレッド処理とかは、一旦おいておきますが、上から下に流れを追う方法がすべてではないです。順番に理解していこうと思うと、つまづいた部分で止まってしまうので、わからない部分を読み飛ばして先を読むことで、先の処理で何をしているかを理解してから、戻ると類推する事でわからない部分の処理がパズルのように埋まる事もよくあります。
例)
最後の方で、何か出力処理をしている
最初に固定の文字列を設定してる
間の処理で文字列を逆に入れ替えている
と部分的に読み解いて最後繋げると全体の意味が分かるなどなど。
学習モチベーションの維持に向けて
丸1日詰まっていたのに、翌日数分で解決できるなどもよくあります。何時間も詰まってしまったら、素直に一旦片隅に置いておいて違う事をする。再度頭がスッキリしているときに、再度Tryするといった形でやってみてはどうでしょうか。後は目標の成果物(ポートフォリオ)を完成させたときには、きっと自信につながって、より一歩ITエンジニアに近づくかと思いますしその先有利になるはずです♪