Technopedia Center
PMB University Brochure
Faculty of Engineering and Computer Science
S1 Informatics S1 Information Systems S1 Information Technology S1 Computer Engineering S1 Electrical Engineering S1 Civil Engineering

faculty of Economics and Business
S1 Management S1 Accountancy

Faculty of Letters and Educational Sciences
S1 English literature S1 English language education S1 Mathematics education S1 Sports Education
  • Registerasi
  • Brosur UTI
  • Kip Scholarship Information
  • Performance
  1. Weltenzyklopädie
  2. Lazy Evaluation – Wikipedia
Lazy Evaluation – Wikipedia 👆 Click Here!
aus Wikipedia, der freien Enzyklopädie
Dieser Artikel oder nachfolgende Abschnitt ist nicht hinreichend mit Belegen (beispielsweise Einzelnachweisen) ausgestattet. Angaben ohne ausreichenden Beleg könnten demnächst entfernt werden. Bitte hilf Wikipedia, indem du die Angaben recherchierst und gute Belege einfügst.

Lazy Evaluation (bequeme [faule] Auswertung) bezeichnet in der Informatik eine Art der Auswertung von Ausdrücken, bei der das Ergebnis des auszuwertenden Ausdrucks nur so weit berechnet wird, wie es gerade benötigt wird.

Ein Vorteil einer solchen Auswertungsstrategie ist Zeitersparnis, da Funktionsaufrufe ganz vermieden oder zumindest teilweise eingespart werden können. Außerdem gibt Lazy Evaluation dem Programmierer die Möglichkeit, unendliche Datenstrukturen zu verwenden. Ein Nachteil ist die erschwerte Fehlerbereinigung in Programmen, die lazy evaluiert werden. Oft ist nicht auf den ersten Blick nachvollziehbar, ob ein Ausdruck zu einem bestimmten Zeitpunkt bereits ausgewertet wurde. Dies ist insbesondere dann problematisch, wenn Funktionsaufrufe eine Nebenwirkung haben können.

Ein auf logische Ausdrücke eingeschränkter Spezialfall ist die Kurzschlussauswertung, die auch in vielen nicht-lazy-Sprachen wie C oder Java implementiert ist.

Beispiel

[Bearbeiten | Quelltext bearbeiten]

Das folgende in Haskell geschriebene Beispiel zeigt eine Anwendung von Lazy Evaluation.

   squares n = (n*n) : squares (n+1)

Die Funktion squares berechnet die unendliche Liste aller Quadratzahlen beginnend bei n. Das Quadrat von 3 ließe sich also durch den Ausdruck   squares 0 !! 3   berechnen – dabei holt   l !! x   das Element an der Position x aus der Liste l. Ohne Lazy Evaluation würde der Aufruf von squares 0 nicht terminieren. Stattdessen werden nur die Teile berechnet, die wirklich benötigt werden. Die interne Auswertung sieht verkürzt wie folgt aus:

squares 0 !! 3
→ 0*0 : squares (0+1) !! 3
→ squares (0+1) !! 2
→ (0+1)*(0+1) : squares (0+1+1) !! 2
…
→ (0+1+1+1)*(0+1+1+1) : squares (0+1+1+1+1) !! 0
→ (0+1+1+1)*(0+1+1+1)
→ 9

Auf den ersten Blick scheint die Lazy Evaluation hier Berechnungen mehrfach auszuführen, da auf der rechten Seite der Funktion squares der Parameter n mehrfach verwendet wird und statt eines Werts eine nicht ausgeführte Berechnung eingesetzt wird. Da Haskell eine rein funktionale Sprache ist, gewährleistet die referentielle Transparenz, dass ein Ausdruck immer das gleiche Ergebnis hat. Somit muss jeder Ausdruck auch nur einmal ausgerechnet werden. Dies nutzt Haskell aus, indem intern für n auf der rechten Seite der Funktionsdefinition anstelle von beispielsweise (0+1+1+1) ein Zeiger auf die Berechnung eingesetzt wird. Wird ein Ausdruck an einer Stelle im Programm ausgerechnet, steht das Ergebnis auch an anderen Stellen zur Verfügung.

Abgerufen von „https://de.teknopedia.teknokrat.ac.id/w/index.php?title=Lazy_Evaluation&oldid=230556363“
Kategorie:
  • Programmierparadigma
Versteckte Kategorie:
  • Wikipedia:Belege fehlen

  • indonesia
  • Polski
  • العربية
  • Deutsch
  • English
  • Español
  • Français
  • Italiano
  • مصرى
  • Nederlands
  • 日本語
  • Português
  • Sinugboanong Binisaya
  • Svenska
  • Українська
  • Tiếng Việt
  • Winaray
  • 中文
  • Русский
Sunting pranala
Pusat Layanan

UNIVERSITAS TEKNOKRAT INDONESIA | ASEAN's Best Private University
Jl. ZA. Pagar Alam No.9 -11, Labuhan Ratu, Kec. Kedaton, Kota Bandar Lampung, Lampung 35132
Phone: (0721) 702022
Email: pmb@teknokrat.ac.id