From 71ad10717eac54515c7f091df975ed90911b02f8 Mon Sep 17 00:00:00 2001 From: Tobias Herbert Date: Fri, 3 Nov 2023 11:27:26 +0100 Subject: [PATCH] Mein Push von dem 03.11. --- Lerntagebuch.md | 25 ++++++- Programmierparadigmen.md | 146 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 169 insertions(+), 2 deletions(-) create mode 100644 Programmierparadigmen.md diff --git a/Lerntagebuch.md b/Lerntagebuch.md index d1b46c9..fe04222 100644 --- a/Lerntagebuch.md +++ b/Lerntagebuch.md @@ -16,7 +16,28 @@ Für das Gruppenprojekt war diese Woche noch nicht relevant. Mit Ausnahme dessen Der Unterschied zwischen Laien und Profis ergibt sich aus der Arbeitsmethodik. Ein Profie arbeitet meist ein bestimmtes Schema ab um schnell und effizient ein gutes und sicheres Produkt zu entwickeln. Der Laie hingegen arbeitet meist nicht nach einem bestimmten Schema und arbeitet deshalb langsamer und unstrukturierter. -### Mitteilung an die Dozierenden +### Kritik --- -##Su 02(28.10.2023) +##Su 02 (03.11.2023) + +### Lernziel +-übersicht über die verschiedene Programmierparadigmen +->Unterschiede imperativer und deklarativer Programmierung +->Überblick über prozeduraler, objektorientierter und funktionaler Prgrammierung +-Überblick über Prgrammierprinzipien +->SOLID vs STUPID und weiterer Prinzipien +-Überblick über typisierten und typenlosen Programmiersprachen +###Erkenntnis +-SOLID steht für fünf Prinzipien des Programmierens und soll das Programmieren von Produkten übersichtlicher, felxibler, sicherer und erweiterbarer machen +-STUPID hingegen steht dafür genau für das Gegenteil. Es bezeichnet besonders schlechte Programmierprinzipien die den Code untestbar, unübersichtlich und unsicher machen. +-die Prinzipien von STUPID sind also zu vermeiden und die Prinzipien von SOLID sollten stets befolgt werden. + +-Das Prinzip von SOLID ist deshalb besonders für die Gruppenarbeit wichtig und sollte da von jedem Mitlgied befolgt werden um ein gutes Projekt zu erstellen. +###Wiederholung +-Objektorientierte Programmierung: +Die Objektorientierte Programmierung zeichnet sich durch eine einfache Strukturierung sowie der Wiederverwendbarkeit von Programmteilen aus. Zudem ermöglicht die Objektorientierte Programmierung eine bessere Testbarkeit von Programmen. +Sie unterstütz Objekte, Klasseen und vererbung. Die Programmiersprachen C# und Java sind unteranderem Sprachen der Objektorientierten Programmierung. + + +###Kritik diff --git a/Programmierparadigmen.md b/Programmierparadigmen.md new file mode 100644 index 0000000..99671f7 --- /dev/null +++ b/Programmierparadigmen.md @@ -0,0 +1,146 @@ +###Java Skript: + +#Übersicht + -ähnliche Syntax wie in C + -Vererbung nicht durch Klassen, sondern durch Prototypen (klassenlose Objektorientierung) + -typenlose Programmiersprachen + +#Imperative Programmierung + -grundlegende Art der Programmierung -> Schritt für Schritt Anweisungen um Aufgaben auszuführen. + -Verwendung vo Schleifen, bedingte Anweisung und deklarieren von Variablen + + +#Funktionale Programmierung + -Funktionen können wie Daten behandelt werden oder als Argumente für andere Funktionen gelten. + -höhere Ordnungsfunktionen + +#Objektorientierte Programmierung + -Java Skript ist prototypbasiert und ermöglicht die Erstellung von Klassen und Objekten. + -klassenlose Objektorientierung + +#Asynchrone Programmierung + -Durch Ereignisgesteurte Natur des Browsers und Node.js wird in Java Skript häufig die asynchrone Programmierung verwendet zum Beispiel durch Callbacks, Promises und async/wait. + +#Modulare Programmierung + -seit Version ES6 können Module erstellt und importiert werden um den Code bzw. Codeteile wiederverwendbar zu machen, indem man den Code in wiederverwendbare Teile aufgliedert. +#Eventbasiert +#Vorteile + -Universelle Verwendung + ->kann Frontend und Backend verwendet werden + -Leicht zu erlernen + ->große Anzahl an Ressourcen zum lernen + -Interaktive Benutzeroberfläche + ->Erstellen von interaktiven und dynamischen Websiten + ->Verbessert doe Benutererfahrung + -Asynchrone Programmierung + ->gut für die handhabnung + ->wichtig für die Webanwendung +#Nachteile + -unterschiedliche Browser interpretieren JavaSkript Code unterschiedlich -> Kompatibilitätsprobleme + -anfällig für Cross-Site-Skripting und Cross-Site-Request-Forgery, wenn Sicherheitsvorkehrungen nicht getroffen werden + -Java Skript ist schwer zu debuggen und Typfehler treffen erst während der Laufzeit auf ->durch dynamische Typisierung + -Java Skript Code muss von dem Browser erst heruntergeladen werden -> längere Wartezeiten möglich + -keine gute serverseitige Sprache, da viele Einschränkungen + + +###Prolog + +#logische Programmierung + +#deklarative Programmierung + -Welt wird definiert + -ähnlich wie SQL +#Praxisanwendung + -Ki Anwendungen/ maschinelles Lernen + -mathematische/Logische Programmierung + -Expertensysteme + +#Stärken + -anderer Blickwinkel auf Problem + -Rekursive Lösungen + +#Schwächen + -keine Typisierung + -Fehlerfinden schwierig + -schlechte Performance + + + + +###Go + +#Übersicht + -einfach, lesbar und effizient ->orientiert sich an C -> effizient durhc Low-Level + + +#statische Typisierung + -Variablen haben festen Datentyp + -Fehlerfindung frühzeitig + -Standardbibliothek + -Cross Platform Compilation + +#imerative Programmierung + +#Objektorientierte Programmierung + -aber keine Klassen/Vererbung + + +###Type Skript + +#Superset von JavaSkript + -basiert auf Java Skript + -> aber starke Typisierung -> statische und dynamische Datentypen werden unterstützt + -Funktional +#Objektorientiert + -Vererbung + -Schnittstellen + +#Einsatz + -große Aplikationen/Frameworks + -bessere Strukturierung + + + +###Java +#Übersicht + -Ähnlichkeiten zu C++ + -Standard Bibliothek + +#Objektorientiert + -klassenbasiert + -Zugriff wird klar definiert + -Vererbung/Polymorphismus +#Funktionale Anteile seit neueren Java Versionen +#Srikt typisiert +#Imperative Programmierung +#Anwendungen + -Web-Applikationen, Desktop-Anwendung + + + +###C + +#imperativ +#prozedural +#Typisierte Programmiersprache +#Anewendung + -Hardwarenahe Prgrammierung + -direkter Speicherzugriff +#Nutzung + -alle systeme + -schnell verbraucht wenig Ressourcen + -Befehlssatz ist relativ klein + -->Vorteil oder Nachteil sein + -->selber schreiben oder einbinden externer Bibliotheken + + +###Python +#gleich zu Java + +#Imperativ +#basiert auf C -> Prozedural +#dynamisch (typisiert) +#Objektorierten Programmierung +#Eigenschaften von Compiler sind integriert +#sehr klare Syntax +#wenige Schlüsselwörter