Datengesteuerte Programmierung
Im Computerprogrammierung, datengesteuerte Programmierung ist ein Programmierparadigma in denen die Programmanweisungen die zu übereinstimmenden Daten beschreiben und die Verarbeitung erforderlich sind, anstatt eine Abfolge von Schritten zu definieren, die erledigt werden sollen.[1] Standardbeispiele für datengesteuerte Sprachen sind die Textverarbeitungssprachen sed und Awk,[1] wobei die Daten eine Abfolge von Zeilen in einem sind Eingabestrom -Diese werden daher auch als zeilenorientierte Sprachen bezeichnet-und das Muster-Matching wird hauptsächlich über durch Reguläre Ausdrücke oder Zeilennummern.
Verwandte Paradigmen
Die datengesteuerte Programmierung ist ähnlich wie ereignisgesteuerte Programmierungda sind beide als Musteranpassung und daraus resultierende Verarbeitung strukturiert und werden normalerweise von a implementiert Hauptschleife, obwohl sie normalerweise auf verschiedene Domänen angewendet werden. Das Zustand/das Aktionsmodell ähnelt auch Aspekt-orientiertes Programmieren, wo wenn a Beitrittspunkt (Zustand) ist erreicht, a Pointcut (Aktion) wird ausgeführt. Ein ähnliches Paradigma wird in einigen verwendet Verfolgung Frameworks wie Dtrace, wobei man Sonden (Instrumentierungspunkte) und zugehörige Aktionen auflistet, die ausgeführt werden, wenn die Bedingung erfüllt ist.
Anpassung Zusammenfassung Datentyp Entwurfsmethoden zu Objekt orientierte Programmierung führt zu einem datengesteuerten Design.[2] Diese Art von Design wird manchmal in objektorientierter Programmierung verwendet, um Klassen während der Konzeption einer Software zu definieren.
Anwendungen
Die datengesteuerte Programmierung wird typischerweise auf Streams strukturierter Daten, zum Filtern, Transformieren, Aggregieren (wie Computerstatistiken) oder zum Aufrufen anderer Programme angewendet. Typische Ströme umfassen Protokolldateien, Trennzeichen getrennte Werte, oder E -Mail -Nachrichten, insbesondere für E -Mail -Filterung. Beispielsweise kann ein AWK -Programm einen Strom von Protokollanweisungen als Eingabe annehmen und beispielsweise alle an die Konsole senden, schreiben Sie diejenigen, die mit Warnung in eine "Warn" -Datei beginnen, und senden Sie eine E -Mail an a sysadmin Falls jede Zeile mit "Fehler" beginnt. Es könnte auch aufzeichnen, wie viele Warnungen pro Tag protokolliert sind. Alternativ kann man Ströme von trenner getrennten Werten verarbeiten und jede Zeile oder aggregierte Linien wie die Summe oder max verarbeiten. In E -Mail eine Sprache wie procmail Kann die Bedingungen angeben, die mit einigen E -Mails übereinstimmen und welche Aktionen ergreifen sollen (liefern, springen, abwerfen, vorwärts usw.).
Einige datengesteuerte Sprachen sind Turing-Completewie awk und sogar sed, während andere absichtlich sehr begrenzt sind, insbesondere für die Filterung. Ein extremes Beispiel für letztere ist PCAP, was nur aus Filterung besteht, wobei die einzige Aktion „erfasst“ ist. Weniger extrem, Sieb Hat Filter und Handlungen, aber im Basisstandard keine Variablen oder Schleifen enthält, wobei nur ein Eingabeelement für Staurose zugelassen wird: Jedes Eingabeelement wird unabhängig verarbeitet. Variablen erlauben Zustand, die Operationen ermöglichen, die von mehr als einem Eingangselement abhängen, z. B. Aggregation (summieren Eingänge) oder Drosselung (Erlauben Sie höchstens 5 E -Mails pro Stunde von jedem Absender oder begrenzen Sie wiederholte Protokollnachrichten).
Datenorientierte Sprachen haben häufig eine Standardaktion: Wenn keine Bedingung übereinstimmt, können zeilenorientierte Sprachen die Zeile (wie in SED) drucken oder eine Nachricht wie in Sieb liefern. In einigen Anträgen, wie z. B. Filterung, kann die Übereinstimmung erfolgen ausschließlich (Also nur Erste Übereinstimmungserklärung), während in anderen Fällen alle Übereinstimmende Aussagen werden angewendet. In beiden Fällen nicht übereinstimmen irgendein Das Muster kann "Standardverhalten" sein oder als Fehler angesehen werden, der am Ende von einer Catch-All-Anweisung erfasst werden kann.
Vorteile und Probleme
Während die Vorteile und Probleme zwischen der Umsetzung variieren können, gibt es einige große potenzielle Vorteile und Probleme mit diesem Paradigma. Funktionalität erfordert lediglich, dass es das kennt Zusammenfassung Datentyp der Variablen arbeitet es. Funktionen und Schnittstellen Kann für alle Objekte mit denselben Datenfeldern verwendet werden, beispielsweise die "Position" des Objekts. Daten können in Objekte oder "Entitäten" entsprechend der Präferenz mit wenig bis gar keiner Konsequenz gruppiert werden.
Während das datengesteuerte Design die Kopplung von Daten und Funktionen verhindert, wurde in einigen Fällen argumentiert, dass die datengesteuerte Programmierung zu schlechtem führt objektorientiertes Design, insbesondere wenn es um abstraktere Daten geht. Dies liegt daran repräsentiert. Jeder Versuch, die Struktur des Objekts zu ändern, würde sofort die Funktionen brechen, die darauf beruhen.
Als Beispiel könnte man darstellen Fahrtrichtung Als eine Reihe von Kreuzungen (zwei Kreuzungsstraßen), an denen der Fahrer rechts oder links abbiegen muss. Wenn eine Kreuzung (in den Vereinigten Staaten) in Daten von der dargestellt wird Postleitzahl (5-stellige Zahl) und zwei Straßennamen (Textenschnüre) können Fehler auftreten, wenn eine Stadt auf der Straße auftritt schneiden Mehrmals wird angetroffen. Obwohl dieses Beispiel zu vereinfacht werden kann, ist die Umstrukturierung von Daten ein ziemlich häufiges Problem im Software -Engineering, entweder um Fehler zu beseitigen, die Effizienz zu steigern oder neue Funktionen zu unterstützen.
Sprachen
- Awk[1]
- Oz
- Perl -Die datengesteuerte Programmierung wie in awk und sed ist ein von Perl unterstütztes Paradigma
- sed
- Lua[3]
- Clojure[4]
- Tab (Sprache)
- FDM
- Mail Drop
- procmail
- Sieb
- BASIC
Siehe auch
- Datengesteuerte Programmierung
- Backus -Naur -Form
Verweise
- ^ a b c Stutz, Michael (19. September 2006). "Beginnen Sie mit Gawk: awk Language Fundamentals". Entwicklerworks. IBM. Archiviert von das Original Am 20. Mai 2011. Abgerufen 2010-10-23.
[Awk] wird häufig als datengesteuerte Sprache bezeichnet-die Programmanweisungen beschreiben die übereinstimmenden und verarbeitenden Eingabedaten anstelle einer Abfolge von Programmschritten
- ^ Wirfs-Brock, Rebecca; Wilkerson, Brian (1989). "Objektorientiertes Design: Ein verantwortungsgetriebener Ansatz". Konferenzverfahren zu objektorientierten Programmiersystemen, Sprachen und Anwendungen. New York: ACM: 71–75. doi:10.1145/74877.74885. ISBN 0897913337. S2CID 7372657.
- ^ Ierusalimschy, Roberto; de Figueiredo, Luiz Henrique; Celes, Waldemar (2017-02-03). "Lua 5.3 Referenzhandbuch". www.lua.org. Abgerufen 2018-06-05.
- ^ "Clojure". www.clojure.org. Abgerufen 2018-06-05.