From b453157d3ea342baa3bc077f3f6e113b9face376 Mon Sep 17 00:00:00 2001 From: Ariana Ginju Date: Fri, 3 Nov 2023 13:46:33 +0100 Subject: [PATCH] =?UTF-8?q?Aktualisierung=20f=C3=BCr=20Woche=202?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Lerntagebuch.md | 11 ++-- Programmierparadigmen.md | 110 ++++++++++++++++++++++++++------------- 2 files changed, 80 insertions(+), 41 deletions(-) diff --git a/Lerntagebuch.md b/Lerntagebuch.md index 885e4f6..17ada86 100644 --- a/Lerntagebuch.md +++ b/Lerntagebuch.md @@ -3,9 +3,12 @@ ## SU 01 (24.10.2023) ### Lernziel -Organisatorisches: --Dozenten --Prüfungsanforderungen (Lerntagebuch, Gruppenprojekt, Zusatzpunkte) +* Organisatorisches + * Dozenten + * Prüfungsanforderungen + * Lerntagebuch + * Gruppenprojekt + * Zusatzpunkte ### Erkenntnis Die organisatorischen Informationen wie Prüfungsanforderungen sind sehr wichtig für das Gruppenprojekt, aber auch allgemein für das Bestehen des Semesters. Die Mindestgröße der Gruppe, die Übergabe, die Commits je Person, die (fast) freie Wahl bei Thema und Programmiersprache – sind Informationen, die mir die Grundlage für den Anfang des Projektes geben. @@ -14,8 +17,6 @@ Die organisatorischen Informationen wie Prüfungsanforderungen sind sehr wichtig ### Lernziel Das Lernziel bestand daraus die aufgeführten Programmiersprachen unter dem Aspekt der unterschiedlichen Programmierparadigmen zu beleuchten. Die Details dazu finden Sie in der Datei Programmierparadigmne.md. - - ### Erkenntnis Für das Gruppenprojekt wäre sehr wichtig, die vorgestellte Prinzipien der Programmierung anzuwenden, so wie "Do's and don'ts" und weitere Prinzipien. Weitere wichtige Informationen für das Gruppenprojekt, die in der Vorlesung besprochen wurden, sind die Eigenschaften verschiedenen Programmierparadigmen. diff --git a/Programmierparadigmen.md b/Programmierparadigmen.md index 87da1b7..7056cde 100644 --- a/Programmierparadigmen.md +++ b/Programmierparadigmen.md @@ -2,41 +2,79 @@ # Programmierparadigmen ## Java - * Objektorientiert - * Klassen, Vererbung, Polymorphie - - * Beispiele - * Ursprung - * Vorteile -2) Declarative Programmierung - * Definition - * Beispiele - * Vorteile -3) Prozedurale Programmierung - 3.1 Definition - 3.2 Beispiele -4 Objektorientierte Programmierung - 4.1 Definition: Polymorphie - 4.2 Beispiele: Simula-67 - 4.3 Vorteile: bessere Strukturierung und Testbarkeit -5 Funktionale Programmierung - 5.1 Definition - 5.2 Beispiele: Lisp, Hskell, Erlang, etc. - 5.3 Vorteile: Generierung neuer Funktionen zur Laufzeit - 5.4 Nachteile: nur für Berechnungen -6 typisierte Programmiersprachen - 6.1 Definition - 6.2 Beispiele: C, Java, Python, C++, go, etc. - 6.3 Vorteile: Vervollständigungsvorschläge durch die IDE - 6.4 Nachteile -7 typenlose Programmiersprachen - 7.1 Definition - 7.2 Beispiele: sh, cmd, JavaScript, x86 Assembler - 7.3 Vorteile: nur faktische Kompatibilität und implizite Konvertierung - 7.4 Nachteile -8 Prinzipien der Programmierung - 8.1 do’s & don’ts - 8.2 weitere Prinzipien der Programmierung +* Objektorientiert + * Klassen, Vererbung, Polymorphie +* Imperativ +* Ähnlichkeit zu C++ +* Standart-Bibliotheken +* Strikt typisiert +* Funktionale Anteile seit neueren Java-Versionen +* Anwendung: Web-Applikationen, Desktop-Anwendungen + +## C +* Imperativ +* Prozedual +* Typisierte Sprache +* Anwendung:Hardwarenahe Programmierung + * Direkter Speicherzugriff +* Nutzung auf so ziemlich allen Systemen +* Schnell & verbraucht wenig Ressourcen +* Befehlssatz ist relativ klein + * Kann Vorteil oder Nachteil sein + * Selber schreiben oder einbinden externer Bibliotheken + +# Python +* Prozedural +* Imperativ +* Dynamische Typisierung + * Duck Typing +* Objektorientiert + * Vererbung +* Functional +* Python wird zur Bytecode Übersetzt bevor er interpretiert wird +* Klare Syntax, kompakter Code, geringe Schlüsselwörter +* Kompilierter Bytecode wird vom Interpreter ausgeführt + +## Go +* Imperativ / 00P (aber keine Klassen/Vererbung) +* Einfach/lesbar +* Effizient + * Orientierung an C + * Low-Level +* Statische Typisierung + * Variablen haben festen Datentyp + * Fehlerfindung frühzeitig +* Standardbibliothek +* Cross Platform Compilation + +# JavaScript +* Ähnliche Syntax zu C +* Typenlose +* Imperative Programmiersprache +* Funktionale Programmiersprache +* Objektorientierte Sprache + * Prototypenbasiert also Klassenlos +* Asynchrone Verarbeitung (Callbacks) +* Modulare Programmierung (ES6) +* Vorteile: Verwendung für Frontend & Backend +* Altere Sprache, Große Community +* Interaktive Benutzeroberflächen +* Unterstützung verschiedener Browser +* Anfälligkeit zu XSS +* Läuft im Browser + +# TypeScript +* imperativ +* Superset von JavaScript +* Starke Typisierung im Gegensatz zu Javascript + * Statische & Dynamische Datentypen werden unterstützt +* TypeScript ist objekt-orientiert + * Vererbung + * Schnittstellen +* Funktional (weil auf JavaScript aufbauend) +* Einsatzzweck für große Web-Applikationen/Frameworks + * Bessere Strukturierung + * Konsistener durch Type-Checking/Typisierung ## Programmierprinzipien -STUPID, SOLID \ No newline at end of file +STUPID, SOLID