Posted on Leave a comment

Programmierparadigma: Was ist das?

programmierparadigma

Programmierparadigma: Was ist das?

Wenn Sie mit dem Programmieren lernen begonnen haben, sind Sie wahrscheinlich bereits auf den Begriff Programmierparadigma gestoßen. Vielen Programmieranfängern fällt es jedoch schwer, genau zu verstehen, was ein Programmierparadigma genau ist. Zwar haben sie eine grobe Vorstellung davon, dass es sich dabei um einen gewissen Stil handelt, mit dem die Programme erstellt werden und dass unterschiedliche Programmiersprachen auch verschiedene Paradigmen unterstützen. Dennoch fehlt ein klares Verständnis, was ein Programmierparadigma genau ist. Deshalb gehen wir dieser Frage nun nach. Dabei stellen wir vor, was ein Programmierparadigma auszeichnet, welche Verbindung zu den verschiedenen Programmiersprachen besteht und außerdem stellen wir die wichtigsten Vertreter in diesem Bereich vor.

Prinzipien für die Codeerstellung und die Lösung von Problemen

Wenn ein Computerprogramm ausgeführt wird, heißt das auf einer physischen Ebene lediglich, dass  der Prozessor verschiedene elektrische Impulse erhält und daraufhin andere Impulse aussendet. Wenn man diese Impulse für sich alleine betrachtet, haben sie für den Anwender keine Bedeutung. Diese erhalten sie erst mit einer zunehmenden Abstraktion. Der erste Schritt besteht beispielsweise darin, dass verschiedene Abfolgen als Zahlen, Buchstaben oder andere Werte dargestellt werden. Erst durch diese Abstraktion erhält das Programm einen Sinn.

Diese Abstraktion ist nicht nur bei der Ausführung von Bedeutung, sondern auch bei der Gestaltung eines Programms. Ganz am Anfang der Computertechnik war es notwendig, die Programme in Maschinensprache zu erstellen. Das bedeutet, dass man genau die Impulse vorgeben musste, die dem Prozessor zugeschickt werden. Eine erste Abstraktion bestand dann in der Einführung sogenannter Assembler-Sprachen. Diese ersetzen lediglich eine bestimmte Impulsfolge durch einen Befehl der menschlichen Sprache. Dabei ist es nach wie vor notwendig, jeden einzelnen Befehl genau vorzugeben. Allerdings machten die entsprechenden Ausdrücke die Programmgestaltung bereits wesentlich einfacher.

Später erreichte die Abstraktion eine weitere Ebene – durch die Einführung der sogenannten höheren Programmiersprachen. Damit war es nicht mehr notwendig, dass die verwendeten Befehle genau mit den Befehlen für den Prozessor übereinstimmen. Höhere Programmiersprachen erlauben eine wesentlich größere Freiheit bei der Gestaltung der Programmelemente. Das machte es jedoch notwendig, ein Konzept zu entwickeln, wie diese in der Programmiersprache repräsentiert werden. Hier kommen die verschiedenen Programmierparadigmen ins Spiel. Diese beschreiben das Konzept, das für die Repräsentation der Programmelemente zum Einsatz kommt. Das bezieht sich zum einen auf statische Elemente wie Variablen, Konstanten oder Objekte. Diese beschreiben den Zustand des Programms und der zugehörigen Werte. Zum anderen betreffen diese Konzepte auch die dynamischen Elemente, die den Ablauf des Programms steuern. Beispiele hierfür sind Zuweisungen sowie Elemente der Ablaufsteuerung wie Verzweigungen und Schleifen. Das Programmierparadigma gibt vor, wie diese Elemente dargestellt werden sollen und welche Regeln beim Umgang mit ihnen zu beachten sind.

C Programmieren für Einsteiger 18.99 € Verfügbar In den Warenkorb

Unterstützung durch verschiedene Programmiersprachen

Immer wieder hört man, dass es objektorientierte, funktionale, imperative oder deklarative Programmiersprachen gibt. Dabei handelt es sich um eine Aussage darüber, welches Programmierparadigma sie unterstützen. Das zeigt bereits, dass es einen engen Zusammenhang zwischen der Programmiersprache und dem Programmierparadigma gibt.

