抽象化の可視化

コード全体を一行ずつ頭に置けないとき、抽象化が分析を助けます。このコース群では、関数呼び出しと戻り値から始め、アルゴリズムを比較するコストモデルへ進みます。最後に、プロトコル、パーサー、UI の流れを表す状態とイベントを学びます。

抽象化では、挙動の説明に必要な情報を選びます。スタックフレームはインタープリター内部の仕組みを隠し、Big-O は正確な実時間を省いて増加の傾向を残します。有限状態機械は、現在の状態と次のイベントでシステムを表します。残す情報は、答えたい問いに応じて決めます。

抽象化のレッスンの見方

表示が変わっても成り立つ規則を追います。

  • コールスタックの形:再帰呼び出しでフレームを積み、戻るときは後入れ先出しで取り出します。
  • 局所状態:同じ関数でも、各フレームは自分の変数を持ちます。
  • 増加の傾向:アルゴリズムの比較では、計時の揺らぎより操作回数に注目します。
  • 遷移規則:同じイベントでも、状態によって意味が変わります。

抽象化は具体的な問いを答えやすくします。今どのフレームを実行しているか。戻り値はどこへ渡るか。n が二倍になると仕事量はどう変わるか。このイベントは現在の状態で何を意味するか。

抽象化のレッスン

レッスン中心となる考え注目する点
再帰とコールスタック再帰も通常の関数呼び出しで、呼び出しごとにフレームを持つフレームの追加、中断、復帰、取り出し
ステップ数で理解する Big-O操作回数から計算量を考えるn が二倍になるときの O(1)、O(log n)、O(n)、O(n²) の違い
状態機械(state, event) から動作を選ぶ同じイベントでも、状態によって別の遷移規則が選ばれる

まず再帰とコールスタックで、フレームと戻り値の経路を追います。

次にステップ数で理解する Big-Oへ進みます。実行を追えれば、仕事量を数えられます。入力を二倍にする実験から、どちらも正しく動くプログラムが、入力の増加に対して異なる挙動を示す理由が分かります。

最後に状態機械を学び、システムのレッスンにつなげます。TCP、スケジューラー、パーサー、UI の流れでは、何が起きたかに加え、そのときどの状態だったかを確認します。

抽象化の可視化一覧

下のレッスンを選び、ステップごとに進めます。情報の多い画面で止め、この図によってどの規則が見えるようになったかを考えてください。