programmierung
und datenbanken

Joern Ploennigs

Softwarearchitektur

Midjourney: Soft Architecture

Wiederholung: Hörsaalfrage¶

Was ist „Informatik“?

No description has been provided for this image
”Computer science is no more about computers than astronomy is about telescopes.“, Edsger W. Dijkstra

Wiederholung: Definition - Informatik¶

📘 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?

No description has been provided for this image
DALL-E 2: Early designs of the iPhone by Leonardo da Vinci

Wiederholung: Computer Aufbau¶

Image

Wiederholung: Hörsaalfrage¶

Was sind binäre Zahlen?

No description has been provided for this image
DALL·E 2: River of data flowing between computers in matrix style

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.
Monolithische Software

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.
Betriebssysteme

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.
Höheren Programmiersprachen

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.
Virtualisierung

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 Software

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.
Images und Cloud Software

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.

Klassifikation der Programmiersprachen

fragen?

programmierung
und datenbanken