Allerdings handelt es sich hierbei in den seltensten Fällen um feste Vorgaben. Zwar wird an der Gestaltung der jeweiligen Sprache meistens deutlich, welches Paradigma bei der Gestaltung im Vordergrund stand. Allerdings ist es fast immer möglich, auch andere Paradigmen umzusetzen. Das bedeutet, dass es stärker vom Stil des Programmierers abhängt, welchem Paradigma ein Programm entspricht, als von der gewählten Sprache. Mittlerweile gibt es sogar viele sogenannte Multiparadigmen-Sprachen, die so konzipiert sind, dass sie mehrere Möglichkeiten unterstützen.

Die wichtigsten Programmierparadigmen

Nachdem Sie einen Überblick darüber erhalten haben, was ein Programmierparadigma ist, ist es nun noch interessant, einige wichtige Beispiele dafür vorzustellen. Dabei müssen Sie jedoch beachten, dass es hierbei keine einheitliche Klassifizierung gibt, die allgemein akzeptiert ist. Das liegt daran, dass sich die verschiedenen Stile häufig gegenseitig überschneiden. Das macht eine genaue Klassifizierung schwierig. Ein Beispiel hierfür ist die Unterscheidung zwischen imperativer und objektorientierter Programmierung. Die objektorientierte Programmierung weist viele Merkmale der imperativen Programmierung auf. Daher sehen viele Informatiker darin eine Untergruppe derselben. Andere Vertreter heben hingegen die Unterschiede hervor und gehen deshalb davon aus, dass es sich dabei um ein eigenes Programmierparadigma handelt. Deshalb stellen die unten vorgestellten Paradigmen nur eine Möglichkeit für die Einteilung dar.

Imperative Programmierung

Die imperative Programmierung ist das älteste Programmierparadigma und bis heute weisen die meisten Programmiersprachen starke imperative Elemente auf. Der Grundsatz besteht hierbei darin, dass das Programm aus einzelnen Anweisungen besteht, die genau vorgeben, was der Prozessor tun soll und welche Reihenfolge er dabei beachten soll. Das entspricht der Vorstellung, die die meisten Menschen von einem Computerprogramm haben. Beispiele für imperative Programmiersprachen sind C, Pascal, COBOL und viele weitere. Auch die bereits besprochenen Assemblersprachen befolgen diese Vorgehensweise. Das zeigt auch, dass die imperative Programmierung stark an den tatsächlichen Abläufen auf der Hardware ausgerichtet ist. Das Abstraktionsniveau ist daher recht gering.

Eine der wichtigsten Untergruppen der imperativen Programmierung ist die prozedurale Programmierung. Diese unterteilen das Programm in einzelne Teilstücke, die als Prozeduren bezeichnet werden. Diese Prozeduren lassen sich aber auf unterschiedliche Weise zusammensetzen und in verschiedener Reihenfolge ausführen. Das führt dazu, dass der Ablauf des Programms häufig nicht der Reihenfolge der Befehle im Code entspricht. Alle oben genannten imperativen Programmiersprachen unterstützen auch die prozedurale Programmierung – mit Ausnahme der Assemblersprachen. Die Unterstützung von Prozeduren gilt daher als eines der wesentlichen Unterscheidungskriterien zwischen den sogenannten Hochsprachen und den Assemblersprachen, die lediglich die physischen Abläufe auf dem Rechner repräsentieren.

Weitere Untertypen sind die strukturierte und die modulare Programmierung. Die zentrale Forderung der strukturierten Programmierung besteht darin, Sprünge im Programm zu vermeiden (die in C beispielsweise mit der Anweisung goto möglich sind). Diese sind sehr fehleranfällig und können bei größeren Projekten zu erheblichen Problemen führen. Die modulare Programmierung unterteilt ein Programm in separate Module, die sich anschließend zusammensetzen lassen. Auch das ist bei größeren Projekten sehr sinnvoll. Beide Ansätze weisen jedoch nur relativ geringe Unterschiede zur ursprünglichen imperativen Programmierung auf.

