第120章へようこそ。
第119章で、コンパイラとの協働を語りました。
コンパイラのエラーは設計へのフィードバックであり、エラーに従って設計を見直すと、コードは単純になる。
今日のテーマは「ゼロコスト抽象」です。
プログラミングにおいて、抽象化は強力な道具です。
共通の処理をまとめる。詳細を隠す。汎用的な部品を作る。
しかし、多くの言語では抽象化にはコストが伴います。
関数の呼び出しを抽象化すると、間接呼び出しが挟まる。
データの型を抽象化すると、実行時に型の情報を調べる処理が入る。
繰り返しの処理を抽象化すると、中間的なデータが生まれる。
抽象化するほど、コードは読みやすくなるが、遅くなる。
だから高速なコードが必要な場面では、抽象化を諦めて具体的なコードを書く。
Rustは、この二者択一を拒否しました。
「抽象化しても、手で書いた具体的なコードと同じ速度で動く。」
これがゼロコスト抽象です。