# Programmierparadigmen Übung (07.11.22) ### Java - Objektorientierte, Funktionale (ab Version 8) und typisierte Programmiersprache - Objektorientiert: Kapselung von (Zustands-) Daten und Methoden - Vorteil: bessere Strukturierung, bessere Testbarkeit, Wiederverwendbar von Programmteilen - Funktional: Verfeinerung des deklarativen Paradigmas - Vorteil: übersichtliche und effiziente Berechnungen - Nachteile: nur für Berechnungen - Typisiert: Festlegung Art des Datentyps für Variablen sowie Parameter und Rückgabewerte von Prozeduren - Vorteil: Vervollständigungsvorschlage durch IDE, fail fast, gesteigerte Sicherheit bereits im Erstellungsprozess von Software - Nachteil: verwendete Typen müssen zum Programmierzeitpunkt bekannt sein, nachträgliche Änderungen am Typen können bestehenden Code brechen ### C - typisierte Programmiersprache - Definition: Festlegung Art des Datentyps für Variablen sowie Parameter und Rückgabewerte von Prozeduren - Vorteil: Vervollständigungsvorschlage durch IDE, fail fast, gesteigerte Sicherheit bereits im Erstellungsprozess von Software - Nachteil: verwendete Typen müssen zum Programmierzeitpunkt bekannt sein, nachträgliche Änderungen am Typen können bestehenden Code brechen ### Phyton - typisierte Programmiersprache - Definition: Festlegung Art des Datentyps für Variablen sowie Parameter und Rückgabewerte von Prozeduren - Vorteil: Vervollständigungsvorschlage durch IDE, fail fast, gesteigerte Sicherheit bereits im Erstellungsprozess von Software - Nachteil: verwendete Typen müssen zum Programmierzeitpunkt bekannt sein, nachträgliche Änderungen am Typen können bestehenden Code brechen ### Go - typisierte Programmiersprache - Definition: Festlegung Art des Datentyps für Variablen sowie Parameter und Rückgabewerte von Prozeduren - Vorteil: Vervollständigungsvorschlage durch IDE, fail fast, gesteigerte Sicherheit bereits im Erstellungsprozess von Software - Nachteil: verwendete Typen müssen zum Programmierzeitpunkt bekannt sein, nachträgliche Änderungen am Typen können bestehenden Code brechen ### JavaScript - typenlose Programmiersprache - Definition: Der Typ von Variablen, Parametern und Rückgabewerten wird nicht festgelegt - Vorteil: nur faktische Kompatibilität, implizite Konvertierung - Nachteil: Typenfehler treten erst zur Laufzeit des Programms auf ### TypeScript - typisierte Programmiersprache - Definition: Festlegung Art des Datentyps für Variablen sowie Parameter und Rückgabewerte von Prozeduren - Vorteil: Vervollständigungsvorschlage durch IDE, fail fast, gesteigerte Sicherheit bereits im Erstellungsprozess von Software - Nachteil: verwendete Typen müssen zum Programmierzeitpunkt bekannt sein, nachträgliche Änderungen am Typen können bestehenden Code brechen ### weitere Programmierprinzipien - Single Responsibility Prinzip: Kernaussage des Prinzips ist, dass jede Klasse nur genau eine fest definierte Aufgabe zu erfüllen hat - Continuity: Schreibe den Code so, dass minimale Änderungen auch nur minimale Folgen für den Code haben - Writability: Verwende ein Programmierwerkzeug/tool, welches dich beim Schreiben des Codes unterstützt - Customizability: Konstante Werte sollten im Allgemeinen nicht direkt in den Code eingefügt werden, sondern als konstante Werte separat definiert werden