diff --git a/Lerntagebuch.md b/Lerntagebuch.md index 25c202c..c2bfbd0 100644 --- a/Lerntagebuch.md +++ b/Lerntagebuch.md @@ -22,4 +22,25 @@ Das Repository ist unsere sogenannte Projektsammlung ueber GitLab, in der wir be Es liegt keine Kritik gegenüber der Vorlesung oder Uebungsstunde vor. --- -## SU 02 (28.10.2023) +## SU 02 (03.11.2023) + +### Lernziel + +Unterschiedliche Programmierparadigmen zum Beispiel imperative und deklarative Programmierung +Prinzipien der Programmierung im Sinne von Do's and Don'ts + +### Erkenntnis + +In der Vorlesung habe ich gelernt, dass es viele verschiedene Arten gibt zu programmieren sei es, objektorientiert oder imperative Programmierung. +Es gibt Programmiersprachen die mehrere Paradigmen erfüllen. + +### Wiederholung + +Die imperative Programmierung besteht daraus, dass man aufeinanderfolgend Befehle in den Code tippt, die der Computer in der genannten Reihenfolge ausführen soll. + +### Kritik + +Es liegt keine Kritik gegenüber der Vorlesung oder Uebungsstunde vor. + +--- +## SU 03 (10.11.2023 diff --git a/Programmierparadigmen.md b/Programmierparadigmen.md new file mode 100644 index 0000000..4e261d3 --- /dev/null +++ b/Programmierparadigmen.md @@ -0,0 +1,81 @@ +Python + +Multiparadigmensprache -> nutzt geeignete Paradigmensprache +Verwendet 3 Paradigmen -> Objekt-, Verfahren- oder Funktional +Im Kern Objektorientiert - > Datentypen sind Objekte +Einfach zu erlernen, saubere Struktur +Weniger Codezeilen im Vergleich mit anderen Programmiersprachen +Einrückungen statt Klammern +Verwendet angegebene Datentyp oder impliziert einen sinnvollen Wert + +Free to use +Weiterentwicklung stetig +Große Community für Hilfestellung + +# Java +* Imperativ +* Objektorientiert + * Streng objekt-orientiert + * Konzept: Klassen/Objekte + * Vererbung/Kapselung/Polymorphie + * Modellierung komplexer Problem leichter + * Wartbar/Skalierbar +* Typisierung: strikt +* Plattform unabhängig + * Cross-Platform Kompatibilität +* Multi-Threaded +* Funktional (seit neueren Versionen) + +# C +* Imperativ (also auch prozedural) + * Weitergabe von Daten über Funktionen +* Streng typisiert +* Vorteil: Hardwarenähe, Kompatibilität + * Schnelligkeit +* Nachteil: Speicherverwaltung + +# Python +* Imperativ +* Objekt-orientiert + * Klassen und Objekte + * Hierachien +* Funktional + * Kompakte Syntax +* Interpretierte Sprache + * Übersetzung in andere Sprache möglich +* Portabilität +* Typisierung + * Dynamisch (Duck Typing) + +# Go +* Modular, imperativ +* Breite Palette an Programmierparadigmen +* Teilweise Objektorientiert & Funktional + * Keine Vererbung + * Statt Klassen werden Structs verwendet +* Einfache, effektive Programmierung +* Typisierung: statisch + * Vor der Compilierung müssen Typen fest stehen +* Mix: Schnelligkeit von C & Anwendungsmöglichkeiten & Simplizität von Python +* Multi-Threading + +# Javascript +* Erweiterung von HTML +* Multi-Paradigmen + * OOP, Prozedural oder Funktional +* Dynamische Typisierung +* Anwendung: Interaktive Web-Anwendungen (z.B. Google Maps) +* Vorteile: Modernes Erscheinungsbild, Günstiger Server-Traffic (läuft im Browser) + * Dynamische Elemente +* Event-basiert (Callbacks) + * asynchrone Verarbeitung +# Typescript +* typisiert +* imperativ, OOP + * +* Typescript hat Einfluss von JavaScript/Java/C# +* Baut auf Supermenge von JavaScript Bibliotheken auf +* Skalierbarkeit / Wartbarkeit -> Durch Einführung OOP + + +