Java - Objektorientierte, typisierte & funktionale (Verfeinerung des deklarativen Paradigmas) Programmierung - beteiligte Objekte stehen im Fokus - Verwendung von Klassen und Objekten - Unterstützt Objekte, Klassen und Vererbung - Neue Klassen können die Eigenschaften und Verhalten von bereits existierenden Klassen erben - Kapselung von (Zustands-) Daten und Methoden - Polymorphie (Behandlung von Objekten basierend auf ihrem Typ) - Bessere Strukturierung - Wiederverwendbarkeit von Programmteilen - Einmal geschriebene Code kann künftig leicht gepflegt und modifiziert werden - Bessere Testbarkeit C - (1) Prozedurale, typisierte Programmierung (1) - Erweiterung des imperativen Paradigmas, um Algorithmen in überschaubare Teile zu zerlegen - Kontrollstrukturen (Sequenz, Schleife, Verzweigung) zur Steuerung der Befehlsausführung - Datenwerte definiert als benannte Variablen und darüber angesprochen - Diesen Variablen sind Datentypen zugeordnet -> erlauben nur bestimmte Instruktionen - Konzept der Abstraktion -> Entstehung von Gruppierungen und Hierarchie (2) - Korrekte Verwendung der Objekte - Sicherstellung, dass auf den Inhalt von Variablen keine Operationen ausgeführt werden, die syntaktisch oder semantische fehlerhaft sind - Vermeidung von Laufzeitfehlern Python - Ist eine universelle Open-Source-Programmiersprache - Nutzt mehrere Programmierparadigmen, u.a. die objektorientierte, aspektorientierte und die funktionale Programmierung - Funktionen sind nicht nur definiert und anwendbar, sondern auch wie Daten miteinander verknüpft, als Parameter verwendet und können als Funktionsergebnisse auftreten - Ermöglicht, auf die in der imperativen Programmierung benötigten, inneren Zustände eines Berechnungsprozesses ebenso zu verzichten, wie auf die zugehörigen Zustandsänderungen - Verzicht auf Seiteneffekte vereinfacht semantische Analyse eines Computerprogramms - Möglichkeit zur regelbasierten, algebraischen Programmtransformation und -synthese - Vereinfacht, Algorithmen ohne Berücksichtigung der Beschaffenheit der bearbeiteten Datenobjekte zu beschreiben und dadurch generischen Programmcode zu schreiben Go - Kombinierbare Programmiersprache, die Nebenläufigkeit und automatische Speicherbereinigung unterstützt - Bereinigung der Compiler-Ineffizienz in C und C++ - Erleichterung von Softwareentwicklung mit Codebasen und Entwicklerteams - Orientiert sich syntaktisch an der Programmiersprache C JavaScript - Typenlose Programmiersprache (Typ von Variablen, Parametern & Rückgabewert wird nicht festgelegt) - Nur faktische Kompatibilität - Implizite Konvertierung - Typenfehler treten erst zur Laufzeit des Programms auf TypeScript - Compiler kompilierte Programmiersprache - Unterstützt Kapseln von Klassen, Interfaces, Funktionen und Variablen in eigene Namensräume - Bietet, existierenden JavaScript-Code und -Bibliotheken zu verwenden (JavaScript-Code = TypeScript-Code) Programmierprinzipien Clean Code > Clever Code - Vermeidung von komplexem Code in einer Zeile - Man sollte den Idiome der Sprache Acht geben Zusammensetzung > Vererbung - statt Klassen zu erben, neues Verhalten für Objete mit komplexem Verhalten hinzufügen