Aussageprogrammierung

In der Informatik ist Aussageprogrammierung ein Programmierparadigma, das die Logik einer Berechnung ausdrückt, ohne seinen Kontrollfluss zu beschreiben. Viele Sprachen, die diesen Stil anwenden, versuchen, Nebenwirkungen durch das Beschreiben zu minimieren oder zu beseitigen, was das Programm vollbringen sollte, anstatt zu beschreiben, wie man über die Vollendung davon geht. Das ist im Vergleich mit der befehlenden Programmierung, die einen ausführlich zur Verfügung gestellten Algorithmus verlangt.

Aussageprogrammierung betrachtet häufig Programme als Theorien einer formalen Logik und Berechnung als Abzüge in diesem Logikraum. Aussageprogrammierung ist aus besonderem Interesse kürzlich geworden, weil es Schreiben-Parallele-Programme außerordentlich vereinfachen kann.

Allgemeine Aussagesprachen schließen diejenigen von regelmäßigen Ausdrücken, Logikprogrammierung und funktioneller Programmierung ein.

Definition

Aussageprogrammierung wird häufig als jeder Stil der Programmierung definiert, die nicht befehlend ist. Mehrere andere allgemeine Definitionen bestehen, die versuchen, dem Begriff eine Definition außer dem einfachen Kontrastieren ihm mit der befehlenden Programmierung zu geben. Zum Beispiel:

  • Ein Programm, das das beschreibt, welche Berechnung durchgeführt werden sollte und nicht, wie man es schätzt
  • Jede Programmiersprache, die an Nebenwirkungen Mangel hat (oder mehr spezifisch, ist Verweisungs-durchsichtig)
  • Eine Sprache mit einer klaren Ähnlichkeit zur mathematischen Logik.

Diese Definitionen überlappen wesentlich.

Subparadigmen

Aussageprogrammierung ist ein Überbegriff, der mehrere besser bekannte Programmierparadigmen einschließt.

Einschränkungsprogrammierung

In der Einschränkungsprogrammierung werden Beziehungen zwischen Variablen in der Form von Einschränkungen festgesetzt, die Eigenschaften einer Lösung angebend, gefunden zu werden. Der Satz von Einschränkungen wird dann durch das Geben eines Werts jeder Variable gelöst, so dass die Lösung mit der maximalen Zahl von Einschränkungen im Einklang stehend ist.

Einschränkungsprogrammierung ist häufig als eine Ergänzung an andere Paradigmen gewöhnt: funktionelle, logische oder sogar befehlende Programmierung.

Bereichsspezifische Sprachen

Einige wohl bekannte Beispiele des Aussagegebiets spezifische Sprachen (DSLs) schließen Cascading Style Sheets (CSS), regelmäßige Ausdrücke und eine Teilmenge von SQL (AUSGESUCHTE Abfragen, zum Beispiel) ein. DSLs sind im Vorteil, nützlich zu sein, sie Hat Turing-abgeschlossen sein müssen, der es leichter für eine Sprache macht, rein Aussage-zu sein.

Viele Preiserhöhungssprachen wie HTML, MXML, SVG, XAML, XSLT oder andere Benutzerschnittstelle-Preiserhöhungssprachen sind häufig Aussage-. HTML beschreibt zum Beispiel nur, was auf einem webpage erscheinen sollte und die möglichen Wechselwirkungen damit nicht angibt.

Einige Softwaresysteme verbinden jetzt traditionelle Benutzerschnittstelle-Preiserhöhungssprachen wie HTML mit der Aussagepreiserhöhung, die definiert, was (aber nicht wie) die Zurückende-Server-Systeme tun sollten, um die offen erklärte Schnittstelle zu unterstützen. Solche Systeme, normalerweise mit einem Gebiet spezifischer XML namespace, schließen Abstraktionen der SQL Datenbanksyntax oder parametrisierte Anrufe zu Webdiensten mit der Vertretungszustandübertragung (REST) und SEIFE ein.

Funktionelle Programmierung

Funktionelle Programmierung, und in der besonderen rein funktionellen Programmierung, versucht, Nebenwirkungen zu minimieren oder zu beseitigen, und wird deshalb Aussage-betrachtet. Die meisten funktionellen Sprachen, wie Schema, OCaml, Normaler ML, und Unlambda erlauben wirklich jedoch Nebenwirkungen in der Praxis.

Während funktionelle Sprachen normalerweise scheinen anzugeben, "wie" ein Bearbeiter für eine rein funktionelle Programmiersprache frei ist, das betriebliche Verhalten einer Funktion umfassend umzuschreiben, so lange dasselbe Ergebnis für dieselben Eingänge zurückgegeben wird. Das kann an zum Beispiel gewöhnt sein, lassen Sie eine Funktion sein Ergebnis in der Parallele schätzen, oder wesentliche Optimierungen durchzuführen (wie Abholzung), den ein Bearbeiter nicht im Stande sein kann, auf eine Sprache mit Nebenwirkungen sicher anzuwenden.

Hybride Sprachen

Makefiles geben zum Beispiel Abhängigkeiten auf eine Aussagemode an, aber schließen eine befehlende Liste von Handlungen ein, um ebenso zu nehmen. Ähnlich gibt yacc einen Zusammenhang freie Grammatik Aussage-an, aber schließt Codeschnipsel aus einer Gastgeber-Sprache ein, die gewöhnlich (wie C) befehlend ist.

Logikprogrammierung

Logikprogrammiersprachen wie Einleitungsstaat und Anfragenbeziehungen. Die Details dessen, wie auf diese Abfragen geantwortet wird, sind bis zur Durchführung und seinem Lehrsatz prover, aber nehmen Sie normalerweise die Form einer Art Vereinigung an. Wie funktionelle Programmierung erlauben viele Logikprogrammiersprachen Nebenwirkungen, und sind infolgedessen nicht ausschließlich Aussage-.

Das Modellieren

Modelle oder mathematische Darstellungen, physischer Systeme können im Computercode durchgeführt werden, der Aussage-ist. Der Code enthält mehrere Gleichungen, nicht befehlende Anweisungen, die beschreiben (erklären) die Verhaltensbeziehungen. Wenn ein Modell in diesem Formalismus ausgedrückt wird, ist ein Computer im Stande, algebraische Manipulationen durchzuführen, um am besten den Lösungsalgorithmus zu formulieren. Die mathematische Kausalität wird normalerweise an den Grenzen des physischen Systems auferlegt, während die Verhaltensbeschreibung des Systems selbst Aussage-ist oder acausal. Modellierende Aussagesprachen und Umgebungen schließen Modelica und Simile ein.

Siehe auch

Außenverbindungen


John Spencer, 5. Earl Spencer / Park-Morde von Phönix
Impressum & Datenschutz