Paradigma

Definition

Denkmuster, das das wissenschaftliche Weltbild, die Weltsicht einer Zeit prägt.

Ein Softwareentwicklungsparadigma bestimmt wie etwas modelliert werden kann. Es wirkt lenkend oder einschränkend. Nicht jedes Paradigma ist für das Verständnis und die Modellierung eines Problems gleichermaßen geeignet

Spezielle Paradigmen

Imperatives Paradigma

  • Orientiert sich an der Verarbeitung durch die zu Grunde liegende Rechnerhardware
  • Imperativ: Programm beschreibt Berechnungen der gewünschten Lösung
  • Programmbefehle lesen Werte aus Variablen aus, führen Berechnungen durch und weisen Variablen Ergebnisse zu
  • Sequenzielle Abarbeitung
  • Verzweigungs- und Wiederholungskonstrukte
  • Operationen sind ohne Zustand → Ergebnis nur von Parametern abhängig
  • Typische Sprachen: Basic, Pascal, C

Paradigma der Datenabstraktion

  • Verkapselung von Zugriffsoperationen & Daten → Zugriff nur über Zugriffsoperation
  • Ein Datenobjektmodul beschreibt ein abstraktes Datenobjekt und legt genau ein Exemplar an
  • Sprachen: Modula-2, Ada
  • Bei ADTs sind Typdefinition & Variablenvereinbarung getrennt
    • zu einem ADT können mehrere Exemplare existieren
  • ≡ Klassen der Objektorientierung ohne Vererbung und spätes Binden
  • Abstrakte Datenobjekte & ADTs sind Spezialisierungen des Imperativen Paradigmas

generisches Paradigma

  • Baut auf parametrischer Polymorphie auf
  • Parametrisierung von Typen & Verhalten
  • Ein generischer ADT erlaubt Vereinbarungen von Typparametern
  • Generische ADTs & Funktionen werden zur Übersetzungszeit instantiiert und unterliegen der Typprüfung des Compilers
  • Nicht eigenständig, kann aber mit verschiedenen anderen Paradigmen kombiniert werden
  • Sekundäres/nachgeordnetes Paradigma

Objektorientiertes Paradigma

  • Wurzelt im ADT-Konzept → Erweitert ADTs um Vererbung & spätes Binden
  • Dominierendes und allseits akzeptiertes Paradigma der Softwareentwicklung
  • Klasse entspricht weitgehend ADT mit eigenen Regeln
    • Abgeleitete Klasse erbt alle Attribute & Operationen der Elternklasse
    • Neue Attribute & Operationen können hinzukommen
    • Aber: nichts kann wegfallen
    • Operationsimplementierungen können überschrieben werden
    • Der Typ geerbter Attribute kann nicht redefiniert werden

Aspektorientiertes Paradigma

  • Trennung von Fachcode & Aspektcode → Prinzip der Trennung von Belangen (SoC)
    • Steigerung von Verständlichkeit, Wartbarkeit und Wiederverwendbarkeit von fachlichem Code und Aspektcode
    • „aspect weaver“ fügt fachlichen & Aspektcode gemäß Spezifikation zur Übersetzungs- oder Laufzeit zusammen
  • Kein eigenständiges → sekundäres Paradigma

Funktionales Paradigma

  • Am Konzept der mathematischen Funktionen orientiert
    • Keine Variablen, keine Zuweisung, keine Wiederholungskonstrukte
  • Ausführung einer Funktion ergibt stets neuen Wert, der an neuen Bezeichner gebunden werden kann → keine Seiteneffekte
  • „atemporale“ Programmierung
    • Eine Funktion kann erst aufgerufen werden, wenn alle ihre Eingangsparameter vorhanden sind
    • Eine Funktion muss erst aufgerufen werden, wenn ihr Ergebnis benötigt wird
    • Vorteile bezüglich Optimierung und Korrektheitsbeweisen

Logisches oder Deklaratives Paradigma

  • Repräsentation & Verarbeitung von Wissen getrennt
  • Wichtigste Repräsentationsform für Wissen sind Regeln
    • Bestehen aus Bedingungen & Aktionen
    • Aktionen werden durchgeführt, wenn Bedingungen erfüllt sind
    • Aufbereitung in Entscheidungstabellen / -bäumen
    • Regeln leiten neues Wissen her → Speicherung in Datenbasis → zusammen mit A-priori-Fakten
    • Wissensgewinnung erfolgt mittels Vorwärtsverkettung (Wenn Bedingung erfüllt tritt Regel in kraft (feuert)) oder Rückwärtsverkettung (um Ziel zu beweisen werden Regeln überprüft)
  • Typische Sprache: Prolog

Kontext

Weiterführende Beiträge


Navigation

Alphabetischer Index
Akronyme