Was ist der Unterschied zwischen modularer und prozeduraler Programmierung?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Das sind keine gegensätzlichen Begriffe.

Prozedurale Programmierung ist im Prinzip die Basis der heute gängigen objektorientierten Programmierung und bedeutet, Du kannst einzelne Funktionen (Code-Blöcke, die Eingabeparameter nehmen und ein Ergebnis liefern) und Prozeduren (Code-Blöcke, die Eingabeparameter nehmen und kein Ergebnis liefern) schreiben, um das Programm oder nur Teile (Algorithmen) in überschaubare und separate Einheiten zu trennen. Das "Gegenteil" davon wäre funktionale Programmierung, wo Funktionen im mathematischen Sinne verstanden werden müssen.

Modulare Programmierung bedeutet, dass Du den Quellcode eines Projekts oder auch dessen Ausgabe in einzelne, normalerweise funktional in irgendeiner Form zusammengehörige Module/Teile aufteilst, die ggf. in dieser Form auch in anderen Projekten wiederverwendet werden können. Dies funktioniert aber nicht nur in der prozeduralen Programmierung.

Beispiel 1: Du hast eine Quellcode-Datei, welche den Code beinhaltet, der für die Ausgabe von Daten in eine Datei verantwortlich ist und eine, in der alles steht, was für die Eingabe durch den Nutzer wichtig ist. Die Ausgabe in die Datei ist unabhängig von der Eingabe, denn die Daten könnten ja auch aus dem Internet, einer anderen Datei oder zufällig erzeugt werden. Somit ist die Dateiausgabe ein eigenes Modul. Das wäre Modularität auf Quellcodeebene.

Machst Du jetzt das Projekt so, dass Du eine wiederverwendbare Bibliothek mit dem Code für die Dateiausgabe erzeugst und diese aus dem Programm für die Dateneingabe durch den Benutzer verwendest, dann hast Du zusätzlich noch Modularität auf der Projektausgabe.

Beispiel 2: In GW-Basic war früher keine prozedurale Programmierung möglich - und soweit ich mich erinnere auch keine modulare. Der Code lief "oben" los und hörte "unten" auf. Mit Goto und Gosub konnte das Fehlen von Prozeduren/Funktionen simuliert werden, war aber mehr als unübersichtlich. In Assembler war zwar auch keine prozedurale Programmierung möglich, aber sehr wohl modulare Programmierung (in dem Sinne, dass man mehrere unabhängige Module zu einem finalen Programm zusammenlinken konnte).

In C oder Pascal konnten aber bereits sowohl prozedural als auch modular programmiert werden, denn man konnte sowohl mit Includes (C) als auch mit Units (Pascal) separate Module mit definierten Schnittstellen erzeugen und der Code war unterteilt in Funktionen.

Die heutige objektorientierte Programmierung geht hier noch ein wenig weiter, basiert aber im Prinzip auf den Konzepten der prozeduralen und modularen Programmierung - vereinfacht gesagt gilt nur, dass Prozeduren und Funktionen eben nicht mehr "global" definiert werden, sondern in einer entsprechenden Klasse. Üblicherweise verfolgt man hier auch den Ansatz, pro Klasse ein Quellcode-File zu haben (ist aber keine feste Regel), so dass alleine schon deswegen Modularität gegeben ist.

"Modular" bedeutet "gut gegliedert in klar von einander abgegrenzte Teile".

Solche Teile sind (wenn man z.B. in C programmiert) die einzelnen Funktionen des Programms. Wir sehen: Auch prozedurale Programmierung kann modulare Programmierung sein. Gar nicht modular ist nur ein C-Programm, in dem über main() hinaus keine weiteren Funktionen auftreten.

KathaHohenfels 
Fragesteller
 24.10.2021, 21:42

Was ist dann prozedurale Programmierung?

0
grtgrt  25.10.2021, 08:27
@KathaHohenfels

Prozedurale Programmierung (z.B. die in C) ist nicht objekt-orientiert.

0