programmierung
und datenbanken
Joern Ploennigs
Softwarearchitektur
Wiederholung: Hörsaalfrage¶
Was ist „Informatik“?

Wiederholung: Definition - Informatik¶
Informatik ist die Wissenschaft von der systematischen Verarbeitung von Informationen.
Ursprung: Mathematik (Logik, Algorithmen) + Elektrotechnik (Hardware)
Wiederholung: Hörsaalfrage¶
Aus welcher Hardware besteht ein Computer?

Wiederholung: Computer Aufbau¶
Wiederholung: Hörsaalfrage¶
Was sind binäre Zahlen?

Binären Zahlen¶
Computer speichern, verarbeiten & kommunizieren Daten als binären Zahlen, weil Transistoren in einem Gatter nur logische Operationen ausführen können.
binarius – Zweifach, doppelt
Das kleinste mögliche (nützliche) System von Zeichen
Mögliche Repräsentationen von Binärcode:
- 0 / 1
- Falsch / Wahr
- Aus / An
Ablauf¶
Monolithische, maschinennahe Software vor 1950¶
- Die ersten Programme wurden direkt in binärem Maschinencode geschrieben.
- Die Software war monolithisch, d.h. es gab keine Trennung von Funktionalitäten.
- Die Software war eng an die Hardware gebunden.
- Problem: Änderungen an der Hardware erforderten oft eine komplette Neuprogrammierung.
Aufteilung in Betriebssysteme und monolithischer Software seit 1960¶
- Betriebssysteme wurden eingeführt, um die Hardware zu abstrahieren.
- Betriebssysteme abstrahieren Standardaufgaben (z.B. Dateiverwaltung)
- Hardware wird durch Treiber abstrahiert
- Änderungen an Hardware erfordern nur neue Treiber
- Problem: Die Programme sind immer noch schwer zu schreiben, weil sie sehr low-level sind und sehr gutes Verständnis von Hardwarefunktionen erfordern.
Einführung von höheren Programmiersprachen 1970¶
- Um die Programmierung zu vereinfachen, wurden höhere Programmiersprachen eingeführt.
- Höhere Programmiersprachen müssen mit Compilern in Maschinensprache übersetzt werden.
- Höhere Programmiersprachen sind meist ‘natürlichsprachlicher’
- Problem: Wechsel zwischen Betriebssysteme erfordert mindestens neue Compilierung, meist Umschrieben.
Virtualisierung monolithischer Software seit 1995¶
- Virtuelle Laufzeitumgebungen abstrahieren die Betriebssysteme.
- Virtuelle Laufzeitumgebungen compilierten Code in Echtzeit (Java) oder interpretieren ihn (Python)
- Problem: Mit dem Internet entwickelte sich der Bedarf auf Inhalte mobil zuzugreifen.
Verteilte, Virtualisierte Software im Internet seit 2000¶
- Backend Webserver stellen die Webseiten zur Verfügung
- Separate Datenbankserver verwalten die Langzeitdaten
- Frontend Apps visualisieren die Inhalte
- Frontend Apps interagieren mit den Nutzern
- Frontend Apps machen nur leichte Berechnungen
- Problem: Im Internet greifen oft sehr viele Nutzer gleichzeitig auf die gleichen Server (Seiten) zu. Um diese nicht zu überlasten, brauchte man Wege diese bei Bedarf schnell zu duplizieren.
Verteilte, Virtualisierte Apps und Cloud Software seit den 2010¶
- Betriebssystem und Programme werden in Images gebündelt
- Images können auf Servern schnell verteilt werden
- Dadurch können Server bei Bedarf (Ansturm) schnell hochgefahren werden
- Apps und Websites lösen vollständig traditionelle monolithische Programme ab
- Dadurch liegen Daten selten auf einem einzelnen Rechner
- Problem: Im Internet greifen oft sehr viele Nutzer gleichzeitig auf die gleichen Server (Seiten) zu. Um diese nicht zu überlasten, brauchte man Wege diese bei Bedarf schnell zu duplizieren.
Klassifikation der Programmiersprachen nach historischer Anwendung¶
Die Programmiersprachen haben sich entsprechend den Architekturen auch mit der Zeit entwickelt. Deshalb änderten sich auch über die Zeit die beliebten Programmiersprachen.
fragen?
und datenbanken