「プログラムは“動く数式”だ—時間を止めて見ればわかる!」

はじめに:なぜ a = a + 1 がモヤモヤするの?

「算数の = と違うじゃん……」

たった 1 か月学んだだけでプログラムが難しく感じる最大の理由は、時間状態変化があるからです。

数学の式は“いつでも真”ですが、プログラムは上から順に評価され、変数の中身が刻々と変わります。このギャップが “わからなさ” を生みます。


1. 数学とプログラムはココが違う

観点数学(式)プログラム(命令列)
時間軸同時・静止画上→下へコマ送り
状態変わらない前提変数・オブジェクトが書き換わる
= の意味恒等関係代入(右辺→左辺)

ポイント:プログラムを理解するコツは「秒針をイメージ」すること。


2. “時間” を見える化する3つの方法

方法やり方効果
ステップ実行Visual Studio で F10 (1 行ずつ) / F11 (メソッドの中へ)“今この瞬間”の値がわかる
手書きメモリ図変数と値をノートに書き、変化するたび書き替える状態遷移を視覚化
タイムライン図横軸=時間、縦軸=変数やオブジェクト誰がいつ変わるか俯瞰できる

3. 一緒にやってみよう:カウンタを1ずつ増やす

int count = 0;        // ❶
count = count + 1;    // ❷
Console.WriteLine(count);
  1. ❶ 変数 count が 0 でスタート
  2. ❷ 右辺 count + 1 を計算 → 1
    • まだ左辺は書き換わっていません
  3. 左辺に 1 を“貼り替え” → count が 1 に
  4. 画面に 1 と表示

実際にデバッガで ❶→❷ の間で一時停止し、count のウォッチ値を見比べてみましょう。「動いている!」が体感できます。


4. オブジェクト指向が混乱を呼ぶワケ

  1. 状態保持が増える:クラスごとにフィールドがあり、メソッド呼び出しで変わる
  2. メッセージの行き来:オブジェクト間で「頼むよ!」→「わかった!」という時間差
  3. 設計図と実体:クラス(型)とインスタンス(実物)を区別する必要がある

コツ:クラス=建築図面、インスタンス=建っている家。図面は変わらないが家はリフォームで変わる――そう思うと腹落ちします。


5. つまずきポイント別・セルフチェック

症状チェック項目処方箋
a = a + 1 が矛盾に見える「= は矢印だ」と言える?紙に今の値→次の値を書き出す
どこで値が変わったか迷子ウォッチウィンドウ使えてる?F10 で1行進めるたび声に出す
オブジェクト同士の呼び出しが追えないタイムライン図を描いた?呼ぶ側・呼ばれる側を色分け

6. まとめ:時間を“止める”→“動かす”の往復練習

  1. 止める:ステップ実行で静止画を確認
  2. 動かす:連続実行で流れを感じる
  3. 描く:メモリ図・タイムラインで第三者の視点に立つ

こうして「静止画」と「動画」を行き来すると、プログラムは“動く数式”としてスッと理解できます。つまずいたら秒針を止め、変数の中身をのぞいてみましょう。時間と状態の見える化が、わからなさを突破する最短ルートです。


次のステップ

  • 練習課題:カウンタをクラスにし、Increment() メソッドで状態を変える版を作ってみよう。
  • 応用ヒント:純粋関数 (static int Add(int x, int y)) と比較すると “副作用があるコードは何が違うか” が見えてきます。

疑問や感想があればコメント欄へ! 一緒に“時間を味方”につけていきましょう。

訪問数 5 回, 今日の訪問数 5回

C#,デバッグ

Posted by hidepon