C++スーパープログラマになるための学習項目リスト

4月は新入社員の季節です。うちの会社にも一人だけですが、中途採用の社員が入ってくる(C/C++の若干の知識あり)ので、その人に何を教えるべきか考えています。下記は個人的に教えたいなぁと考えている項目。

  1. ポータブルなコード
    1. マクロ
    2. 64bit
    3. intよりsize_t
    4. 国際化(文字列の扱い、ローカライズなど)
  2. セキュリティ
    1. バッファオーバーラン
    2. 機密情報の取り扱い(memsetなど)
    3. 暗号について
    4. 暗号乱数について
  3. C言語に戻る
    1. 関数ポインタ
    2. 呼び出し規約
    3. DLL/Shared Object
  4. カプセル化
    1. 情報隠蔽(変数の隠蔽)
    2. 遅延評価
    3. 変数の保護
    4. 何でも仮想化 (lock/unlock)
    5. コンテキスト
    6. オブジェクト指向について
    7. structとclassの違い
    8. オブジェクト指向 継承・virtual関数・仮想デストラクタ
  5. 設計
    1. Design by Contract
    2. 森を見て木を見る
    3. 嘘つきになる
  6. 例外
    1. 例外について
    2. 従来のエラー処理よりも例外の方が良い理由
    3. RAII
    4. AutoPtr
  7. スレッド
    1. CreateThread, _beginthreadex
    2. CoInitialize
    3. 原子性(Atomicity)/競合状態
    4. Mutex
    5. Win32スレッドの基礎 WaitFor*Object(s)
    6. CriticalSection
    7. Semaphore
    8. Interlocked API
    9. Event
  8. template
    1. STL
    2. コンパイル時計算性/定数性/インライン
    3. traits
    4. concept