5.2.2 Programmierparadigmen

Die der Programmiersprache zugrunde liegende Technik oder das Vorbild nennt man das Programmierparadigma. Es gibt eine Vielzahl von Paradigmen1, deswegen hier nur die wichtigsten: Imperatives, Prozedurales, Objektorientiertes und Aspektorientiertes Programmieren.

Imperatives Programmieren

Die Imperative Programmierung wird auch zustandsorientierte Programmierung genannt. Die Abarbeitung der Befehle ist sequenziell und linear. Mit bedingten Sprüngen kann der Kontrollfluss beeinflusst werden.

Prozedurales Programmieren

Das Prozedurale Programmieren ist eine Erweiterung des imperativen Programmierens. Man kann kleine Codeabschnitte in Prozeduren auslagern und diese wiederverwenden. Der Compiler oder Parser setzt für jeden Aufruf einer Prozedur deren Code ein, so dass es sich intern nicht vom Ergebnis des imperativen Programmierens unterscheidet. Daten und Prozeduren (Funktionen) werden getrennt betrachtet. In eine Prozedur kommen Daten über Parameterübergabe hinein oder es ist der Zugriff auf global definierte Variablen möglich.

Objektorientiertes Programmieren

Die Objektorientierte Programmierung ist der Versuch, so zu programmieren, wie der Mensch die Umwelt wahrnimmt (Beispiel: Ein Auto wird als Objekt wahrgenommen und dieses Objekt hat 4 Räder, die ebenfalls Objekte sind. Das Auto wird über die Rahmennummer identifiziert, die eindeutig ist und sich nicht ändert). Es werden Funktionen (bei Objekten Methoden genannt) und Daten zusammen in einem Objekt gespeichert (Datenkapselung). Ein Objekt besitzt eine bestimmte Schnittstelle, über die auf das Objekt zugegriffen werden kann. Ein Zugriff auf die Daten muss explizit erlaubt sein. In Java wird z.B. über sog. Getter/Setter-Methoden auf die Daten zugegriffen.

Aspektorientieres Programmieren (AOP)

"Bei der Aspektorientierten Programmierung wird der objektorientierte Begriff der Klasse zum Aspekt erweitert und ermöglicht so orthogonale Programmierung."[Wikipedia] So kann man z.B. den Aspekt Methodenaufruf benutzen, um jeden Methodenaufruf zu loggen, was für Zeitmessungen (Profiling) oder Debugging benutzt werden könnte. So muss man nicht den gesamten Quellcode mit manuell hinzugefügten Logausgaben verschmutzen und unübersichtlich machen und spart auch eine Menge Zeit und damit Geld.