# JavaScript # Übersicht * ähnliche Syntax wie in C * Vererbung nicht durch Klassen, sondern durch Prototypen (klassenlose Objektorientierung) * typenlose Programmiersprache # Imperative Programmierung: * grundlegende Art der Programmierung, bei der Schritt-für-Schritt Anweisungen angegeben werden, um Aufgaben auszuführen * beispielsweise Verweundung von Schleifen, bedingten Anweisungen und dekleration von Variablen # Funktionale Programmierung * Funktionen können wie Daten behandelt werden oder als Argumente für andere Funktionen dienen * hohe Ordnungsfunktion # Objektorierentierung * JavaScript ist prototypbasiert, erlaubt die Erstellung und Vererbung von Objekten * Erstellung von Klassen und Objekten * Hinzufügen von Methoden zu Objekten # Asynchrone Programmierung * Aufgaben können parallel oder nebenläufig ausgeführt werden, ohne Hauptprogramme zu blockieren * besonders nützlich für Aufgaben wie das Laden von Daten auf einen Server oder das Verarbeiten von Benutzereingaben # Modulare Programmierung * JavaScript unterstützt die modulare Programmierung mit ES6 und späteren Versionen * Erstellen von Modulen und der Import von Modulen wird ermöglicht * Fördert die Wiederverwendbarkeit # Vorteile * Universelle Verwendung * Verwendung von JavaScript im Webbrowser(Frontend) oder auf Serverseiten(Backend) * Leicht zu erlernen * große Entwicklungsgemeinschaft und viele Ressourcen für das Lernen * Interaktive Benutzeroberfläche * Erstellen von interaktiven und dynamischen Webseiten * Verbessert die Benutzererfahrug * Asynchrone Programmierung * gut für die Handhabung asynchroner Aufgaben * wichtig für Webanwendungen # Nachteile * Browser-Kompatiblität * unterschiede Browser interpretieren JavaScript-Code unterschiedlicdh * Sicherheitsprobleme * anfällig für Corss-Site-Scripting und Cross-Site-Request-Forgery, wenn Sicherheitsvorkehrungen nicht richtig getroffen werden * Typisierungsprobleme * schwer zu debuggen und Typfehler treten erst während der Laufzeit auf * Ladezeit * JavaScript Daten müssen erst vom Browser heruntergeladen und interpretiert werden * beeinflusst die Ladezeiten von Webseiten * Begrenzte Serverseitenfähigkeit * keine gute serverseite Sprache, da es viele Einschränkungen gibt im Vergleich zu spezialisierten severseitigen Sprachen # Go * Imperativ / OOP (aber keine Klassen/Vererbung) * Einfach/lesbar * effizient * Orientierung an C * Low-Level * Statische Typisierung * Varibalen haben festen Datentyp * Fehlerfindung frühzeitig * Standardbibliothek * Cross Platform Compilation # TypeScript * Superset von JavaScript * Starke Typisierung im Gegensatz zu JavaScript * Statische & Dynamische Dartentypen werden unterstützt * TypeScript ist objekt-orientiert * Vererbung * Schnittstellen * Funktional (weil auf JavaScript aufbauend) * Anwendung: große Aplikationen/Frameworks * bessere Strukturierung # Java * Imperativ * Objekt-orientiert * Klassenbasiert * Zugriff wird klar definiert + Vererbung/Polymorphismus * Ähnlichkeiten * Standard-Bibliotheken * Strikt typisiert * Funktionale Anteile seit neuren Java-Versionen * Anweundung: Web-Applikationen, Desktop-Anwendungen # C * Imperativ * Prozedural * Typisierte Sprache * Anwendung: Hardwarenahme Programmierung * Direkter Speicherzugriff * Nutzung auf so ziemlich allen Systemen * Schnell & verbraucht wenig Ressourchen * Befehlsatz ist relativ klein * Kann Vorteil oder Nachteil sein * Selber schreiben oder einbinden externer Bibliotheken # Python * basierend auf C * imperativ und prozedural * typisierte Sprache * macht das Programm automatisch (dynamische Typisierung) * Objektorientierung * Ersellen von Funktionen * Kompiler in sich intigriert * sehr klare Syntax