「プログラムは“動く数式”だ—時間を止めて見ればわかる!」
目次
はじめに:なぜ a = a + 1 がモヤモヤするの?
「算数の = と違うじゃん……」
たった 1 か月学んだだけでプログラムが難しく感じる最大の理由は、時間と状態変化があるからです。
数学の式は“いつでも真”ですが、プログラムは上から順に評価され、変数の中身が刻々と変わります。このギャップが “わからなさ” を生みます。
1. 数学とプログラムはココが違う
観点 | 数学(式) | プログラム(命令列) |
---|---|---|
時間軸 | 同時・静止画 | 上→下へコマ送り |
状態 | 変わらない前提 | 変数・オブジェクトが書き換わる |
= の意味 | 恒等関係 | 代入(右辺→左辺) |
ポイント:プログラムを理解するコツは「秒針をイメージ」すること。
2. “時間” を見える化する3つの方法
方法 | やり方 | 効果 |
---|---|---|
ステップ実行 | Visual Studio で F10 (1 行ずつ) / F11 (メソッドの中へ) | “今この瞬間”の値がわかる |
手書きメモリ図 | 変数と値をノートに書き、変化するたび書き替える | 状態遷移を視覚化 |
タイムライン図 | 横軸=時間、縦軸=変数やオブジェクト | 誰がいつ変わるか俯瞰できる |
3. 一緒にやってみよう:カウンタを1ずつ増やす
int count = 0; // ❶
count = count + 1; // ❷
Console.WriteLine(count);
- ❶ 変数 count が 0 でスタート
- ❷ 右辺 count + 1 を計算 → 1
- まだ左辺は書き換わっていません
- 左辺に 1 を“貼り替え” → count が 1 に
- 画面に 1 と表示
実際にデバッガで ❶→❷ の間で一時停止し、count のウォッチ値を見比べてみましょう。「動いている!」が体感できます。
4. オブジェクト指向が混乱を呼ぶワケ
- 状態保持が増える:クラスごとにフィールドがあり、メソッド呼び出しで変わる
- メッセージの行き来:オブジェクト間で「頼むよ!」→「わかった!」という時間差
- 設計図と実体:クラス(型)とインスタンス(実物)を区別する必要がある
コツ:クラス=建築図面、インスタンス=建っている家。図面は変わらないが家はリフォームで変わる――そう思うと腹落ちします。
5. つまずきポイント別・セルフチェック
症状 | チェック項目 | 処方箋 |
---|---|---|
a = a + 1 が矛盾に見える | 「= は矢印だ」と言える? | 紙に今の値→次の値を書き出す |
どこで値が変わったか迷子 | ウォッチウィンドウ使えてる? | F10 で1行進めるたび声に出す |
オブジェクト同士の呼び出しが追えない | タイムライン図を描いた? | 呼ぶ側・呼ばれる側を色分け |
6. まとめ:時間を“止める”→“動かす”の往復練習
- 止める:ステップ実行で静止画を確認
- 動かす:連続実行で流れを感じる
- 描く:メモリ図・タイムラインで第三者の視点に立つ
こうして「静止画」と「動画」を行き来すると、プログラムは“動く数式”としてスッと理解できます。つまずいたら秒針を止め、変数の中身をのぞいてみましょう。時間と状態の見える化が、わからなさを突破する最短ルートです。
次のステップ
- 練習課題:カウンタをクラスにし、Increment() メソッドで状態を変える版を作ってみよう。
- 応用ヒント:純粋関数 (static int Add(int x, int y)) と比較すると “副作用があるコードは何が違うか” が見えてきます。
疑問や感想があればコメント欄へ! 一緒に“時間を味方”につけていきましょう。
訪問数 5 回, 今日の訪問数 1回
ディスカッション
コメント一覧
まだ、コメントがありません