Programme und Algorithmen

4 min 2 Abschnitte
Was du nach diesem Konzept kannst 3
  1. Du bist in der Lage, die praktischen Unterschiede zwischen kompilierten und interpretierten Programmiersprachen zu vergleichen ,

    indem Aspekte wie Entwicklungsgeschwindigkeit, Plattformunabhängigkeit und Ausführungsperformance anhand von Beispielen (z. B. C vs. Python) gegenübergestellt werden.

  2. Du bist in der Lage, die Konzepte Programm und Algorithmus zu differenzieren ,

    indem die jeweiligen Definitionen und die Beziehung zwischen ihnen (z. B. ein Programm als konkrete Implementierung eines abstrakten Algorithmus) erläutert werden.

  3. Du bist in der Lage, den Prozess der Umwandlung von Quellcode in ausführbare Programme zu erklären ,

    indem die Unterschiede zwischen Compiler und Interpreter sowie die jeweiligen Schritte der Übersetzung und Ausführung beschrieben werden.

Wie unterscheiden sich Algorithmus und Programm?

Der Algorithmus: Die sprachunabhängige Logik

Aus deinem Vorwissen zu Algorithmen und Komplexität weißt du bereits, dass ein Algorithmus eine präzise Lösungsvorschrift für ein Problem ist. Der entscheidende Punkt bei der Abgrenzung zum Programm ist: Ein Algorithmus ist rein konzeptionell und abstrakt. Er existiert völlig unabhängig von Computern, Betriebssystemen oder spezifischen Programmiersprachen. Ob du ihn als Flussdiagramm, in Pseudocode oder als einfachen Text formulierst – die zugrundeliegende Logik bleibt identisch. Er ist der universelle, theoretische Bauplan zur Lösung eines Problems.

Das Programm: Die maschinenlesbare Implementierung

Ein Programm ist die konkrete Implementierung dieses abstrakten Algorithmus. Es übersetzt den universellen Bauplan in die strikte Syntax einer spezifischen Programmiersprache (wie Python, Java oder C). Erst durch diese Übersetzung wird der Algorithmus für den Computer verständlich und ausführbar. Während der Algorithmus die Frage "Was ist die logische Lösung?" beantwortet, klärt das Programm die Frage "Wie führt diese spezifische Maschine die Lösung aus?". Ein einzelner Algorithmus kann somit in hunderten verschiedenen Programmen implementiert werden.

Vom Konzept zum Code: Ein Praxisbeispiel

Stell dir vor, du möchtest den höchsten Wert in einer Liste finden.

Der Algorithmus (abstrakt): "Nimm das erste Element als bisheriges Maximum. Vergleiche jedes weitere Element damit. Wenn es größer ist, wird es das neue Maximum."

Das Programm (konkret in Python):

def finde_maximum(zahlen):
    maximum = zahlen[0]
    for zahl in zahlen:
        if zahl > maximum:
            maximum = zahl
    return maximum

Hier siehst du, wie die abstrakte Logik durch dir bereits bekannte Konzepte wie Schleifen und Verzweigungen in ausführbaren Code gegossen wird. Das Programm ist die greifbare, maschinenlesbare Realität des Algorithmus.

Programme und Algorithmen — dec-software-engineering-programming-basics-basic-concepts-programs-and-algorithms_page1.svg

Wie wird Quellcode in ausführbare Programme umgewandelt?

Compiler: Die vollständige Vorab-Übersetzung

Ein Compiler übersetzt den gesamten, von dir geschriebenen Quellcode in einem einzigen Durchlauf in Maschinensprache, bevor das Programm gestartet wird. Das Resultat ist eine eigenständige, ausführbare Datei (z. B. eine .exe-Datei unter Windows). Der Prozessor kann diese Datei direkt und ohne weitere Übersetzungshilfe ausführen. Der Übersetzungsvorgang (Kompilierung) findet nur einmalig statt, es sei denn, du änderst den Quellcode. Ein großer Vorteil: Syntaxfehler werden hierbei schon vor der Ausführung vom Compiler erkannt und gemeldet.

Interpreter: Die schrittweise Übersetzung zur Laufzeit

Ein Interpreter erzeugt keine vorab übersetzte, ausführbare Datei. Stattdessen liest er den Quellcode Zeile für Zeile und übersetzt jede Anweisung erst in dem Moment in Maschinensprache, in dem sie während der Laufzeit ausgeführt werden soll. Der Interpreter arbeitet wie ein:e Simultandolmetscher:in und muss bei jedem einzelnen Programmstart erneut aktiv werden, um den Code live zu übersetzen.

Kompiliert vs. Interpretiert: Der Praxisvergleich

Die Wahl der Übersetzungsmethode hat direkte Auswirkungen auf die Praxis. Vergleichen wir eine kompilierte Sprache (C) mit einer interpretierten Sprache (Python):

  • Ausführungsperformance: Kompilierte Programme (C) sind in der Regel deutlich schneller, da der Code bereits optimal für den Prozessor vorliegt. Python-Programme sind langsamer, da die schrittweise Übersetzung zur Laufzeit zusätzliche Rechenleistung kostet.
  • Entwicklungsgeschwindigkeit: Python punktet hier enorm. Du kannst Codeänderungen sofort testen. Bei C musst du nach jeder Änderung den teils zeitaufwändigen Kompilierungsprozess abwarten, bevor du das Ergebnis siehst.
  • Plattformunabhängigkeit: Ein in C kompiliertes Programm läuft nur auf dem Betriebssystem, für das es kompiliert wurde (z. B. Windows). Python-Code ist plattformunabhängig: Das exakt gleiche Skript läuft auf Windows, Linux oder macOS, solange auf dem Zielsystem ein passender Python-Interpreter installiert ist.
Programme und Algorithmen — dec-software-engineering-programming-basics-basic-concepts-programs-and-algorithms_page2.svg

Teste dein Wissen

Du entwirfst auf einem Whiteboard ein Flussdiagramm für einen neuen Login-Prozess. Deine Kollegin nennt dies bereits ein fertiges Programm. Welcher Denkfehler liegt hier vor?

Bereit für mehr?

Thema verstanden?

Teste dein Wissen interaktiv in unserer App. 7 Tage kostenlos, dann nur 5 € im Monat.