ゼロコスト抽象化
抽象化は実行時に何のコストも払うべきではないという原則。使わないものには支払わず、使うものは手書きしてもこれ以上うまくはできない。
この定式化はBjarne Stroustrupによるもので、C++とRustの双方の設計目標になっている。map や filter によるイテレータの連鎖は、中間コレクションを伴う関数型プログラミングのように読めるが、コンパイラが全部インライン化し、アセンブリに残るのは自分で書いたのと同じループである。ただし「コスト」が指すのは実行時だけで、批判はそこに向かう。つけは、コンパイル時間、ジェネリックなコードが50通りに展開されることによるバイナリサイズ、画面を埋め尽くすエラーメッセージ、そして何も最適化されず、優雅な抽象化が突然10倍遅くなるデバッグビルドへと回される。