diff --git a/Lerntagebuch.md b/Lerntagebuch.md index 7e7aeea..9d36b75 100644 --- a/Lerntagebuch.md +++ b/Lerntagebuch.md @@ -3,15 +3,57 @@ ## SU 01 (24.10.2023) ### Lernziel + Programmierer benötigen Fachwissen, um ein fehlerfreies Programm schreiben zu können. +- Besprechung der organisatorischen Inhalte +- Eigenschaften die ein Programierer haben sollte + - Vergleich Handwerker/Künstler + - Vergleich Profi/Laie +- Programmierfehler können hohe Kosten verursachen und sollten deshalb vermieden werden +- das Buch Clean Code definiert wie Code geschrieben werden sollte +- Erstellung des Lerntagebuchs und Verknüpfung der Repository mit gitlab ### Erkenntnis +Programmierer sollten gewisse Eigenschaften haben und Prinzipien folgen. +Durch einheitliche Programmierung und einhalten einer gemeinsamen Syntax können Fehler die ggf. fatal sind vermieden werden. + ### Wiederholung +Ein Programmierer benötigt Eigenschaften wie logisches Denken, ein ausreichendes Fachwissen und Geduld, um ein gutes Prdoukt zu schaffen. +Dabei ist das Produkt meist von praktischem Nutzen wie etwa eine Automatisierung eines einfachen Prozesses. Ein Programierer beginnt als Laie und lernt +sein Handwerk über Zeit und Erfahrung. + ### Kritik --- ## SU 02 (31.10.2023) + +### Lernziel + +Programmiersprachen werden in folgende Kategorien eingeteilt: +- imperative Programmierung +- deklarative Programmierung +- prozedurle Programmierung +- objektorientierte Programmierung +- funktionale Programmierung +- typisierte Programmmiersprachen + +Prinzipien der Programmierung + +### Erkenntnis + + +### Wiederholung + + +### Kritik + + + +--- +## SU 3 (07.11.2023) + + diff --git a/Programmierparadigmen.md b/Programmierparadigmen.md new file mode 100644 index 0000000..42a18c2 --- /dev/null +++ b/Programmierparadigmen.md @@ -0,0 +1,85 @@ +### Python + +- interpretierte Sprache + - Überetzung in andere Sprachen möglich +- Portabilität + +- objektorientiert + - Klassen gelten als Objekte, die aus Methoden und Attributen bestehen + - Methoden = Funktionen, Attribute = Daten + - Vererbung möglich + +- typisiert + - Implikation von Datentypen (dynamisch, Duck typing) + - direkte Fehlererkennung durch Interpreter + +- prozedural + - Algorithmen werden in einzelne Funktionen geteilt + - diese sind modular + - Code wird sequentiell bearbeitet + +- funktional + - Berechnungen durch Funktionen + - innerhalb der Funktionen werden Funktionen aufgerufen + - kompakte Syntax + + +### Java + +- imperativ +- objektorientiert (OOP) + - streng objekt-orientiert + - Konzept: Klassen/Objekte + - Vererbung/Kapselung/Polymorphie + - Modellierung komplexer Probleme leichter + - wartbar/skalierbar +- Typisierung: strikt typisiert +- plattformunabhängig + - cross-platform kompatibel +- Multi_Threaded +- funktional (seit neueren Versionen) + + +### C + +- Imperative Programmierung (auch prozedural) +- streng typisiert +- Vorteil: Hardwarenähe, Kompatibilität + - Schnelligkeit +- Nachteil: Speicherverwaltung + + +### Go + +- modular, imperativ +- breite Palette an Programmierparadigmen +- teilweise objektorientiert & funkional + - keine Vererbung + - statt Klassen werden Structs verwendet +- einfache, effektive Programmierung +- Typisierung: statisch + - vor Kompilierung müssen Datentypen fest stehen +- Schnelligkeit von C & Anwendungsmöglichkeit/Simplizität von Python +- Multi-Threading + + +### JavaScript +- Erweiterung von HTML +- funktional +- Multi-Paradigmen + - OOP, prozedural oder funktional +- dynamische Typsisierung +- 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 + - Vererbung +- TypeScript hat Einfluß von JavaScript/Java/C# +- Baut auf Supermenge von JAvaScript Bibliotheken auf +- Skalierbarkeit / Wartbarkeit --> Durch Einführung OOP