Zusammenfassung Folien Flashcards
Was versteht man unter „Declarative Languages“?
Beschreibt das Resultat, das ausgegeben werden soll.
=Das WAS wird gefragt
Imperative Language
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
Interpretive Language
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
Vor-und Nachteile von Interpretive Languages
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.
Compiled Language
-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
Vor-und Nachteile von Compiled Language
-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.
Divide and Conquer
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
Welche Arten zu Programmieren gibt es?
-Prozedurales Programmieren
-Funktionales Programmieren
-Objektorientiertes Programmieren
Prozedurales Programmieren
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
Funktionales Programmieren
- 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
Objektorientiertes Programmieren
-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
Zen Of Python
Beautiful is better than ugly
Explicit is better than implicit
Simple is better than complex
Complex is better than complicated
Readability counts
Python Vokabular
Die Keywords, in der jeweiligen Sprache, z.B. class, def, pass, break, continue, if, elif, else, for
Syntax Python
Die Regeln, nach denen wir Sprachelemente benutzen sollen
Z.B.: a=10 if b >= 2 else 20
Semantik Python
-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
Coding Basics:
Code Dokumentation
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.
Styling Guide für Python Code:
-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
Naming Conventions
-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
Datentypen in Python
Ganze Zahl =
Int(Integer)
Kommazahl=
Float
Zeichenfolge=
Str(String)
Iterable Datentypen (vgl. Arrays)=
-sind Objekte, die man durchlaufen kann
-sind zentral für Schleifen, Ranges, Dictionaries
-Bsp.: Listen, Tupel, Strings Dictionaries, Sets, Ranges
List/dict/tuple
True/False =
Bool
-Es können die gewohnten Rechenoperationen (+,-,*,/) verwendet werden.
-Modolo (%), gibt den Rest einer Division aus
Iterables
=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)