Programmiertrick
Ein Programmiertrick ist eine Vorgehensweise bei der Programmierung, bei der durch nicht vorgesehenes Ausnutzen von Eigenheiten der Programmiersprache bzw. der Soft- und Hardware-Umgebung Effekte erzielt werden, die bei lehrbuchmäßiger Programmierung größeren Aufwand erfordern würden oder gar nicht möglich wären. Die Grenze zwischen "konventioneller" Programmierung und Programmiertrick ist fließend. Die allgemeine Bezeichnung für derartige Vorgehensweisen heißt Hack.
Eingesetzt werden Programmiertricks zu vielfältigen Zwecken:
- Schnellerer Programmablauf (Performance)
- Geringerer Speicherverbrauch
- Umgehung von Soft- und Hardware-Fehlern (Bugs)
- Umgehung von Beschränkungen der Soft- und Hardware-Umgebung
- Verschleierung von Programmfunktionen (z. B. zur Realisierung eines Kopierschutzes)
- Kompakterer Quellcode (Einsparung von Tipparbeit)
Besonders verbreitet ist die Nutzung von Programmiertricks in der Demoszene, insbesondere wenn es um das Ausreizen der Fähigkeiten älterer Computersysteme (C64, Amiga) oder mobiler Endgeräte (z. B. PDA) geht. Aufgrund der vielen Nachteile, u. a. schlecht verständlicher Code, eingeschränkte Portabilität und die Gefahr von Kompatibilitätsproblemen, sollte die Nutzung von Tricks in "normalen" Programmen dagegen möglichst vermieden werden.
Beispiele
Bearbeiten- Der XOR-Trick
- Der x86-Assemblersprachenbefehl
"XOR EAX, EAX"
führt vordergründig eine XOR-Operation des EAX-Registers (auch andere Register sind möglich) auf sich selbst aus, der Inhalt des Registers wird dabei auf 0 (Null) gesetzt. Damit ist dieser Befehl äquivalent zu"MOV EAX, 0"
, spart aber 4 Bytes an Speicherplatz. - Undokumentierte Befehle
- Ältere Prozessorarchitekturen, z. B. die 6502-Familie, konnten Befehle ausführen, die in der Spezifikation der CPU nicht vorkamen. Durch Ausnützung dieser Befehle konnten häufig Speicherplatz und Taktzyklen eingespart werden, dafür bestand aber die Gefahr, dass der Code auf anderen Versionen des gleichen Prozessors nicht mehr funktioniert. Umgangssprachlich wird von „illegalen Opcodes“ gesprochen.
- Selbstmodifizierender Maschinencode
- Dieser Trick wird bei modernen Prozessoren nicht zur Performance-Steigerung benutzt (tatsächlich führt er sogar zu einer massiven Verlangsamung), ist aber für Verschleierungsmechanismen geeignet.
- Hacker-Folklore
- In einer bekannten im Usenet veröffentlichten Geschichte (The Story of Mel) über den archetypischen „Echten Programmierer“ Mel Kaye nutzt dieser u. a. einen Überlauf zur Steuerung einer Schleife.
Weblinks
Bearbeiten- Matt Crawford: The realest programmer of all. 20. November 1984, abgerufen am 30. Juli 2008 (englisch).