From a0b3afe33d494d79c96d86507b97aaeda3490359 Mon Sep 17 00:00:00 2001 From: Lucas Heil Date: Thu, 2 Nov 2023 19:40:56 +0100 Subject: [PATCH] Woche 2 --- Lerntagebuch.md | 24 ++++++++++++++++ Programmierparadigmen.md | 61 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 85 insertions(+) create mode 100644 Programmierparadigmen.md diff --git a/Lerntagebuch.md b/Lerntagebuch.md index 7091fb9..bbca346 100644 --- a/Lerntagebuch.md +++ b/Lerntagebuch.md @@ -19,3 +19,27 @@ ### Kritik: Noch keine + + +## Woche zwei (31.10.2023) + +### Lernziel: + + Ich war diese Woche krank und habe mir die Themen dieser Woche selber angeschaut. + In den Folien wird ueber Programmierparadigmen und Prinzipien geredet und die Unterschiede zwischen imperative, prozedurale, objektorientierte und deklarative Programmierung dargestellt. + Ich haben auch ueber typenlose und typisierte Sprachen gelernt. + Des Weiteren habe ich ueber Programmierprinzipien wie zum Beispiel SOLID, STUPID und KISS gelernt + +### Erkenntnis: + + Die Programmierprinzipien die ich gelernt haben kann ich gut in die Gruppenuebung einbringen. Vor allem STUPID und SOLID, damit man gut zusammen arbeiten kann und Fehler vermeidet, aber auch KISS damit man nichts zu komplex macht wodurch dann niemand es versteht + +### Wiederholung: + + Imperative Programmierung: Bei der imperativen Programmierung gibt man dem Programm eine Schritt fuer Schritt Anleitung fuer das was es machen und auch genau in der Reihenfolge. Es ist dadurch sehr gut nachvollziehbar. + +### Kritik: + + Noch keine + + \ No newline at end of file diff --git a/Programmierparadigmen.md b/Programmierparadigmen.md new file mode 100644 index 0000000..23aa26a --- /dev/null +++ b/Programmierparadigmen.md @@ -0,0 +1,61 @@ +# Uebung - Woche 2 + +## Sprachen + +### Java + Plattformunabhaengigkeit —> quellcode zunaechst in bytecode kompiliert; auf zielsystem in jeweilige maschinensprache umgewandelt (durch Java Runtime Environment (JRE)) + Bytecode als Zwischensprache + Objektorientierte Programmiersprache + 5 Ziele + einfache objektorientierte, verteilte Programmiersprache sein + robust und sicher + architekturneutral und portabel + sehr leistungsfähig + Interpretierbar, parallelisiert und dynamisch gebunden sein + +### C + Imperative und procedural Programmiersprache + eingesetzt fuer System- und Anwendungsprogrammierung eingesetzt (z.B. grundlegende Programme aller Unix- Systene und Systemkernel vieler Betriebssysteme) + Viele sprachen orientieren sich an der Syntax + +### Python + universelle, ueblicherweise interpretierte, höhere Programmiersprache + unterstuetzt mehrere Programmierparadigmen z.B. objektorientiert, aspektorientierte und funktionale Programmierung. + Dynamische Typisierung + oft auch als skriptsprache benutzt + +### Go + kompilierbare Programmierspreache, die Nebenlaefugkeit und automatisierte Speicherbereinigung unterstuetzt + im Hinblick auf skalierbare Netzwerkdienste, Cluster und Cloud-Computing entwickelt + bietet Closure, Reflexion und Typesicherheit + Unterstützt Objektorientierung + Auf Klassen und deren Vererbung wird verzichtet + +### JavaScript + Skriptsprache + wird auf Browsern, Servern und Microcontrollern benutzt + Dynamisch typisierte, objektorientierte aber klassenlose Skriptsprache + laesst sich je nach bedarf objektorientiert, prozedural oder funktional programmieren + +### TypeScript + echte Obermenge von JavaScript (javascript laeuft auch hier) + kann durch plugins verschiedene Managment-Tools integrieren + Paradigmen funktional, imperativ, objektorientiert + + +## Programmierprinzipien + +### DRY (Dont Repeat Yourself) + when writing avoid duplication, if copy pasted it isnt dry anymore + +### Single Responsibility + Every class or module should only provide one specific functionality + +### Document the code +### Use comments to remind yourself or others what it is about + +### Refractor + Review Code and optimize it + +### Clean Code At All Cost + if code is easy to read its also easy to maintain, dont overcomplicate stuff