Pro­gram­mier­pa­ra­dig­men sind grund­le­gen­de Prin­zi­pi­en bei der Ent­wick­lung von Software. Am besten stellt man sie sich als fun­da­men­tal un­ter­schied­li­che Pro­gram­mier­sti­le vor, die ent­spre­chend un­ter­schied­lich struk­tu­rier­ten Soft­ware­code zur Folge haben.

Das klas­si­sche Konzept ist dabei die im­pe­ra­ti­ve Pro­gram­mie­rung, bei der im Quellcode klar definiert wird, welche Schritte ein Programm in welcher Rei­hen­fol­ge zu erledigen hat. Un­ter­ar­ten sind die pro­ze­du­ra­le und die ob­jekt­ori­en­tier­te Pro­gram­mie­rung. Nach dem Prinzip der de­kla­ra­ti­ven Pro­gram­mie­rung wird aus­schließ­lich be­schrie­ben, was eine Software erledigen soll (also nur das Ergebnis und nicht die einzelnen Schritte). Un­ter­ge­ord­net sind die funk­tio­na­le und die logische Pro­gram­mie­rung. Wie un­ter­schei­den sich die genannten Software-Pa­ra­dig­men von­ein­an­der?

Im­pe­ra­ti­ve Pro­gram­mie­rung: Der Klassiker der Pro­gram­mier­pa­ra­dig­men

Unter den Pa­ra­dig­men für die Software-Pro­gram­mie­rung ist die im­pe­ra­ti­ve Pro­gram­mie­rung der „Klassiker“. Die ersten Pro­gram­mier­spra­chen und dem­entspre­chend auch die ersten Com­pu­ter­pro­gram­me bauten gänzlich auf diesem klas­si­schen Ansatz auf, der eine geregelte Abfolge fest­ge­leg­ter Befehle (von lat. imperare „befehlen“) bzw. Hand­lungs­an­wei­sun­gen vorsieht. Unter anderem liegt dies Pro­gram­mier­pa­ra­dig­ma bei­spiels­wei­se den Ur­ge­stei­nen Pascal und C sowie allen As­sem­bler­spra­chen zugrunde. Bei der im­pe­ra­ti­ven Pro­gram­mie­rung liegt der Fokus unter anderem darauf, so nah wie möglich am System zu arbeiten. Der daraus re­sul­tie­ren­de Pro­gramm­code ist deshalb leicht ver­ständ­lich, aber auch sehr um­fang­reich.

Mit der struk­tu­rier­ten, der pro­ze­du­ra­len und der modularen Pro­gram­mie­rung sind dem im­pe­ra­ti­ven Pro­gram­mier­pa­ra­dig­ma drei weitere wichtige Ansätze zum Schreiben bzw. Struk­tu­rie­ren von Soft­ware­code un­ter­ge­ord­net.

Tipp

Mehr zum Paradigma der Im­pe­ra­ti­ven Pro­gram­mie­rung erfahren Sie in unserem ent­spre­chen­den Artikel, der tiefer in die Thematik einsteigt.

Struk­tu­rier­te Pro­gram­mie­rung

Beim struk­tu­rier­ten Pro­gram­mie­rungs­an­satz handelt es sich um eine ver­ein­fach­te Form der im­pe­ra­ti­ven Pro­gram­mie­rung. Die ent­schei­den­de Änderung zum Grund­prin­zip: Anstelle der absoluten Sprung­be­feh­le (An­wei­sun­gen, die dazu führen, dass die Ver­ar­bei­tung nicht mit dem nach­fol­gen­den Befehl, sondern an anderer Stelle wei­ter­ge­führt wird) sieht dieses Paradigma für die Software-Pro­gram­mie­rung den Einsatz von Kon­troll­schlei­fen bzw. -struk­tu­ren vor. Ein Beispiel hierfür ist die Nutzung von „do…while“, um eine Anweisung au­to­ma­tisch solange aus­zu­füh­ren, wie eine bestimmte Bedingung wahr ist (min­des­tens ein Mal).

Pro­ze­du­ra­le Pro­gram­mie­rung