C Programmieren für Einsteiger 18.99 € Verfügbar In den Warenkorb

Deklarative Programmierung

Deutlich neuer – und wesentlich abstrakter – ist der Ansatz der deklarativen Programmierung. Während ein imperatives Programm vorgeben muss, wie ein Problem zu lösen ist, beschränkt sich die deklarative Programmierung darauf, was zu tun ist – also welches Ergebnis gewünscht ist. Der Programmierer ist daher nicht dafür verantwortlich, einen Lösungsweg vorzugeben. Dieser Ansatz unterscheidet sich in hohem Maße von den bisherigen Konzepten für die Gestaltung einer Programmiersprache.

Auch hierbei gibt es weitere Unterteilungen. Von besonderer Bedeutung ist die funktionale Programmierung. Diese beschreibt das gewünschte Ergebnis anhand einer Serie aus Funktionen. Eine weitere Möglichkeit stellt die logische Programmierung dar. Dabei muss der Programmierer Fakten und Regeln vorgeben. Daraufhin kann er Anfragen an das Programm stellen. Dieses beantwortet sie anhand der zuvor aufgestellten Fakten und Regeln. Wie es zu diesem Ergebnis kommt, kann der Programmierer jedoch nicht beeinflussen. Das hängt von der Implementierung der entsprechenden Programmiersprache ab.

Objektorientierte Programmierung

Ein Programmierparadigma, das in der modernen Informatik von enormer Bedeutung ist, ist die objektorientierte Programmierung. Wie bereits angemerkt, übernimmt diese viele Eigenschaften der imperativen Programmierung, weshalb sie häufig auch als Untergruppe derselben dargestellt wird. Allerdings bestehen dabei erhebliche Unterschiede hinsichtlich des Umgangs mit den Daten im Programm.

Dieses Programmierparadigma geht davon aus, dass es verschiedene Objekte gibt, die jeweils eine eigene Identität haben und die miteinander kommunizieren können. Ein Objekt kann Nachrichten an andere Objekte senden, die deren Zustand beeinflussen. Der Versand dieser Nachrichten erfolgt jedoch genau den Vorgaben, die der Programmierer macht. Das unterstreicht den imperativen Charakter dieses Paradigmas.

Weitere Programmierparadigmen

In den vorherigen Absätzen haben wir nur die wichtigsten Programmierparadigmen vorgestellt. Es gibt allerdings noch viele weitere Ansätze. Hierzu zählen die subjektorientierte Programmierung, die generische Programmierung, die aspektorientierte Programmierung, die datenstromorientierte Programmierung sowie einige weitere. Deren Grundlagen vorzustellen, würde den Rahmen dieses Artikels sprengen. Dennoch ist es wichtig, dass Sie wissen, dass es noch viele weitere Möglichkeiten gibt.

Fazit: Das Programmierparadigma hat einen großen Einfluss auf die Programmgestaltung

Der Artikel hat gezeigt, dass das gewählte Programmierparadigma einen großen Einfluss auf die Ausarbeitung eines Programms hat. Es gibt vor, wie Sie die Daten und die Abläufe steuern können. Die Programmiersprache spielt hierbei eine wichtige Rolle – diese ist meistens anhand eines dieser Paradigmen erstellt. Das bedeutet jedoch nur, dass sie die Umsetzung dieses Paradigmas erleichtert. Allerdings sind diese Vorgaben meistens nicht allzu streng und viele Sprachen unterstützen auch mehrere Paradigmen. Daher können Sie als Programmierer meistens selbst entscheiden, welchen Ansatz Sie wählen. Das hängt selbstverständlich von Ihren persönlichen Vorlieben ab. Allerdings ist es auch stets ratsam, sich genau zu überlegen, welches Paradigma sich am besten für das Problem eignet, das Sie mit Ihrem Programm lösen möchten.

Bildquelle: https://unsplash.com/es/fotos/DuHKoV44prg

Ähnliche Produkte

Schreibe einen Kommentar