KDOC 679: 『コーディングを支える技術』

この文書のステータス

  • 作成
    • 2026-10-17 貴島
  • レビュー
    • 2026-10-17 貴島

概要

『コーディングを支える技術』は、プログラミング言語の各概念がなぜ存在するかを解説する本である。

メモ

  • 特定の言語やツールなどの知識は、変化が早くすぐに陳腐化する。意識して「変化しにくい知識」を学ばなければ、学んだことが価値を失う
  • 学び方の3つの柱
    • 比較から学ぶ
    • 歴史から学ぶ
    • 作ることで学ぶ
  • 失敗を伝える方法は大きく分けて2通りある
    • 返り値で伝える
    • 失敗したらジャンプする
      • 例外処理

たとえば作者本人が書いたドキュメントやソースが一番詳しいでしょう。しかし「難しい」「量が多い」「英語なので読めない」と口実を付けて、誰かの書いたやさしい解説を探したりしてしまいがちです。それは「オリジナルの肉は大きく て硬いから」といって、安全なのか傷んでいるのかもわからない、誰かの作ったひき肉を食べるのと同じです。気持ちはわかります。筆者も膨大な情報を前にして心が折れそうになることはあります。そんなときに使える戦略が3つあります。それは「必要なところからかじる」「おおまかにつかんで徐々に詳細化する」「端から順番に写経する」の3つです。

  • C言語の文字列は「文字列が始まるメモリ上の位置」だけを持っている。長さの情報を持っていないので、そこからどこまでが文字列かわからない
  • 文字列の終わりを、NUL文字を使って表現する。C言語のコード中では\0と表現する

クラスなんて「そう書けたほうが楽だから」という理由で作られた約束事にすぎないのです。物理法則や宇宙の真理ではなく、人間が決めた約束事なのです。ならば、どうしてそういう約束を決めたか言語設計者の意図を考えるのが理解の近道なのではないでしょうか?

  • クロージャという特殊な構文があるわけではない。関数を関数の中で定義でき、ネストできる静的スコープがあり、関数を戻り値で返したり変数に代入できる言語では、単に関数をネストするだけで状態を持った関数を作れる
  • クラスには、2つの相反する役割がある
    • インスタンスを作るためのもの – このためには、完結した、必要なものを全部持った、大きなクラスである必要がある
    • 再利用の単位 – 機能ごとの、余計なものを持っていない、小さなクラスである必要がある

関連

なし。