Das pro­ze­du­ra­le Pro­gram­mier­pa­ra­dig­ma erweitert den im­pe­ra­ti­ven Ansatz um die Mög­lich­keit, Al­go­rith­men in über­schau­ba­re Teile auf­zu­glie­dern. Diese werden als Pro­ze­du­ren oder – je nach Pro­gram­mier­spra­che – auch als Un­ter­pro­gram­me, Routinen oder Funk­tio­nen be­zeich­net. Sinn und Zweck dieser Auf­tei­lung ist es, den Pro­gramm­code über­sicht­li­cher zu machen und unnötige Code-Wie­der­ho­lun­gen zu vermeiden. Durch die Abs­trak­ti­on der Al­go­rith­men stellt das pro­ze­du­ra­le Software-Paradigma einen ent­schei­den­den Schritt von einfachen As­sem­bler­spra­chen hin zu kom­ple­xe­ren Hoch­spra­chen dar.

Modulare Pro­gram­mie­rung

Auch die modulare Pro­gram­mie­rung wird als Unterform des im­pe­ra­ti­ven Pro­gram­mier­pa­ra­dig­mas ein­ge­stuft. Sie ist der pro­ze­du­ra­len Her­an­ge­hens­wei­se grund­sätz­lich sehr ähnlich bzw. überträgt diesen Pro­gram­mier­stil auf die An­for­de­run­gen und Ansprüche großer und um­fang­rei­cher Soft­ware­pro­jek­te. Hierfür wird der Quellcode gezielt in logische, von­ein­an­der un­ab­hän­gi­ge Teil­blö­cke auf­ge­spal­tet, um für mehr Über­sicht­lich­keit zu sorgen und den Debugging-Prozess (Feh­ler­be­he­bung) zu ver­ein­fa­chen. Die einzelnen Teil­blö­cke, die Module genannt werden, lassen sich nämlich einzeln testen, bevor sie im späteren Verlauf zu einer ge­mein­sa­men Anwendung verknüpft werden.

De­kla­ra­ti­ve Pro­gram­mie­rung: Software-Pa­ra­dig­men der jüngeren Ver­gan­gen­heit

Parallel zur kon­ti­nu­ier­li­chen Wei­ter­ent­wick­lung von Hard- und Software ent­wi­ckel­te sich mit dem de­kla­ra­ti­ven Ansatz ein al­ter­na­ti­ves Paradigma zur Code-Pro­gram­mie­rung. Das grund­le­gen­de Prinzip der de­kla­ra­ti­ven Pro­gram­mie­rung besteht dabei in er Be­schrei­bung des ge­wünsch­ten End­ergeb­nis­ses. Es geht also in der ersten Linie um das „Was“ des Er­geb­nis­ses und nicht um das „Wie“ der Lö­sungs­schrit­te, wie das bei der im­pe­ra­ti­ven Pro­gram­mie­rung der Fall ist. Dies führt dazu, dass Code aus de­kla­ra­ti­ver Pro­gram­mie­rung aufgrund des hohen Abs­trak­ti­ons­gra­des schwerer ver­ständ­lich, dafür aber sehr kurz und präzise ist.

Zwischen den Un­ter­for­men des de­kla­ra­ti­ven Pro­gram­mier­pa­ra­dig­mas selbst gibt es größere Un­ter­schie­de als innerhalb des im­pe­ra­ti­ven Stils. Zudem ist die genaue De­fi­ni­ti­on bzw. Ein­tei­lung nicht immer trenn­scharf. Die zwei wich­tigs­ten Ansätze des de­kla­ra­ti­ven Pro­gram­mier­pa­ra­dig­mas sind die funk­tio­na­le und die logische Pro­gram­mie­rung.

Tipp

Mehr zum Paradigma der De­kla­ra­ti­ven Pro­gram­mie­rung erfahren Sie im ent­spre­chen­den Artikel, der tiefer in die Thematik einsteigt.

Funk­tio­na­le Pro­gram­mie­rung

Funk­tio­nen gibt es in jeder höheren Pro­gram­mier­spra­che. Die funk­tio­na­le Her­an­ge­hens­wei­se in der Software-Ent­wick­lung behandelt Funk­tio­nen al­ler­dings auf besondere Art und Weise:

