この地図の役割

ソフトウェアの振る舞いを、ライブラリや流行のフレームワークから切り離して説明できるようにするための基礎地図です。基礎は暗記するための前置きではなく、性能・正しさ・資源制約・障害の原因を説明するためのモデルとして使います。

推奨する順序

  1. データ構造 (Data Structures)アルゴリズム (Algorithms)で、データを表現し問題を解く方法を学ぶ。
  2. 計算量 (Computational Complexity)で、入力規模に対するコストと限界を見積もる。
  3. コンピュータアーキテクチャ (Computer Architecture)オペレーティングシステム (Operating Systems)ネットワークの基礎 (Networking Basics)で、プログラムが動く実行基盤を理解する。
  4. 離散数学 (Discrete Mathematics)線形代数 (Linear Algebra)確率と統計 (Probability and Statistics)論理学 (Logic)で、仕様・証明・データ・不確実性を扱う。
  5. パラダイムを比較し、問題に対してどの抽象化が適切かを判断する。

パラダイム

設計への接続

基礎の学習は、それ自体で完結させません。計算量はソフトウェアアーキテクチャの設計判断へ、OSとネットワークはシステム設計と分散システムへ、論理と確率はソフトウェア品質モデル (Quality Attributes)と検証へ接続します。

詳細マップ

概要ノート