Zusammenfassung Folien Flashcards

1
Q

Was versteht man unter „Declarative Languages“?

A

Beschreibt das Resultat, das ausgegeben werden soll.
=Das WAS wird gefragt

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Imperative Language

A

Beschreibt den Prozess, der exekutiert werden soll, um ein bestimmtes Resultat zu erhalten (z.B.: Python und die meisten anderen Programmiersprachen) WIE ist gefragt
-Kontrollstrukturen, wie: if, for, while sind typisch
-nutzt Variablen, deren Werte sich im Laufe des Programms ändern können
-Klarer Fokus auf den Algorithmus

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Interpretive Language

A

Quellcode (in Englisch) wird vor der Ausführung von einem Interpreter in Maschinencode übersetzt und dann vom Prozessor ausgeführt.

Z.B.: Python, Javascript, Ruby

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Vor-und Nachteile von Interpretive Languages

A

Vorteile:

-Flexibilität: Einfaches Testen und Debuggen, da der Code sofort ausgeführt wird.
-Plattformunabängigkeit: Der gleiche Code kann auf verschiedenen Systemen ausgeführt werden, solange ein passender Interpreter verfügbar ist.
-Einfachheit: Weniger Schritte zwischen Schreiben und Ausführen des Codes

Nachteile:

-Langsamer: Da der Code bei jeder Ausführung neu interpretiert wird, ist die Performance geringer als bei Compiled Languages.
-Fehler zur Laufzeit: Fehler werden erst entdeckt, wenn der fehlerhafte Code ausgeführt wird.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Compiled Language

A

-Der Quellcode wird Zeile für Zeile direkt zur Laufzeit ausgeführt
-Interpreter liest den Code, übersetzt ihn in Maschinencode, Prozessor führt ihn sofort aus
-ursprünglicher Quellcode wird nicht benötigt
-Beispielsprachen: Python, JavaScript, Ruby

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Vor-und Nachteile von Compiled Language

A

-Vorteile:
-Schnelligkeit: Übersetzung erfolgt nur ein Mal
-Fehlerfreieheit beim Start: Compiler erkennt das vor der Ausführung
-Effizienz: Direkte Ausführung auf dem Prozessor ermöglicht optimierte Performance

Nachteile:
-Kompilierung nötig: Ein zusätzlicher Schritt ist erforderlich, bevor Ausführung des Codes
-Plattformabhängigkeit: Kompilierter Code muss für jede Zielplattform separat erzeugt werden.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Divide and Conquer

A

Ist ein Konzept für die Entwicklung von Algorithmen.
-effiziente Problemlösung indem sie in kleinere Teilprobleme zerlegt
-Auch Pseudocode kann helfen, dieser vereinfacht und generalisiert

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Welche Arten zu Programmieren gibt es?

A

-Prozedurales Programmieren
-Funktionales Programmieren
-Objektorientiertes Programmieren

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Prozedurales Programmieren

A

Spaghetticode“: Der Code wird von oben nach unten durchgeführt und wird dabei von Entscheidungen und Loops „geführt“

Vorteile:
- Klare Strukturierung
- Wiederverwendbare Funktionen
- Schrittweise Entwicklung
- Gute Effizienz
- Modularer Aufbau

Nachteile:
- Begrenzte Abstraktion
- Globale Datenabhängigkeiten
- Risiko von Seiteneffekten
- Eingeschränkte Vererbung
- Weniger flexible Datenstrukturen

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Funktionales Programmieren

A
  • Programm besteht aus Funktionen, welche aus Inputs —>Outputs generieren.
    -Funktionen müssen dafür zuerst definiert werden und können dann auch miteinander verknüpft werden
    -Gut für Wiederverwendbarkeit

Vorteile:
- Mathematische Präzision
- Unveränderliche Daten
- Hohe Abstraktion
- Einfache Parallelisierung
- Gute Testbarkeit

Nachteile:
- Steile Lernkurve
- Performance-Overhead
- Begrenzte Praxistauglichkeit
- Komplexe Konzepte
- Weniger Industriestandards

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Objektorientiertes Programmieren

A

-Code wird entlang von Klassen definiert
-diese Klassen ähneln Entitätstypen, welche diverse Eigenschaften und Funktionen besitzen können
-Ist der goldene Standard bei der Programmierung

Vorteile:
- Modularität und Strukturierung
- Wiederverwendbarkeit von Code
- Effektive Abstraktion
- Datenkapselung
- Flexible Erweiterbarkeit

