Strenge Programmiersprache

Eine strenge Programmiersprache ist diejenige, in der nur strenge Funktionen (fungiert, wessen Rahmen völlig bewertet werden müssen, bevor sie genannt werden können), kann vom Benutzer definiert werden. Eine nichtstrenge Programmiersprache erlaubt dem Benutzer, nichtstrenge Funktionen zu definieren, und kann folglich faule Einschätzung erlauben.

Beispiele

Fast alle Programmiersprachen in der üblichen Anwendung sind heute streng. Beispiele schließen C, C ++, C#, Java, Perl (durch die Version 5), Pythonschlange, Rubinrotes, Allgemeines Lispeln, Schema und ML ein. Die am besten bekannten nichtstrengen Sprachen sind Haskell, Miranda, und Sauber.

Erklärung

Auf nichtstrengsten Sprachen streckt sich die Nichtstrenge bis zu Datenkonstrukteure aus. Das erlaubt begrifflich unendlichen Datenstrukturen (wie die Liste aller Primzahlen), ebenso als gewöhnliche begrenzte Datenstrukturen manipuliert zu werden. Es berücksichtigt auch den Gebrauch von sehr großen, aber begrenzten Datenstrukturen wie der ganze Spielbaum des Schachs.

Nichtstrenge hat mehrere Nachteile, die weit verbreitete Adoption verhindert haben:

  • Wegen der Unklarheit bezüglich, wenn, und wenn Ausdrücke bewertet werden, nichtstrenge Sprachen allgemein rein funktionell sein müssen, um nützlich zu sein.
  • Alle Hardware-Architekturen in der üblichen Anwendung werden für strenge Sprachen optimiert, so erzeugen die besten Bearbeiter für nichtstrenge Sprachen langsameren Code als die besten Bearbeiter für strenge Sprachen, mit der bemerkenswerten Ausnahme Glasgows Bearbeiter von Haskell, der viele strenge Sprachbearbeiter überbietet.
  • Die Raumkompliziertheit von nichtstrengen Programmen ist schwierig, zu verstehen und vorauszusagen.

Strenge Programmiersprachen werden häufig mit der eifrigen Einschätzung und den nichtstrengen Sprachen mit der faulen Einschätzung vereinigt, aber andere Einschätzungsstrategien sind in jedem Fall möglich. Die Begriffe "eifrige Programmiersprache" und "faule Programmiersprache" werden häufig als Synonyme für die "strenge Programmiersprache" und "nichtstrenge Programmiersprache" beziehungsweise gebraucht.

Auf vielen strengen Sprachen können einige Vorteile von nichtstrengen Funktionen durch den Gebrauch von Makros oder thunks erhalten werden.


Chris Burden / Königlicher Marineluftdienst
Impressum & Datenschutz