Auswertung (Informatik)

Auswertung (engl. evaluation als Beschreibung, Analyse und Bewertung) bezeichnet in der Informatik den Vorgang, der einem Ausdruck (eventuell in einem gegebenen Kontext von Variablenbindungen) einen Wert zuordnet.

Programmiersprachen sind nach ihrer Auswertungsstrategie unterscheidbar:

  • Bei strenger Auswertung oder strikter Auswertung (engl. eager bzw. strict evaluation) werden Ausdrücke sofort ausgewertet. Zum Beispiel bei der Berechnung einer Funktion werden bei strikter Auswertung erst die Argumentausdrücke ausgewertet, bevor der Funktionsrumpf ausgewertet wird.
  • Dem gegenüber steht die Bedarfsauswertung oder verzögerte Auswertung (engl. Lazy Evaluation), bei der Ausdrücke erst ausgewertet werden, wenn deren Wert in einer Berechnung benötigt wird. Dadurch lassen sich z. B. unendlich große Datenstrukturen (z. B. die Liste aller natürlicher Zahlen, die Liste aller Primzahlen usw.) definieren und bestimmte Algorithmen vereinfachen sich. Diese Datenstrukturen bezeichnet man als Ströme (engl. streams).

Manche Berechnungen lassen sich mit strenger Auswertung, andere mit Bedarfsauswertung effizienter ausführen.

Bei der Auswertung von Funktionen mit mehreren Argumenten besteht ein weiterer Freiheitsgrad darin, in welcher Reihenfolge die Argumente ausgewertet werden. In der Theoretischen Informatik (Lambda-Kalkül) wird formal gezeigt, dass die Reihenfolge der Auswertung keine Rolle spielt beim berechneten Wert eines Ausdrucks, so er denn ausgewertet werden kann; siehe auch Currying bzw. Schönfinkeln.

Die Anwendung der Funktion (bzw. Funktionsdefinition) auf ihre Argumente bezeichnet man auch als Applikation.

Eng verwandt mit dem Begriff der Auswertung ist der Begriff der Semantik, das ist eine Abbildung, die einem Programm (meistens ein Programmtext bzw. Quellcode) seine berechenbare Funktion zuordnet. Dieses stimmt mit der umgangssprachlichen Deutung des Begriffs Semantik als Bedeutungszuordnung gut überein.