About this episode
"Together we stand, divided we fall." Deshalb geht es heute darum, wie Prozesse zur Zusmmenarbeit gebracht werden, oder auch, wie das gelegentlich schief geht. Zum Schluss haben wir wieder eine leicht schwermütige Unterhaltung darüber, warum die Dinge sind, wie sie sind. In diesem Sinne: "Let's work together..."Shownotes
historischer Einstieg: initial nur einzelne monolithische Programme
Computer startet, sobald das Programm eingegeben ist, zusammen mit dem Programm
mehrere Programme möglich, aber diese alle komplett voneinander unabhängig; bzw. jeweils nur abhängig von der Maschine selbst
dann wurden Programme so komplex, dass sie nicht mehr von einer Person verfasst werden konnten
1975: akademische Unterscheidung zwischen "Programming in the large" und "Programming in the small"
Unterteilung der Software eines Computers in kleinere Einheiten erfordert definierte Schnittstellen
Analogie: Unternehmen mit mehreren Mitarbeiterinnen erfordern meist definierte Abläufe
Schnittstellen auf der großen Ebene (zwischen Prozessen): Kommunikationsprotokolle und Datenformate
Kommunikationsprotokolle: regeln Sende-/Empfangsreihenfolge, Inhalte der einzelnen Datenpakete und das durch sie ausgelöste Verhalten, Fehlerbehandlung etc.
Datenformate: definieren die Struktur eines Datenpaketes; kann in einer Datei gespeichert sein; kann Teil eines Kommunikationsprotokolls sein; kann Baustein in einem größeren Datenformat sein (z.B. Videodatei besteht aus einem Audiodatenformat, einem Bildstromdatenformat und einem umschließenden Containerformat)
Schnittstellen auf der kleinen Ebene (innerhalb eines Prozesses): API (Application Programming Interface) und ABI (Application Binary Interface)
z.B. eine Komponente, die einen Sortieralgorithmus bereitstellt, hat eine Schnittstelle, die eine Liste von Zahlen entgegennimmt und eine sortierte Liste von Zahlen zurückgibt
dies ungefähr die geringste Ebene von Komplexität, Skala nach oben offen
API: auf der Ebene von Programmcode
ABI: auf der Ebene von Maschinencode
Beispiel API: OpenGL vs. DirectX vs.