<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://staging.moocwiki.org/index.php?action=history&amp;feed=atom&amp;title=Functional_Programming</id>
	<title>Functional Programming - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://staging.moocwiki.org/index.php?action=history&amp;feed=atom&amp;title=Functional_Programming"/>
	<link rel="alternate" type="text/html" href="https://staging.moocwiki.org/index.php?title=Functional_Programming&amp;action=history"/>
	<updated>2026-06-10T16:07:21Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in MOOCsWiki Staging</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://staging.moocwiki.org/index.php?title=Functional_Programming&amp;diff=9942&amp;oldid=prev</id>
		<title>oldwiki&gt;Glanz: Die Seite wurde neu angelegt: „{{:MOOCit - Oben}} {| align=center {{:D-Tab}} &#039;&#039;&#039;Funktionale Programmierung&#039;&#039;&#039; {{o}} Unveränderlichkeit {{o}} Reine Funktionen {{o}} Funktionen höherer Ordnung {{o}} Nebenläufigkeit |} = Einleitung =  In diesem aiMOOC tauchen wir tief in das Thema des funktionalen Programmierens ein, ein Programmierparadigma, das die Auswertung von Funktionen und die U…“</title>
		<link rel="alternate" type="text/html" href="https://staging.moocwiki.org/index.php?title=Functional_Programming&amp;diff=9942&amp;oldid=prev"/>
		<updated>2024-04-05T15:07:48Z</updated>

		<summary type="html">&lt;p&gt;Die Seite wurde neu angelegt: „{{:MOOCit - Oben}} {| align=center {{:D-Tab}} &amp;#039;&amp;#039;&amp;#039;&lt;a href=&quot;/index.php?title=Funktionale_Programmierung&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Funktionale Programmierung (Seite nicht vorhanden)&quot;&gt;Funktionale Programmierung&lt;/a&gt;&amp;#039;&amp;#039;&amp;#039; {{o}} &lt;a href=&quot;/index.php?title=Unver%C3%A4nderlichkeit&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Unveränderlichkeit (Seite nicht vorhanden)&quot;&gt;Unveränderlichkeit&lt;/a&gt; {{o}} &lt;a href=&quot;/index.php?title=Reine_Funktionen&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Reine Funktionen (Seite nicht vorhanden)&quot;&gt;Reine Funktionen&lt;/a&gt; {{o}} &lt;a href=&quot;/index.php?title=Funktionen_h%C3%B6herer_Ordnung&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Funktionen höherer Ordnung (Seite nicht vorhanden)&quot;&gt;Funktionen höherer Ordnung&lt;/a&gt; {{o}} &lt;a href=&quot;/index.php?title=Nebenl%C3%A4ufigkeit&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Nebenläufigkeit (Seite nicht vorhanden)&quot;&gt;Nebenläufigkeit&lt;/a&gt; |} = Einleitung =  In diesem aiMOOC tauchen wir tief in das Thema des funktionalen Programmierens ein, ein Programmierparadigma, das die Auswertung von Funktionen und die U…“&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{:MOOCit - Oben}}&lt;br /&gt;
{| align=center&lt;br /&gt;
{{:D-Tab}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;[[Funktionale Programmierung]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
{{o}} [[Unveränderlichkeit|Unveränderlichkeit]]&lt;br /&gt;
{{o}} [[Reine Funktionen|Reine Funktionen]]&lt;br /&gt;
{{o}} [[Funktionen höherer Ordnung|Funktionen höherer Ordnung]]&lt;br /&gt;
{{o}} [[Nebenläufigkeit|Nebenläufigkeit]]&lt;br /&gt;
|}&lt;br /&gt;
= Einleitung =&lt;br /&gt;
&lt;br /&gt;
In diesem aiMOOC tauchen wir tief in das Thema des funktionalen Programmierens ein, ein Programmierparadigma, das die Auswertung von Funktionen und die Unveränderlichkeit von Zuständen und Daten in den Mittelpunkt stellt. Dieses Paradigma unterscheidet sich grundlegend von der imperativen Programmierung, die Zustandsänderungen durch Anweisungen betont. Wir werden die Konzepte, Vorteile und Herausforderungen des funktionalen Programmierens untersuchen, sowie praktische Beispiele und Übungen anbieten, um die Theorie in die Praxis umzusetzen.&lt;br /&gt;
&lt;br /&gt;
{{:BRK}}&lt;br /&gt;
= Was ist funktionales Programmieren? =&lt;br /&gt;
&lt;br /&gt;
{{:BRK}}&lt;br /&gt;
Funktionales Programmieren ([[Funktionales Programmieren|Funktionales Programmieren]]) ist ein Programmierparadigma, das die Auswertung von Funktionen und die Vermeidung von Zustandsänderungen und veränderlichen Daten betont. Es basiert auf dem mathematischen Konzept der Funktion in der Mathematik. In der funktionalen Programmierung sind Funktionen &amp;quot;erstklassige Bürger&amp;quot;, was bedeutet, dass sie wie jede andere Variable behandelt werden können. Dies ermöglicht Konzepte wie höhere Funktionen (Funktionen, die andere Funktionen als Argumente nehmen oder als Ergebnis zurückgeben) und Funktionen höherer Ordnung (Funktionen, die aus anderen Funktionen zusammengesetzt sind).&lt;br /&gt;
&lt;br /&gt;
{{:BRK}}&lt;br /&gt;
== Grundprinzipien ==&lt;br /&gt;
&lt;br /&gt;
{{:BRK}}&lt;br /&gt;
=== Unveränderlichkeit ===&lt;br /&gt;
In der funktionalen Programmierung sind Daten unveränderlich. Sobald ein Datenobjekt erstellt wurde, kann es nicht mehr verändert werden. Dies führt zu einfacherem und vorhersagbarem Code, da keine Seiteneffekte durch Datenänderungen entstehen können.&lt;br /&gt;
&lt;br /&gt;
{{:BRK}}&lt;br /&gt;
=== Reine Funktionen ===&lt;br /&gt;
Reine Funktionen sind ein weiteres Kernkonzept. Eine Funktion gilt als rein, wenn das gleiche Eingabeargument immer zum gleichen Ergebnis führt und die Ausführung der Funktion keine sichtbaren Seiteneffekte hat.&lt;br /&gt;
&lt;br /&gt;
{{:BRK}}&lt;br /&gt;
=== Funktionen höherer Ordnung ===&lt;br /&gt;
Funktionen höherer Ordnung nehmen Funktionen als Argumente an oder geben sie als Ergebnis zurück. Dieses Konzept ist mächtig und erlaubt es, sehr ausdrucksstarken und modularen Code zu schreiben.&lt;br /&gt;
&lt;br /&gt;
{{:BRK}}&lt;br /&gt;
= Vorteile und Herausforderungen =&lt;br /&gt;
&lt;br /&gt;
{{:BRK}}&lt;br /&gt;
== Vorteile ==&lt;br /&gt;
&lt;br /&gt;
{{:BRK}}&lt;br /&gt;
o [[Einfachheit]]: Unveränderliche Daten und reine Funktionen führen zu transparenterem und vorhersagbarem Code.&lt;br /&gt;
o [[Wiederverwendbarkeit]]: Funktionen höherer Ordnung und reine Funktionen fördern die Wiederverwendung von Code.&lt;br /&gt;
o [[Testbarkeit]]: Reine Funktionen sind einfacher zu testen, da sie keine externen Abhängigkeiten haben.&lt;br /&gt;
o [[Nebenläufigkeit]]: Unveränderliche Daten vereinfachen die Programmierung nebenläufiger Anwendungen erheblich.&lt;br /&gt;
&lt;br /&gt;
{{:BRK}}&lt;br /&gt;
== Herausforderungen ==&lt;br /&gt;
&lt;br /&gt;
{{:BRK}}&lt;br /&gt;
o [[Lernkurve]]: Das Konzept des funktionalen Programmierens kann für Entwickler, die mit imperativen Paradigmen vertraut sind, zunächst unintuitiv sein.&lt;br /&gt;
o [[Leistung]]: Die Unveränderlichkeit kann in einigen Fällen zu Leistungseinbußen führen, da sie die Erstellung neuer Kopien von Datenobjekten erfordert.&lt;br /&gt;
o [[Ressourcenverbrauch]]: Ähnlich wie bei der Leistung kann die Unveränderlichkeit in bestimmten Szenarien einen höheren Speicherverbrauch bedeuten.&lt;br /&gt;
&lt;br /&gt;
{{:BRK}}&lt;br /&gt;
= Interaktive Aufgaben =&lt;br /&gt;
&lt;br /&gt;
{{:BRK}}&lt;br /&gt;
== Quiz: Teste Dein Wissen ==&lt;br /&gt;
{{:Multiple-Choice Anfang}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Was ist eine reine Funktion?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
(Eine Funktion, die bei gleichen Eingaben immer dasselbe Ergebnis liefert und keine Seiteneffekte hat.)&lt;br /&gt;
(!Eine Funktion, die ihre Eingaben verändert.)&lt;br /&gt;
(!Eine Funktion, die zufällige Ergebnisse liefert.)&lt;br /&gt;
(!Eine Funktion, die nur einmal in einem Programm aufgerufen werden kann.)&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Welches Konzept ist NICHT ein Teil des funktionalen Programmierens?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
(Zustandsänderungen)&lt;br /&gt;
(!Unveränderlichkeit)&lt;br /&gt;
(!Reine Funktionen)&lt;br /&gt;
(!Funktionen höherer Ordnung)&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Was bedeutet &amp;quot;Funktionen sind erstklassige Bürger&amp;quot; im Kontext des funktionalen Programmierens?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
(Dass Funktionen wie jede andere Variable behandelt werden können.)&lt;br /&gt;
(!Dass Funktionen nur in speziellen Fällen verwendet werden dürfen.)&lt;br /&gt;
(!Dass Funktionen überflüssig sind und vermieden werden sollten.)&lt;br /&gt;
(!Dass Funktionen nicht als Argumente an andere Funktionen übergeben werden können.)&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Wodurch wird die Testbarkeit in der funktionalen Programmierung erhöht?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
(Durch die Verwendung reiner Funktionen)&lt;br /&gt;
(!Durch die Veränderung von Zuständen)&lt;br /&gt;
(!Durch direkte Manipulation von Datenstrukturen)&lt;br /&gt;
(!Durch das Ignorieren von Seiteneffekten)&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Was ermöglichen Funktionen höherer Ordnung?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
(Sie ermöglichen es, Funktionen als Argumente anzunehmen oder sie als Ergebnisse zurückzugeben.)&lt;br /&gt;
(!Sie reduzieren die Notwendigkeit von Schleifen in Programmen.)&lt;br /&gt;
(!Sie eliminieren die Verwendung von Variablen.)&lt;br /&gt;
(!Sie garantieren die Ausführung von Programmen in linearer Zeit.)&lt;br /&gt;
{{:Multiple-Choice Ende}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{:BRK}}&lt;br /&gt;
== Memory ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;memo-quiz&amp;quot;&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| Unveränderlichkeit || Daten können nach ihrer Erstellung nicht verändert werden&lt;br /&gt;
|-&lt;br /&gt;
| Reine Funktion || Funktion ohne Seiteneffekte und mit idempotenten Eigenschaften&lt;br /&gt;
|-&lt;br /&gt;
| Funktionen höherer Ordnung || Funktionen, die andere Funktionen als Argumente nehmen oder als Ergebnisse zurückgeben&lt;br /&gt;
|-&lt;br /&gt;
| Nebenläufigkeit || Einfacher durch Unveränderlichkeit&lt;br /&gt;
|-&lt;br /&gt;
| Imperatives Programmieren || Zustandsänderungen und Anweisungen&lt;br /&gt;
|}&lt;br /&gt;
{{:Memo Ende}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{:BRK}}&lt;br /&gt;
== Kreuzworträtsel ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;kreuzwort-quiz&amp;quot;&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| Idempotenz || Eine Operation, die mehrfach angewendet das gleiche Ergebnis liefert&lt;br /&gt;
|-&lt;br /&gt;
| Haskell || Eine weit verbreitete funktionale Programmiersprache&lt;br /&gt;
|-&lt;br /&gt;
| Curry || Technik, bei der eine Funktion, die mehrere Argumente erwartet, in eine Reihe von Funktionen umgewandelt wird, die jeweils ein Argument erwarten&lt;br /&gt;
|-&lt;br /&gt;
| Lambda || Anonyme Funktionen in vielen funktionalen Sprachen&lt;br /&gt;
|-&lt;br /&gt;
| Elixir || Moderne, funktionale Programmiersprache, die für Nebenläufigkeit und Fehlertoleranz entwickelt wurde&lt;br /&gt;
|-&lt;br /&gt;
| Monade || Struktur, die es ermöglicht, Operationen sequenziell zu verketten&lt;br /&gt;
|-&lt;br /&gt;
| Elm || Funktionale Sprache für Frontend-Entwicklung&lt;br /&gt;
|-&lt;br /&gt;
| Closure || Eine Funktion, die Zugriff auf den umgebenden lexikalischen Kontext hat&lt;br /&gt;
|}&lt;br /&gt;
{{:Kreuzwort Ende}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== LearningApps ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;iframe&amp;gt; https://learningapps.org/index.php?s=Funktionales+Programmieren &amp;lt;/iframe&amp;gt;&lt;br /&gt;
== Lückentext ==&lt;br /&gt;
&amp;lt;quiz display=simple&amp;gt;&lt;br /&gt;
{&amp;#039;&amp;#039;&amp;#039;Vervollständige den Text.&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;&lt;br /&gt;
|type=&amp;quot;{}&amp;quot;}&lt;br /&gt;
In der funktionalen Programmierung sind Daten { unveränderlich } und Funktionen werden als { erste Klasse } behandelt. Eine reine Funktion liefert bei gleichen Eingaben immer das { gleiche Ergebnis } und hat keine { Seiteneffekte }. Funktionen höherer Ordnung { nehmen } Funktionen als Argumente oder geben sie als Ergebnis zurück.&lt;br /&gt;
&amp;lt;/quiz&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{:BRK}}&lt;br /&gt;
= Offene Aufgaben =&lt;br /&gt;
&lt;br /&gt;
{{:BRK}}&lt;br /&gt;
=== Leicht ===&lt;br /&gt;
{{o}} [[Funktionsbeispiele]]: Schreibe drei Beispiele für reine Funktionen in einer Programmiersprache deiner Wahl.&lt;br /&gt;
{{o}} [[Unveränderlichkeit untersuchen]]: Untersuche, wie Unveränderlichkeit in einer funktionalen Sprache deiner Wahl umgesetzt wird.&lt;br /&gt;
{{o}} [[Funktionskomposition]]: Erstelle eine einfache Funktion durch Komposition zweier anderer Funktionen.&lt;br /&gt;
&lt;br /&gt;
=== Standard ===&lt;br /&gt;
{{o}} [[Nebenläufige Programmierung]]: Entwickle ein einfaches Beispiel für nebenläufige Programmierung unter Verwendung von Unveränderlichkeit.&lt;br /&gt;
{{o}} [[Monaden verstehen]]: Erkläre das Konzept der Monade in deinen eigenen Worten und gib ein Beispiel.&lt;br /&gt;
{{o}} [[Haskell-Übung]]: Löse ein einfaches Problem in Haskell, um deine Fähigkeiten in funktionaler Programmierung zu testen.&lt;br /&gt;
&lt;br /&gt;
=== Schwer ===&lt;br /&gt;
{{o}} [[Funktionales Refactoring]]: Nimm ein imperatives Programm und refaktoriere es in einen funktionalen Stil.&lt;br /&gt;
{{o}} [[Funktional vs. Imperativ]]: Vergleiche die Leistung eines funktionalen und eines imperativen Programms bei der Lösung desselben Problems.&lt;br /&gt;
{{o}} [[Fortgeschrittene Funktionen]]: Entwickle eine fortgeschrittene Anwendung der Funktionen höherer Ordnung in einem Projekt deiner Wahl.&lt;br /&gt;
{{:Offene Aufgabe - MOOC erstellen}}&lt;br /&gt;
&lt;br /&gt;
{{:BRK}}&lt;br /&gt;
= Lernkontrolle =&lt;br /&gt;
&lt;br /&gt;
{{:BRK}}&lt;br /&gt;
{{o}} [[Konzepte verbinden]]: Erkläre, wie Unveränderlichkeit zur Vereinfachung von nebenläufiger Programmierung beiträgt.&lt;br /&gt;
{{o}} [[Kritische Reflexion]]: Diskutiere die potenziellen Nachteile der Unveränderlichkeit in der funktionalen Programmierung.&lt;br /&gt;
{{o}} [[Anwendungsfälle]]: Identifiziere und erkläre drei Anwendungsfälle, in denen funktionale Programmierung besonders vorteilhaft sein kann.&lt;br /&gt;
{{o}} [[Paradigmenvergleich]]: Vergleiche funktionale mit objektorientierter Programmierung hinsichtlich der Code-Wartung und Testbarkeit.&lt;br /&gt;
{{o}} [[Innovationen]]: Diskutiere, wie funktionale Programmierung zur Entwicklung neuer Software-Entwicklungsmethoden beitragen kann.&lt;br /&gt;
&lt;br /&gt;
= OERs zum Thema =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;iframe&amp;gt; https://de.m.wikipedia.org/wiki/Funktionale_Programmierung &amp;lt;/iframe&amp;gt;&lt;br /&gt;
= Links =&lt;br /&gt;
{| align=center&lt;br /&gt;
{{:D-Tab}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;[[Funktionale Programmierung]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
{{o}} [[Unveränderlichkeit|Unveränderlichkeit]]&lt;br /&gt;
{{o}} [[Reine Funktionen|Reine Funktionen]]&lt;br /&gt;
{{o}} [[Funktionen höherer Ordnung|Funktionen höherer Ordnung]]&lt;br /&gt;
{{o}} [[Nebenläufigkeit|Nebenläufigkeit]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Teilen - Diskussion - Bewerten =&lt;br /&gt;
{{:Teilen - MOOCit}}&lt;br /&gt;
[[Kategorie:AI_MOOC]] [[Kategorie:GPT aiMOOC]] [[Kategorie:Informatik]]&lt;/div&gt;</summary>
		<author><name>oldwiki&gt;Glanz</name></author>
	</entry>
</feed>