funktionale programmierung Flashcards
Was ist funktionale Programmierung?
Funktionale Programmierung ist eine deklarative Programmierparadigma, das beschreibt, was berechnet werden soll, anstatt wie es berechnet wird.
Was sind die Eigenschaften funktionaler Sprachen?
Funktionale Sprachen kennen keine Anweisungen, Schleifen oder klassischen Verzweigungen. Sie basieren nur auf mathematischen Funktionen.
Was ist referentielle Transparenz?
Referentielle Transparenz bedeutet, dass der Wert eines Ausdrucks nur von seiner Umgebung abhängt und immer denselben Wert liefert, unabhängig vom Zeitpunkt der Auswertung.
Was bedeutet Immutability?
Immutability bedeutet, dass Variablen in funktionalen Programmen unveränderlich sind. Einmal zugewiesene Werte können nicht mehr geändert werden.
Was ist Side-Effect-Freeness?
Side-Effect-Freeness bedeutet, dass eine Funktion nur von ihren Eingabeparametern abhängt und keine externen Zustände verändert.
Was ist das Substitutionsprinzip?
Das Substitutionsprinzip besagt, dass ein Ausdruck durch seinen Wert ersetzt werden kann, ohne die Programmkorrektheit zu beeinträchtigen.
Was ist Lazy Evaluation?
Lazy Evaluation verzögert die Auswertung eines Ausdrucks, bis sein Wert tatsächlich benötigt wird, und vermeidet so unnötige Berechnungen.
Was sind Higher-Order Functions?
Higher-Order Functions sind Funktionen, die andere Funktionen als Argumente erhalten oder Funktionen als Rückgabewert liefern.
Warum sind starke Typisierung und funktionale Programmierung vorteilhaft?
Starke Typisierung sorgt für weniger Fehler und erleichtert die Fehlersuche, was zu höherer Softwarequalität und kürzerer Entwicklungszeit führt.
Warum eignet sich funktionale Programmierung gut für parallele Systeme?
Durch Immutability und Side-Effect-Freeness entfällt die Notwendigkeit der Synchronisierung, was die Parallelisierung erleichtert.
Was ist der Vorteil von funktionaler Programmierung in der Telefonanlagenentwicklung?
Funktionale Programmierung ermöglicht es, viele parallele Verbindungen zu handhaben, da keine Synchronisation zwischen Threads erforderlich ist.
Welche Lektionen der funktionalen Programmierung lassen sich auf imperative Sprachen übertragen?
Minimiere globalen ‘shared state’, bevorzuge verteilten lokalen state, und vermeide Nebenwirkungen (Side-Effects).