Nachteile:
- Höhere Komplexität
- Performance-Overhead
- Risiko von Überdesign
- Steile Lernkurve
- Mehr Entwicklungsaufwand

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Zen Of Python

A

Beautiful is better than ugly
Explicit is better than implicit
Simple is better than complex
Complex is better than complicated
Readability counts

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Python Vokabular

A

Die Keywords, in der jeweiligen Sprache, z.B. class, def, pass, break, continue, if, elif, else, for

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Syntax Python

A

Die Regeln, nach denen wir Sprachelemente benutzen sollen
Z.B.: a=10 if b >= 2 else 20

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Semantik Python

A

-Beschreibt einen syntaktisch korrekten Term
Z.B.: Let a be 10 if the value of b is larger than equal 2. If not, let a be 20.

Python Code wird in Textdateien geschrieben, die mit .py enden. Beim Schreiben helfen IDEs (Integrated development environments), wie visual studio Code

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Coding Basics:
Code Dokumentation

A

Kommentare sind essenziell für die Dokumentation von Code. Code wird öfter gelesen als geschrieben, daher ist die Dokumentation sehr wichtig.

-mit „xyz“ kann ein Kommentar geschrieben werden, der mehrere Zeilen umfasst.
In einer Zeile funktioniert es mit #

-Neben den Kommentaren kann man auch mit docstrings (Anfang einer Funktion/Klasse) dokumentiert werden.

17
Q

Styling Guide für Python Code:

A

-eingerückt wird mit 4 Leerzeichen
-Jede Zeile soll nicht länger als 79 Zeichen sein
-Um Funktionen und Klassen abzutrennen, werden 2 leere Zeilen benutzt
-imports sollen in separaten Zeilen sein
-Für Funktionen und Klassen sollen docstrings verwendet werden

18
Q

Naming Conventions

A

-Classes: CapWords starting with a capital letter
-Functions: lower_case separated with underscore
-Variables: lower_case separated with underscore
-Constants: ALL_CAPS separated with underscore

19
Q

Datentypen in Python

Ganze Zahl =

A

Int(Integer)

20
Q

Kommazahl=

21
Q

Zeichenfolge=

A

Str(String)

22
Q

Iterable Datentypen (vgl. Arrays)=

A

-sind Objekte, die man durchlaufen kann
-sind zentral für Schleifen, Ranges, Dictionaries
-Bsp.: Listen, Tupel, Strings Dictionaries, Sets, Ranges
List/dict/tuple

23
Q

True/False =

A

Bool

-Es können die gewohnten Rechenoperationen (+,-,*,/) verwendet werden.
-Modolo (%), gibt den Rest einer Division aus

24
Q

Iterables

A

=Listen, werden mit [ ] definiert, enthalten mehrere Werte
-können sortiert werden
-Zugriff auf einzelne Elemente in der Liste möglich
-Listenelement können mit diversen Funktionen bearbeitet werden z.B.: l.append() (fügt einen Wert in der Liste hinzu)

