ジェネリックプログラミング
型検査を保ったまま、さまざまな型に使い回せるコードを書く手法。List<T>、Vec<T>、HashMap<K, V>などがその例だ。
実装方式は大きく二つある。単相化(monomorphization)はC++のテンプレート、Rust、Swiftが採用し、使われた型ごとにコンパイラがコードの複製を生成する。速いがバイナリは膨らむ。もう一つは型消去(type erasure)で、JavaやTypeScriptが採用し、コードは一つのまま実行時には型情報が消える。Goは長い議論の末、2022年(1.18)にジェネリクスを導入した。C++20のConceptsは、悪名高いテンプレートのエラーメッセージをいくらか読めるものにした。