Inhalt
Topic:.RuleOrProgram.
Software ist zunächst ein Plan (englisch:program) der Abarbeitung von Anweisungen. Das war die Intension der Software der 60-ger Jahre und lebt bis heute fort. Strukturierte Programmierung verfeinert lediglich die Formulierung der Anweisungszweige, Objektorientierte Programmierung bezieht Daten (Objekte) stärker in die Überlegung ein.
Plan oder Regel? Ein Plan ist ein geplanter Ablauf, der zwar Änderungen berücksichtigt, aber ebenfalls in einer insgesamt vorhergedachten Art und Weise. Damit ist ein Plan etwas zentrales. Wenn man ein Vorhaben ausführen will, dann kann man zuvor einen genauen Plan aufstellen, und sich genau danach richten. Der Plan ist umso besser, je mehr in ihm Einflüsse während der Ausführung berücksichtigt worden sind. Es gibt aber noch eine andere Möglichkeit, ein Vorhaben zu realisieren: In dem man Regeln aufstellt. Eine Regel soll immer einfach sein (wenn, dann, abhängig von). Eine Regel ist dezentral. Es wird etwas ausgeführt, nicht weil es geplant ist, sondern weil die Bedingungen dafür vorliegen. Damit ist die regelbasierende Ausführung etwas dezentrales.
Ein kleines Beispiel aus der Praxis? Eine Hausfrau kann ihren täglichen Ablauf genau durchplanen: 8:30 Abwaschen, 8:45 Zeitung holen und lesen usw. Die regelbasierende Ausführung würde dementsprechend etwa so aussehen: "Wenn Geschirr ausreichenden Umfanges herumsteht, abwaschen!", "Wenn die Zeitung im Briefkasten liegt, holen und lesen!". Hier fehlt gegebenenfalls eine Regel, die regelt, was zuerst ausgeführt wird. Im vorliegenden Fall kann es vollkommen egal sein, ob zuerst der Abwasch drankommt oder nicht. Also braucht man dafür keine Regel. Es könnte aber eine dritte Regel geben: "Abwasch muss fertig sein wenn Besuch kommt.". - Bei Software kann man es ähnlich machen: nicht geplant, sondern regelbasierend.
Der Nachteil von Planereien: Ein Plan funktioniert nur dann, wenn alles insgesamt von vornherein richtig durchdacht ist. Im täglichen Leben wird man bei Ausführung eines Planes etwas eigenmächtig modifizieren, wenn es denn überhaupt nicht anders geht. Für ein Softwareprogramm gilt das adäquat. Es muss von vornherein alles richtig durchdacht sein. Ein Prozessor wird aber nicht eigenmächtig modifizieren, das ist nicht vorgesehen. Die Folge ist eine recht hohe Empfindlichkeit gegenüber Fehlern im Software-Plan. Eine regelbasierende Software ist dagegen dezentral. Jede Regel ist für sich überschaubar. Man braucht nicht das Ganze zu überschauen. Also kann man gar keine Fehler bezüglich des gesamten Zusammenhang machen.
Es könnte sein, dass die Ordnung in einem Ameisenstaat regelbasierend funktioniert. Es gibt kein Gesamtplan, sondern jede Ameise richtet sich nach einfachen per Instinkt bekannten Regeln. Das was wir von außen beobachten, ist dann ein geordnetes Ganzes.
Die Ausführung auf Maschinenebene erfolgt nach Plan. Maschinenanweisungen stehen hintereinander, diese werden wie vorgegeben ausgeführt. Daher war auch in den 60-ger Jahren nur die Softwareausführung nach Plan denkbar. Die Regelbasierende Softwareausführung erfolgt auf einer höheren Ebene. Die Interpretation und Ausführung der Regeln erfolgt wiederum nach einem Plan. Dieser Plan ist aber allgemeingültig einmal formuliert und nicht anwenderproblemabhängig.
Topic:.RuleOrProgram..
Ein Beispiel für Regelbasierende Softwareausführung ist Apache-Ant unter Eclipse. Ant ist nicht nur ein verbesserter XML-basierender Maker, sondern mehr.
Auch XSLT gilt als eine Regelbasierende Darstellung der Umsetzung von XML-Elementen in andere, Formulierungen wie
<xsl:apply-templates /> ... <xsl:template match="tag">...
- allew was du findest, apply it doch, nehme dazu das passende template von denen Du genügend findest - das ist regelbasierend, Aber wenn man dann kommt mit
<xsl:call-template name="routine><xsl:with-param...
dann sind wir genau wieder beim Plan. xslt berücksichtigt halt beide Herangehensweisen.
Topic:.RuleOrProgram..
Domains sind hauseigene Sprachen. Für hauseigene Probleme kann man anstelle von Anweisungen, Listen usw. besser Regeln formulieren. Ein Interpreter macht dann daraus einen Ablauf. Der Anwender soll also nicht in Anweisungen sondern in Regeln denken. Das wäre doch mal interessant.
Den Ablauf zu programmieren, nach den Anwender-Regeln, dass macht dann schon ein hochspezialisierter Informatiker, der gut in Abläufen denkt.
...An dieser Stelle ist erstmal Schluss mit meinen Ausführungen, Man findet weiteres im Internet, wikipedia, google & co. Mein Ziel ist nicht Anleitung und Darstellung, sondern nur Anregung.