Übersetzen von menschlicher Sprache in ComputerspracheBearbeiten
Moderne Computer sind sehr komplex und um sie produktiv zu programmieren, sind verschiedene Abstraktionen erforderlich. Programmierwerkzeuge wie Assembler, Compiler und Linker übersetzen ein Programm von einer vom Menschen schreibbaren und lesbaren Quellsprache in Bits und Bytes, die von einem Computer ausgeführt werden können. Interpreter interpretieren das Programm im laufenden Betrieb, um das gewünschte Verhalten zu erzeugen.
Diese Programme führen viele genau definierte und sich wiederholende Aufgaben aus, die jedoch zeitaufwendig und fehleranfällig wären, wenn sie von einem Menschen ausgeführt würden, wie z.B. das Anordnen von Programmteilen im Speicher und das Reparieren der Verweise zwischen Programmteilen, wie es ein Linker tut.
Optimierende Compiler hingegen können komplexe Umwandlungen des Quellcodes vornehmen, um die Ausführungsgeschwindigkeit oder andere Eigenschaften eines Programms zu verbessern. Auf diese Weise kann sich ein Programmierer mehr auf übergeordnete, konzeptionelle Aspekte eines Programms konzentrieren, ohne sich um die Details der Maschine zu kümmern, auf der es läuft.
Programminformationen für den Menschen verfügbar machenBearbeiten
Aufgrund der hohen Komplexität von Software ist es selbst für den erfahrensten Softwareentwickler nicht möglich, die meisten Programme auf einen Blick zu verstehen.
Die Abstraktionen, die durch Hochsprachen zur Verfügung gestellt werden, erschweren auch das Verständnis des Zusammenhangs zwischen dem von einem Programmierer geschriebenen Quellcode und dem tatsächlichen Verhalten des Programms.Um Fehler in Programmen zu finden und um zu verhindern, dass bei der Erweiterung eines Programms neue Fehler entstehen, verwendet ein Softwareentwickler einige Programmierwerkzeuge, um alle Arten von Informationen über Programme zu visualisieren.
Ein Debugger ermöglicht es einem Programmierer beispielsweise, Informationen über ein laufendes Programm in Bezug auf die zur Programmierung verwendete Quellsprache zu extrahieren.
Der Debugger kann den Wert einer Variablen im Quellprogramm aus dem Zustand der konkreten Maschine berechnen, indem er die vom Compiler gespeicherten Informationen verwendet. Speicher-Debugger können direkt auf fragwürdige oder völlig falsche Speicherzugriffe laufender Programme hinweisen, die sonst unentdeckt bleiben und eine häufige Quelle für Programmfehler sind.