Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

modul:m323:learningunits:lu01:loesungen:paradigmendetektiv [2026/08/18 10:07] – Neue Loesung LU01.L08 - Paradigmen-Detektiv adminmodul:m323:learningunits:lu01:loesungen:paradigmendetektiv [2026/08/18 10:18] (aktuell) – Typografie korrigiert admin
Zeile 19: Zeile 19:
 ==== 1. Deklarativ und trotzdem zustandsverändernd ==== ==== 1. Deklarativ und trotzdem zustandsverändernd ====
  
-Ausschnitt 8 (''UPDATE''). Der Satz „deklarativ heisst seiteneffektfreiist **falsch**. Seiteneffektfreiheit ist eine Eigenschaft der //puren funktionalen// Programmierung, nicht der deklarativen Programmierung insgesamt.+Ausschnitt 8 (''UPDATE''). Die Behauptung, deklarativ sei automatisch seiteneffektfreiist **falsch**. Seiteneffektfreiheit ist eine Eigenschaft der //puren funktionalen// Programmierung, nicht der deklarativen Programmierung insgesamt.
  
   * **Deklarativ** heisst nur: das //Was// wird beschrieben, nicht das //Wie//.   * **Deklarativ** heisst nur: das //Was// wird beschrieben, nicht das //Wie//.
Zeile 26: Zeile 26:
 Ein ''UPDATE'' beschreibt zwar deklarativ, welche Zeilen betroffen sind – die Wirkung auf die Datenbank bleibt aber ein handfester Seiteneffekt. Mehr dazu in LU02 (Pure Functions). Ein ''UPDATE'' beschreibt zwar deklarativ, welche Zeilen betroffen sind – die Wirkung auf die Datenbank bleibt aber ein handfester Seiteneffekt. Mehr dazu in LU02 (Pure Functions).
  
-==== 2. ''sort()'' vs. ''sorted()'' ====+==== 2. sort() vs. sorted() ====
  
 Ausschnitt 3 (''namen.sort()'') ist gefährlicher. Die Methode sortiert die Liste **an Ort und Stelle**. Jede andere Stelle im Programm, die dieselbe Liste referenziert, sieht ab sofort die veränderte Reihenfolge – auch dann, wenn sie auf die ursprüngliche Eingabereihenfolge angewiesen war. Solche Fehler treten oft erst weit entfernt von der Ursache auf und sind entsprechend mühsam zu finden. Ausschnitt 3 (''namen.sort()'') ist gefährlicher. Die Methode sortiert die Liste **an Ort und Stelle**. Jede andere Stelle im Programm, die dieselbe Liste referenziert, sieht ab sofort die veränderte Reihenfolge – auch dann, wenn sie auf die ursprüngliche Eingabereihenfolge angewiesen war. Solche Fehler treten oft erst weit entfernt von der Ursache auf und sind entsprechend mühsam zu finden.
Zeile 39: Zeile 39:
 **Häufige Fehler in dieser Aufgabe** **Häufige Fehler in dieser Aufgabe**
  
-  * Ausschnitt 10 wird oft als imperativ eingestuft, weil ''lambda'' nach Code aussieht". Entscheidend ist aber: Es wird keine Schleife geschrieben und kein Zwischenzustand aufgebaut.+  * Ausschnitt 10 wird oft als imperativ eingestuft, weil ''lambda'' nach Code aussieht. Entscheidend ist aber: Es wird keine Schleife geschrieben und kein Zwischenzustand aufgebaut.
   * Ausschnitt 1 und 2 werden korrekt getrennt, Ausschnitt 6 und 7 dann aber vergessen – dabei ist es dasselbe Muster mit einer Bedingung mehr.   * Ausschnitt 1 und 2 werden korrekt getrennt, Ausschnitt 6 und 7 dann aber vergessen – dabei ist es dasselbe Muster mit einer Bedingung mehr.
   * Ausschnitt 8 wird als imperativ eingestuft, weil er etwas verändert. Verändern und //Wie//-Beschreiben sind aber zwei verschiedene Dinge.   * Ausschnitt 8 wird als imperativ eingestuft, weil er etwas verändert. Verändern und //Wie//-Beschreiben sind aber zwei verschiedene Dinge.
  • modul/m323/learningunits/lu01/loesungen/paradigmendetektiv.txt
  • Zuletzt geändert: 2026/08/18 10:18
  • von admin