Ihre hackermäßige Natur führt zudem häufig zu schlechterer Lesbarkeit und Wartbarkeit der Programme.
... ich in genau diesem Punkt entschieden widerspreche. Nach meiner Erfahrung ist Programmcode, der bewusst auf optimale Performance getrimmt ist, meistens sogar besser lesbar und verständlich, weil er "straightforward" ist, weil er ohne Umschweife auf den Punkt kommt.
Ein Hack ist für mich ein programmiertechnischer Trick, der nicht auf Wissen über das zu lösende Problem selbst beruht, sondern auf zusätzlichem Wissen über die Programmiersprache oder Ausführungsumgebung. Beispiele dafür sind Wissen über Speicherlayout, Callstack-Size, Strictness etc. Idealtypischerweise würde ich beispielsweise eine Funktion zur Berechnung der Fibonacci-Zahlen auf rekursive Weise implementieren, und damit meinen Programmcode sehr nahe an der mathematischen Definition ausrichten. Allerdings weiß ich, dass JavaScript noch keine Unterstützung für endrekursive Funktionsaufrufe hat und ich somit schnell einen Stackoverflow produzieren könnte. Um dem Stackoverflow zu entfliehen setze ich also stattdessen auf eine prozedurale Implementierung oder auf Trampolining. Damit obfuskiere ich aber die Intention meines ursprünglichen Programmtextes, weil dieser nun haufenweise Quelltext enthält, der qualitativ nichts zur Lösung des Problems beiträgt. Ich entschuldige mich für das synthetische Beispiel, aber ich denke damit kann ich meine Definition eines Hacks sehr gut veranschaulichen.
Diese Charakteristik ist es auch, die C den Ruf eingebracht hat sehr schnell und resourcensparend zu sein. C setzt exzessiv auf die manuellen Optimierungsfähigkeiten der Programmierer und bietet ihm dafür sehr viele lowlevel Routinen an, um bspw. direkten Einfluss auf das Speicherlayout nehmen zu können. Per se ist C nämlich eine eher langsame Sprache, zumindest in dem Sinne, dass der Compiler vergleichsweise wenig Möglichkeiten hat automatisiert Optimierungspotenzial zu erkennen und auszuschöpfen.