25
**Dictionaries**
-Wird mit { } definiert -Elemente brauchen nicht nur Werte, sondern auch Keys, welche diese Werte beschreiben -Auf diese Werte kann über jeweiligen Key zugegriffen werden, z.B.: {„name“: „Paul“, „age“:12}
26
**Boolsche Ausdrücke**
=Terme, in denen Wahrheitsfragen gemacht werden können. Dafür wird **==** verwendet. Mit einem einzelnen **=** wird ein Wert zugeordnet
27
**Conditions**
-Schlüsselwörter: **if, else, elif** =Gibt an, was ein Programm machen soll, wenn ein bestimmter Fall eintritt. If-Statements können auch ineinander verschachtelt werden. -Nach jedem von diesen Schlüsselwörtern muss ein **:** gesetzt werden. -und die nächste Zeile muss **eingerückt** werden
28
**Loops**
-2 Arten: **For** und **While** Loops - **Loops** ermöglichen den Code zu wiederholen und werden mit **break** und **continue** gesteuert. -Ein Loop führt für eine Reihe von Elementen etwas aus. —> man kann über eine Liste „drüberiterieren“. -ein **for-loop** wenn Anzahl von Iterationen vorher bekannt ist. Iteriert über eine Sequenz (wie eine Liste, ein Tupel, ein String, ein Range-Objekt) oder eine andere iterierbare Struktur. **Verwendung:** Iteration über eine Liste, ein Array oder andere Datenstrukturen. Schleifen mit einer bekannten Anzahl von Wiederholungen. -ein **while-loop** Eine while-Schleife wird verwendet, wenn die Anzahl der Iterationen nicht im Voraus bekannt ist und die Schleife basierend auf einer Bedingung ausgeführt werden soll. **Funktionsweise:** Führt den Schleifenblock aus, solange die angegebene Bedingung True ist. Die Bedingung wird vor jedem Schleifendurchlauf geprüft. **Verwendung:** Iterationen, bei denen die Anzahl der Durchläufe von einer dynamischen Bedingung abhängt. Wird oft genutzt, wenn man eine Schleife benötigt, bis eine bestimmte Bedingung erfüllt ist. -**endlos-loops** können ohne Abbruchbedingungen vorkommen.
29
**Funktionen**
-2 Arten: **def (multi line)** und **lambda (single line)** -macht einen Code **wiederverwendbar** -**vermindert Nebeneffekte** auf anderen Codes
30
**Generators**
=spezielle Funktion, die einen „internal stat“ speichert. -verhält sich wie ein **iterable** , aber effizienter -benutzt **yield** anstatt **return**
31
**Packages (Libraries)**
-Erweitert Python mit Drittanbieter-Code. Werden mit **„pip“** installiert-Sammlung findet man unter pypi.prg -Projekte benötigen oft mehrere **Packages** , daher hat jedes Projekt—>requirements.txt (dort sind die benötigten Packages gelistet) -Umsetzung in virtuellen Umgebungen: am besten ohne Versionschaos, Abhängigkeiten etc.
32
**Error Handling**
-Python hilft bei **Fehler-Handhabung** , indem es verschiedene Fehlermeldungen ausgibt, wie z.B.: NameError, ZeroDivisionError, IndexError, KeyError, Syntaxerror -Fehler-Handhabung kann auch in Code eingebaut werden, bsp mit **assert**, **rais**, **try-except-else**
33
Vorteile von Declarative Language
1. **Höhere Abstraktionsebene**: Deklarative Sprachen ermöglichen es Entwicklern, sich auf das "Was" zu konzentrieren, anstatt sich um das "Wie" zu kümmern. Dies führt zu kürzerem und oft leichter verständlichem Code. 2. **Vereinfachte Problemlösung:** Durch die Fokussierung auf die Beschreibung des gewünschten Ergebnisses wird der Algorithmus abstrakt und weniger komplex dargestellt. 3. **Bessere Wartbarkeit:** Der Code ist in der Regel prägnanter und klarer strukturiert, was die Wartung und Weiterentwicklung erleichtert. 4. **Parallelisierung:** Deklarative Sprachen ermöglichen oft eine einfachere parallele Ausführung, da sie weniger imperative Kontrollstrukturen verwenden. 5. **Geringere Fehleranfälligkeit:** Durch die Reduktion von expliziten Schritten werden potenzielle Fehlerquellen minimiert. Die Wahl zwischen deklarativen und imperativen Ansätzen hängt stark vom spezifischen Anwendungsfall, den Projektanforderungen und den Präferenzen des Entwicklungsteams ab.
34
Nachteile von Declarative Language
Nachteile: 1. Leistungseinbußen: Die Abstraktion kann zu einer geringeren Recheneffizienz führen, da der Compiler oder Interpreter mehr Arbeit bei der Interpretation des Codes leisten muss. 2. Begrenzte Kontrolle: Entwickler haben weniger Kontrolle über die genaue Ausführung des Codes, was in performancekritischen Anwendungen problematisch sein kann. 3. Lernkurve: Für Entwickler, die an imperative Programmierung gewöhnt sind, kann der Umstieg auf deklarative Paradigmen herausfordernd sein. 4. Eingeschränkte Anwendbarkeit: Nicht alle Probleme lassen sich gleich gut mit deklarativen Ansätzen lösen, insbesondere bei sehr spezifischen oder komplexen Algorithmen. 5. Debugging-Schwierigkeiten: Die Fehlersuche kann komplizierter sein, da der Code weniger schrittweise nachvollziehbar ist. Beispiele für deklarative Sprachen sind SQL, HTML, funktionale Programmiersprachen wie Haskell, und deklarative Aspekte in Sprachen wie Python und JavaScript.
35
Vor und Nachteile Interpretive Language
Interpretative Sprachen: Vorteile: - Plattformunabhängigkeit - Schnelle Entwicklungszyklen - Einfaches Debugging - Hohe Flexibilität - Dynamische Typisierung Nachteile: - Geringere Performance - Höherer Ressourcenverbrauch - Sicherheitsrisiken - Laufzeitabhängigkeiten - Overhead bei Übersetzung Beispiele: - Python - JavaScript - Ruby - PHP