Zero-Cost-Abstraktion
Das Prinzip, dass eine Abstraktion zur Laufzeit nichts kosten darf: Was man nicht nutzt, bezahlt man nicht, und was man nutzt, hätte man von Hand nicht besser schreiben können.
Die Formulierung stammt von Bjarne Stroustrup und ist das Designziel hinter C++ und Rust gleichermaßen. Eine Kette von Iteratoraufrufen mit map und filter sieht aus wie funktionale Programmierung mit Zwischensammlungen, aber der Compiler inlint alles, und was im Assembler übrig bleibt, ist dieselbe Schleife, die man selbst geschrieben hätte. Das Wort „Kosten" gilt allerdings nur für die Laufzeit, und genau dort setzt die Kritik an: Die Rechnung wandert stattdessen zur Kompilierzeit, zur Binärgröße, wenn generischer Code in fünfzig Varianten ausgestanzt wird, zu Fehlermeldungen, die einen Bildschirm füllen, und zu Debug-Builds, in denen nichts optimiert ist und die eleganten Abstraktionen plötzlich zehnmal langsamer sind.