Flashcards
NPS 10 - Von Python und Affen
Cards in this deck (12)
- 1Was ist Type Inference?In manchen Sprachen müssen die Typen nicht explizit angegeben werden, sondern der Compiler ist selbst in der
Lage, die Typen der Variablen, Konstanten, ggf. Funktionen
etc. aus den Wertzuweisungen, Berechnungen, Aufrufen etc.
herzuleiten. Diese Typ-Herleitung heißt Type Inference. Man nennt dies dann implicit typing (oder auch Latent
Typing) im Gegensatz zum explicit typing beim Zwang zur expliziten Angabe aller Typen. Diese Sprachen sind trotz der fehlenden expliziten Typangabe
dann immer noch statisch getypt, da die Typprüfung trotzdem noch zur Compile-Zeit stattfinden kann. - 2Was sind die Vorteile des Static Typing?- Viele Fehler werden früh gefunden, beim Compilieren und nicht bei der
Programmausführung (im Test oder beim Kunden).
- Fehlermeldungen bezeichnen klar, „was noch fehlt“.
- Kann zur Laufzeit dann schneller sein, da dann keine Checks mehr nötig.
- Bessere Unterstützung des Programmierers beim Programmieren möglich. - 3Was sind die Nachteile des Static Typing?- Typen immer explizit angeben müssen bedeutet Aufwand und ist unflexibel für Erweiterungen.
- Man kann Erweiterungen erst dann testen, wenn der Code „unter Typaspekten vollständig“ ist.
- Unvollständiger Code kann oftmals nicht „partiell getestet / ausprobiert“ werden, da das Typsystem die Compilation verhindert (mit Fehler betreffend der fehlenden Teile).
- Hinzufügen einer neuen Klasse bedeutet, dass man von der bisherigen
Basisklasse (oder Interfaces) ableiten muss, damit die neuen Objekte auch passen. - 4Sind Funktionen First Class Citizens in Python? Was bedeutet das in diesem Kontext?Funktionen sind „first-class citizens“ in Python. D.h. sie können genau wie die Werte von Standard-Datentypen als
Funktionsparameter oder funktionsrückgabewerte übergeben
werden, als Werte an Variablen zugewiesen werden etc - 5Wird bei Python dynamic oder static typing verwendet? Was ist der Unterschied?Dynamic Typing, das bedeutet, dass die Typprüfungen zur Laufzeit vorgenommen werden, und zwar „wenn nötig“, d.h. z.B. bei Operationen (Operatoren) oder Methodenaufrufen auf Werten / Objekten.
- 6Was sind Vorteile des Dynamic Typing unter Python?Die dynamische Typisierung ermöglicht größere Flexibilität bei
der Programmierung. Dynamisch getypte Sprachen sind oft einfacher zu lernen und zu benutzen als statisch getypte Sprachen. Die Charakteristik der Benutzung / Programmierung ist häufig
interaktiv, da die Sprachen interpretiert sind (oder sich aufgrund von Just-in-Time Compilation so „anfühlen“). Dies hat beigetragen zum großen Erfolg dynamisch getypter Sprachen, z.B. JavaScript, Python, Ruby, Perl, PHP, … - 7Warum ist Prototypische Programmierung in dynamisch getypten Sprachen einfacher möglich?Prototypische Programmentwicklung ist mit dynamisch getypten Sprachen einfacher möglich, da z.B. noch nicht
implementierte Methoden nicht auffallen, solange sie in den
prototypisch durchlaufenen Codeteilen nicht aufgerufen
werden. Solange der nicht durchlaufen Code syntaktisch korrekt ist,
kann er unvollständig sein, ohne dass dies Probleme macht. - 8Was ist der Vorteil von dynamisch getypten Sprachen bezüglich der Wiederverwendung?… ist häufig einfacher als bei statisch getypten Sprachen, da die größere Flexibilität des Dynamic Typing dazu führt, dass der Code mit weniger Anpassungen „wieder funktioniert“ bzw.
sich wegen seiner Flexibilität „besser in die neue Nutzung einfügt“.
Auch ist die automatische Generierung von Code für dynamisch getypte Sprachen deutlich einfacher als für statisch getypte Sprachen. - 9Was sind Type Annotations? (Python 3.x)Es sind Ausdrücke, die erst einmal nur (syntaktisch gültig) in
den Quelltext eingefügt werden können. Sie werden auch zur Laufzeit des Programms (dem Programm
selbst) verfügbar gemacht, ansonsten aber komplett ignoriert.
Die gespeicherten Annotations können dann als Basis für eine
Typprüfung dienen, entweder zur Laufzeit des Python Programms durch das Programm selbst, oder durch externe Software, die den Quelltext prüft.
Bsp.:
def greet(name: str, age: int) -> str - 10Was ist Duck Typing?Duck Typing ist eine Variante des Dynamic Typing. Es prüft, zur Laufzeit des Programms, immer nur die Methode, die
gerade aufgerufen wird. Existiert sie, so wird sie aufgerufen. - 11Was ist Monkey Patching? Wofür kann es genutzt werden?Es bezeichnet die Änderung von Klassen, Modulen, Objekten
etc. zur Laufzeit des Programms.
Ziel: Änderung / Erweiterung oder ggf. Korrektur der Funktionalität
der entsprechenden Programmteile. (z.B. Einblenden von Debug-Info o.Ä.) - 12Was ist Wrapping beim Monkey Patching?Wrapping ist das Überschreiben einer Methode im Kontext des Monkeypatchings nach einer speziellen Struktur: Die neue Methode ruft die alte Methode auf, macht aber vorher oder nachher noch etwas anderes, z.B. Debug Ausgaben.
Information
- Description
- Flashcards on NPS 10 - Von Python und Affen, created by Tojansen on 20/01/2015.
- Created by
- Tojansen
- Views
- 15
- Rating