Hi zusammen,
neulich abends beim lecker Bier in der Kneipe kam das Gespräch auf AutoIt vs. Compiler, und einer der Anwesenden (Xorianator) wiederholte sein vorher hier auch schon in der Shoutbox gemachtes Statement, dass Compiler heutzutage Code generieren, welcher (von Menschen) nicht mehr weiter zu verbessern ist.
Ein weiterer Anwesender (AspirinJunkie) benutzt Compiler und insbesondere hochoptimierte Bibliotheken für weitgehend komplexe mathematische Berechnungen. Diese Bibliotheken/Dll´s werden weltweit als "Standard" eingesetzt, es kann davon ausgegangen werden, dass diese Programme "ausoptimiert" sind.
Mit AspirinJunkie bin ich einer Meinung, dass bei der Verwendung von standardisierten, hochoptimierten Funktionen aus Bibliotheken, die tausendfach auf Rechenclustern verwendet werden, die Ersteller dieser Bibliotheken schon aus Eigennutz alle Register ihres Könnens gezogen haben, um das letzte Quentchen Leistung aus der verwendeten Hardware herauszukitzeln.
Allerdings bin ich überhaupt nicht der Meinung, dass ein beliebiger Quellcode, nachdem er durch einen Compiler bearbeitet wurde, "optimal" im Sinne von ausführungstechnisch "schnellstmöglich" zu betrachten ist.
Bei der Erstellung der o.g. Bibliotheken wird optimiert, indem der vom Compiler erstellte Code analysiert und auf seine mögliche Geschwindigkeitssteigerung durch Sourcecodeumstellung/(Inline)ASM/Intrinsics untersucht wird. Das wiederum erfordert tiefere Kenntnisse der Zielarchitektur und natürlich Verständnis dafür "was der Compiler aus dem Sourcecode macht". Erst jetzt kann man beurteilen, ob der Compiler "gute" Arbeit gemacht hat.
Interessant fand ich die Aussage, dass ein Compiler den Sourcecode analysiert und, weil die Compilerbauer ja schliesslich am Besten die Zielarchitektur kennen, "automatisch" den besten Code generiert!
Anders herum gesagt, ein Mensch in Form eines ASM-Programmierers sei im Vergleich zum Compiler maximal "gleich gut".
Wir brauchen hier nicht über die Vorteile einer HLL zu sprechen, aber dass heutzutage von Professoren im (Informatik-) Studium auf Nachfrage zu ASM mit "Vergessen Sie´s!" geantwortet wird, finde ich höchst bedenklich! Wer anderes als der Programmierer soll denn in der Lage sein, sein "Produkt" in Form von erstelltem Code zu bewerten?! Nicht in den vom Compiler erstellten Code zu schauen und dort ggf. "Fehler" oder bestenfalls Optimierungsmöglichkeiten zu entdecken ist imho doch die totale Ablehnung und Ignoranz eines "normalen" Entwicklungsprozesses!
In keinem anderen Ingenieurwesen darf die Verifizierung des Ergebnisses und die Bewertung dessen fehlen. Ein Schweißingenieur lässt definitiv seine Nähte röntgen/brechen. Ein Bauingenieur muss einen Nachweis erbringen bzgl. statischer Festigkeit/Stabilität.
Der "Softwareingenieur" hingegen gibt seinen Code ein, haut auf F5 und der Compiler hat "automatisch" den besten (nicht von Menschen zu verbessernden) Code erstellt?!
Ja, hier geht es darum, ob Quellcode schreiben und auf F5 hauen "reicht" im Sinne von "es läuft doch" (schnell genug)!
Ist Programmieren nichts anderes als das zusammenfügen "fertiger" Funktionen/Bibliotheken, und zu denken "es wird so schon passen"?
Wie programmiert/compiliert ihr? Ist (Code-)Optimierung überflüssig/überbewertet?