Ein funk­tio­nal pro­gram­mier­tes Programm besteht aus an­ein­an­der­ge­reih­ten Funk­ti­ons­auf­ru­fen, wobei jedes Pro­gramm­teil als Funktion auf­ge­fasst werden kann. Funk­tio­nen können dabei innerhalb der funk­tio­na­len Pro­gram­mie­rung ver­schie­de­ne „Gestalten“ annehmen. Sie lassen sich bei­spiels­wei­se wie Daten mit­ein­an­der ver­knüp­fen oder können in Form von Pa­ra­me­tern genutzt werden. Darüber hinaus können sie als Funk­ti­ons­er­geb­nis­se wei­ter­ver­wen­det werden. Im Um­kehr­schluss führt das Paradigma dazu, dass es keine ei­gen­stän­di­gen Zu­wei­sun­gen von Werten gibt.

Die Unterform der de­kla­ra­ti­ven Pro­gram­mie­rung ist sehr wichtig für die In­for­ma­tik im All­ge­mei­nen - und gleich­zei­tig sehr viel­fäl­tig ein­setz­bar. Die spezielle Be­hand­lung von Funk­tio­nen erlaubt es funk­tio­nal ar­bei­ten­den Pro­gram­mie­rern, weit­rei­chen­de neue Be­rech­nungs­vor­schrif­ten aus Funk­tio­nen zu­sam­men­zu­set­zen und an­zu­wen­den.

Tipp

Mehr zur Methode der Funk­tio­na­len Pro­gram­mie­rung erfahren Sie im ent­spre­chen­den Artikel, der tiefer in die Thematik einsteigt.

Logische Pro­gram­mie­rung

Das logische Software-Paradigma, das auch als prä­di­ka­ti­ve Pro­gram­mie­rung be­zeich­net wird, beruht auf der ma­the­ma­ti­schen Logik. Anstelle einer Folge von An­wei­sun­gen enthält eine Software, die nach diesem Prinzip pro­gram­miert wird, eine Menge von Grund­sät­zen, die sich als Sammlung von Fakten und Annahmen verstehen lässt. Jegliche Anfragen an das Programm werden ver­ar­bei­tet, indem der In­ter­pre­ter auf diese Grund­sät­ze zu­rück­greift und zuvor de­fi­nier­te Regeln auf diese anwendet, um zum ge­wünsch­ten Ergebnis zu kommen.

Pro­gram­mier­pa­ra­dig­men im Vergleich: Im­pe­ra­ti­ve und de­kla­ra­ti­ve Pro­gram­mie­rung

Im­pe­ra­ti­ves Pro­gram­mier­pa­ra­dig­ma De­kla­ra­ti­ves Pro­gram­mier­pa­ra­dig­ma
„Wie?“ „Was?“
Klassiker Neue Strömung
Ein Programm nach diesem Paradigma besteht aus auf­ein­an­der­fol­gen­den An­wei­sun­gen, die dem Computer vorgeben, was er in welcher Abfolge berechnen und tun soll. Ein Programm nach diesem Paradigma besteht aus An­wei­sun­gen, wie das Programm mit einer Eingabe zu verfahren hat. Be­rech­nun­gen erfolgen durch die Ma­ni­pu­la­ti­on von Werten, kon­trol­liert wird der Ablauf durch das Verfahren der Rekursion.
Der Name kommt von „imperare“, dem la­tei­ni­schen Wort für „befehlen“ Der Name von „declarare“, dem la­tei­ni­schen Wort für „be­zeich­nen“.
Der ge­wünsch­te Lö­sungs­weg wird vor­ge­ge­ben Das ge­wünsch­te Ergebnis wird vor­ge­ge­ben.
Typische Pro­gram­mier­spra­chen sind C, Pascal, Fortran, ALGOL sowie alle so­ge­nann­ten Assembler-Sprachen Typische Pro­gram­mier­spra­chen sind Lisp, ML, Haskell, F#, Prolog und Oz
Zum Hauptmenü