Ich habe neulich einen Artikel in der Gamestar/dev gelesen und es ist schon recht interessant, was der Programmierer der FarCry2-Engine dazu zu sagen hat.
Vor ein paar Jahren war es so, dass man ein Programm optimieren konnte, nicht nur durch Verwendung passender Programmiersprachen, sondern durch intensives Anwenden von Gehirnschmalz in der Programmlogik.
Inzwischen sieht es anders aus. Die Hardwareentwicklung schreitete und schreitet zu schnell voran, als dass die Besten Coder noch optimieren könnten. Außerdem sind sehr viele Fälle zu berücksichtigen, jede GPU/CPU/FPU etc. will anders programmiert werden. Selbst Leute, die aus logischen Gründen optimieren müssten, lassen das (vom Compiler) erledigen.
Warum läuft <Spiel hier> nicht auf ner GeForce4 ? Weil die Entwickler nicht darauf optimiert haben und die rohe Rechenleistung zu gering ist, dank ineffizientem Code.
Warum verlangt <anderes Spiel hier> einen Prozessor über 3 GHz? Weil die Rechenleistung verbraten wird, ohne das einzudämmen.
Warum laufen auf einer Playstation mit 33 Mhz und 4 MB RAM Spiele, die auf einem gleichartig ausgestattetem PC nie laufen könnten? Weil auf Konsolen dank identischer Hardware optimiert werden kann.
Hier könnte ich fortfahren, es gibt noch weitere Gründe, die das Schreiben von Software in der heutigen Zeit schwierig machen, wenn man die Leistungsgrenzen ausreizen will. Eine DualCore-CPU hat zwar zwei Hardware-Threads, aber der eine blockiert tlws. den anderen; im Gegensatz zu "echtem" Multitasking. Will man die CPU ausreizen, muss man das berücksichtigen und so weiter und so fort.
Was ich damit sagen will: Wäre die Hardwareentwicklung nicht so schnell am voranschreiten, würden wir mit bedeutend weniger Rechenleistung gleiche und bessere Resultate erzielen, einfach, weil viele Programmierer die Innereien besser kennen würden.
Was interessiert heute noch der Unterschied zwischen MOV AX,0 und XOR AX,AX ? Das macht ein guter Assembler gleich mit weg. Optimierung beginnt viel tiefer, nämlich im Konzept.
Und später ist die Implementierung in einer höheren Sprache übersichtlicher. Assembler ist nicht tot, wird nie sterben, aber die Benutzung sollte auf ein Minimum reduziert werden.
Das sage ich, der ich Assembler kann und C nicht. Aber so ist die Realität, verursacht durch Marktwirtschaft.
Gruß,
Svenska