Wo ist der Unterschied zwischen sequentielle Programmierung, paralleler Programmierung?

6 Antworten

Vereinfacht gesagt: Parallele Programmierung 'spaltet' einen sequenziellen Programmteil in mehrere Threads auf, die parallel auf mehreren Rechenkernen in der CPU ausgeführt werden können. So kann zum Beispiel im Optimalfall eine Aufgabe, die für 20 einzelne Schritte 20 Sekunden braucht, bei einer parallelen Umsetzung die gesamte Aufgabe nur 1 Sekunde dauern wenn man die Schritte parallelisiert.

Woher ich das weiß:Berufserfahrung – Anwendungsentwickler

Sequentiell bedeutet, dass eine komplette Aufgabe mit aufeinanderfolgenden Befehlen gelöst wird. Parallel hingegen teilt das Programm in Teilaufgaben auf, um die einzelnen Teile nebenläufig auszuführen. Letzteres kann die Laufzeit verringern, bis eine Lösung gefunden wird. Auf der anderen Seite kann es aber auch schwerer werden, das Verhalten des Programmes nachzuvollziehen, da der Programmfluss von verschiedenen Kontexten beeinflusst wird.

Kurzum, parallel läuft nebeneinander und gleichzeitig ab - über verschiedene Threads oder Tasks. Die Geschichte wird eben gerne auf die CPU Kerne aufgeteilt. Nutzt man in Rechenintensiven Aufgaben z.B. der Suche.

Sequentiell wird, wie der Name schon sagt sequentiell, also der Reihe nach abgearbeitet.

Stell es dir wie eine Parallelschaltung und eine Reihenschaltung mit Glühlampen vor.

LG

Woher ich das weiß:Berufserfahrung – 💻 Zertifizierter Sr. Cloud Engineer im IT-Consulting
naaman  26.07.2021, 09:40

Parallel heißt immer: mind. zwei Dinge zur gleichen Zeit machen.

Seriell heißt immer: mind. zwei Dinge hintereinander machen.

Dabei spielt es keine Rolle was nun parallel oder was seriell verarbeitet wird.

Bei manchen Anwendungen hat man allerdings keine andere Wahl. Es gibt also auch Dinge, die können nur seriell (oder parallel) abgearbeitet werden.

Als die CPU's nur aus einem Prozessor bestanden, hat man es immerhin geschafft, das Anwendungen quasi parallel abgearbeitet wurden. Das bedeutete, das es für den Anwender so scheint, das Prozesse parallel laufen. Da die Arbeitsgeschwindigkeit des Prozessors schon so hoch war, das zwischen 2 Prozessen kaum mehr Zeit vergeht.

0
Sqeuential  = Aufgaben werden nacheinander abgearbeitet
Parallel    = Mehrere Aufgaben werden gleichzeitig bearbeitet
Concurrent  = Es wird an mehreren Aufgaben gearbeitet*

* Z.B. muss bei einer Aufgabe auf etwas gewartet werden, dann hört man auf diese Aufgabe zu bearbeiten und erledigt währenddessen eine andere. Es kann heißen, dass mehrere Aufgaben Parallel laufen, muss aber nicht.

Woher ich das weiß:Berufserfahrung – Software Entwickler / Devops
Von Experte Dultus, UserMod Light bestätigt

Parallele Programmierung baut auf der Technik auf, dass zwei oder mehr Befehle gleichzeitig ausgeführt werden. Häufig steht ein Mehrprozessorsystem dahinter, so dass jeder Prozessor einen Befehl oder besser einen Befehlsblock übernimmt. Dadurch kann es natürlich zu Komplikationen kommen, wenn etwa ein Befehl auf den anderen angewiesen ist, weil der eine Befehl ein Ergebnis aus einem Befehl des anderen benötigt. Häufige Programmiertechniken arbeiten mit Threads oder Tasks, welche die Befehlsblöcke beinhalten, die parallel auf verschiedene Recheneinheiten geschickt werden.

Sequentielle Programmierung hingegen verwendet diese Technik nicht, dort folgt ein Befehl dem anderen.

Es gibt noch eine Quasi-Parallelität: Zwar werden die einzelnen Befehle tatsächlich nacheinander ausgeführt, jedoch werden mehrere Befehlblöcke in die Ausführung geschoben und die Blöcke werden dadurch parallel ausgeführt, dass nicht zuerst der eine und dann der andere Block ausgeführt wird, sondern die Befehle aus beiden Blöcken "durcheinander". Das hat Vorteile, wenn z.B. der eine Block auf eine Eingabe wartet, kann der andere Block, der z.B. Daten auf die Festplatte schreibt nebenläufig, abgearbeitet werden. In der eigentlich parallelen Programmierung würde beides originär parallel passieren, in der (vollständig) sequentiellen würde zuerst die Eingabe abgewartet und erst dann die Festplatte beschrieben werden.

Davon (von der nebenläufigen Programmierung) zu unterscheiden sind eher technische Implementierungen, welche mehrere Prozessoren vorsehen und auch sequentielle Programme automatisch parallelisieren.

Woher ich das weiß:eigene Erfahrung – Hobby und teilweise beruflich