Da kommt natürlich die Folgefrage, muss jeder code so geschrieben sein dass ihn auch der letzte Idiot versteht, oder ist es wichtiger dass der Algoritmus effektiv ist und die software um Magnituden schneller ist und genauso viel weniger Resourcen verbraucht?
Zumindest im JavaScript-Bereich sind wir so weit, dass wir uns unperformanten Code leisten – und in den häufigsten Fällen auch leisten können. Dass ein unoptimiertes jQuery-Script 20ms läuft, obwohl es hochoptimiert nur 10ms bräuchte, ist i.d.R. egal, wenn das Problem dafür verständlich in drei Codezeilen ausgedrückt wird. Erst wenn ich das Script tausendmal hintereinander ausführen muss, habe ich ein Problem – allerdings wahrscheinlich ein konzeptionelles bei der DOM-Manipulation.
Vor ein paar Jahren war es vielleicht noch so, dass Syntactic Sugar die Performance signifikant gebremst hat. Heute hängt die Performance von JavaScript-Anwendungen von anderen Faktoren ab: Blocking I/O, Reflow/Repaint, Animationen und Effekte, Multimedia-Einbettung, Speicherverbrauch, Flexibilität gegenüber Mobilgeräten und Touch-Interfaces.
Auch im Ruby-Bereich nimmt man extensives Metaprogramming auf sich, um den Programmierern DSLs bereitzustellen, mit denen sie Aufgaben und Sachverhalte konzis notieren können. Performanter ließe sich das sicher lösen, aufs Ganze gesehen geht dabei aber nicht viel Performance verloren. Unperformanten Code zu skalieren ist immer noch weitaus billiger als überbordenden, unlesbaren Code zu entwickeln und zu pflegen.
Mathias