Aus dem Kurs: Grundlagen der Programmierung: Basiswissen

Wie funktioniert ein Compiler?

Aus dem Kurs: Grundlagen der Programmierung: Basiswissen

Wie funktioniert ein Compiler?

Die Programmersprachen, die wir nutzen, sind in aller Regel daraufhin optimiert, dass wir Menschen sie lesen können. Sie sind jedoch nicht darauf optimiert, dass Maschinen, auf denen unsere Programme ausgeführt werden, sie verstehen. Aus diesem Grund müssen wir unsere Programme übersetzen. Die verschiedenen Strategien, die dabei verfolgt werden, möchte ich Ihnen in diesem Video vorstellen. Zu diesen Strategien gehören das Kompilieren, Interpretieren, Transpilieren und deren jeweiligen Hybridformen. Beim Kompilieren übersetzt ein Compiler den Code einer Sprache direkt in maschinenverständliche Bytecode. Der große Unterschied zu anderen Strategien, die wir uns hier noch ansehen werden, ist die Menge an Optimierungen, die bei einer solchen Übersetzung vorgenommen werden. Diese Optimierungen sorgen dafür, dass der entstehende Code möglichst optimal durch die Maschine verarbeitet wird, aber für uns Menschen nur noch sehr schwer zu verstehen ist. Dabei kann es sein, dass ein Programm gezielt für bestimmte Hardware kompiliert wird, um aus dieser Hardware die möglichst beste Leistung herauszuholen. Das führt dann aber auch zu gewissen Schwierigkeiten in dem so entstandenen Code Fehler zu finden. Aus diesem Grund geht man häufig dazu über, seinen Code zweistufig zu kompilieren: einmal für Testzwecke und während der Entwicklung als Debug-Version. Letztere enthält zum einen zusätzliche Informationen für uns Programmiererinnen und Programmierer und zum anderen eine optimierte Release-Version ohne diese Zusatzinformationen. Typische Vertreter kompilierter Sprachen sind C und C++. Auch wenn kompilierte Code sich schnell ausführen lässt, hat doch einen großen Nachteil: Er muss eben kompiliert werden. Und dieses Kompilieren kann in größeren Projekten durchaus einige Zeit in Anspruch nehmen. Dadurch kann es schwierig werden, den Code nachträglich zu ändern, zumal dieser nach der Kompilierung an die Plattform gebunden ist. Aus diesem Grund hat sich gerade für Skriptsprachen ein weiteres Vorgehen etabliert. Bei diesem wird statt eines Compilers ein sog. Interpreter eingesetzt. Den schauen wir uns dann im nächsten Film an.

Inhalt