Versandhaus der Zukunft™: Smart Contracts Informatiker-kompatibel notieren

Erst vor kurzem wurde mir die Frage gestellt, wie man „Aktionen für einen Smart Contract aufschreiben kann“. Nach einer kurzen Nachfrage hat sich gezeigt, dass die Frage eigentlich lautet: „Wie kann man Anweisungen, Bedingungen und Schleifen programmiersprachenunabhängig darstellen?“. Diese Fragestellung beschäftigt einen Informatiker relativ früh in seinem Werdegang, da des Öfteren ein Algorithmus oder ein Teil eines Programms erst durchdacht werden muss. Manchmal möchte auch der Autor eines Lehrbuchs einen Vorgang beschreiben, ohne dabei auf eine bestimmte Programmiersprache festgelegt zu sein. Wie es so oft in der Informatik ist, haben sich hier mehrere Mittel etabliert. Drei dieser Möglichkeiten werden wir jetzt betrachten.

Man könnte sich jetzt folgende Begebenheit vorstellen:

Kerstin sich beim Versandhaus der Zukunft™ eine KitchenAid bestellt. Das Küchenwunder soll in Raten bezahlt werden. Dank der super modernen Technik des Versandhauses der Zukunft™ wird die wiederkehrende Zahlung erst dann vollautomatisch ausgelöst, wenn der Empfang des bestellten Zauber-Kochutensils von Kerstin bestätigt wurde. Nach jeder Ratenzahlung wird eine Informationsmail an Kerstin über den noch offenen Betrag gesendet. Sobald die Rechnung beglichen ist, wird, abermals vollautomatisch, die monatliche Zahlung unterbrochen und Kerstin bekommt eine E-Mail zur Bestätigung.

Dieses Beispiel könnte durch einen Smart Contract gelöst werden, da sich die Situation in einzelne Bauteile zerlegen lässt. Diese wiederkehrenden Bauteile, welche übrigens auch in Algorithmen und Programmen verwendet werden, nennt man in der Informatik:

Anweisung, Verzweigung, Schleife

Anweisung

Eine Anweisung ist im Grunde eine Aktion. Wenn man Anweisungen beschreiben will, sollte man immer auf die Grundform „Objekt + Verb“ zurückgreifen. Wenn etwas bestätigt werden soll, reicht es oft nicht aus, nur „bestätigen“ zu schreiben, sondern man bezeichnet es genauer mit „Empfang bestätigen“ oder „Zahlungsabschluss bestätigen“. Die Verwendung dieser Struktur für die Formulierung einer Aktion hilft dabei, Missverständnisse zu vermeiden und ist in manchen Normen in der Informatik sogar vorgeschrieben.
Ist eine Anweisung „atomar“ ist sie nicht weiter zerlegbar. Sie kann aber auch eine Bezeichnung für eine tiefergehende Beschreibung eines Vorgangs sein, den man im Moment nicht beschreiben möchte oder nicht beschreiben muss, weil er beispielsweise trivial oder irrelevant ist.
In Kerstins Fall würde man zum Beispiel die Anweisung „E-Mail schicken“ nicht weiter beschreiben, auch wenn hier dadurch, dass die E-Mail automatisiert geschickt werden soll, noch einige weitere Anweisungen durchgeführt werden müssen. Wir abstrahieren diese Sequenz (Abfolge von Anweisungen) indem wir die Anweisung zusammenfassend „E-Mail schicken“ nennen.

Verzweigung

Bei der Verzweigung handelt es sich um WENN-DANN Konstrukte. Wenn Kerstin den Empfang bestätigt hat, dann wird mit den Zahlungen begonnen. Allgemein spricht man von: WENN ein bestimmtes Prädikat erfüllt ist, DANN wird eine Anweisung oder eine Sequenz durchgeführt.
Ein Prädikat ist eine Bedingung, sie könnte alles sein, was mit ja oder nein beantwortbar ist. Wenn alle Raten bezahlt wurden, dann werden die  monatlichen Zahlungen unterbrochen und eine Bestätigungs-E-Mail verschickt. Das Prädikat wäre bei diesem Beispiel die Frage: „Sind alle Raten bezahlt?“.
Häufig wird eine Verzweigung auf WENN-DANN-SONST erweitert, wobei SONST hier als „ansonsten“ zu verstehen ist. WENN der Empfang der magischen Maschine bestätigt wurde, DANN beginne mit der Ratenzahlen, SONST warte weiter auf die Lieferung.

Schleife

Die wiederkehrende Ratenzahlung ist eine Schleife. In allen möglichen Prozessen kommen Schleifen vor, auch wenn es manchmal nur ein „Beginne von vorne“ ist. Schleifen müssen immer eine Abbruch-Bedingung haben, da sie sonst ununterbrochen weiter laufen würden.
Als Abbruchkriterium dient abermals ein Prädikat: Die Ratenzahlung wird solange monatlich durchgeführt, wie die Rechnung noch nicht vollständig bezahlt wurde. Erst dann wird die Schleife verlassen und die nächsten Anweisungen werden durchgeführt.
Zusätzlich gibt es die Zählschleife. Diese hat einen Zähler, welcher die Anzahl der Schleifendurchläufe mitverfolgt. Auf diese Weise kann man eine Schleife verwenden, welche VON einem Zählerstartwert BIS zu einem Zählerendwert läuft.

Pseudocode, Programmablaufplan, Struktogramm

Auf Basis der einzelnen Bauteile können jetzt Algorithmen dargestellt werden. Von den vielen Möglichkeiten der Darstellung werden wir drei vergleichen und anhand des obigen Beispiels aus Sicht des Versandhauses betrachten.

Als Pseudocode schreiben wir unseren Algorithmus auf folgende Weise:


So sieht die Notation als Programmablaufplan aus:

Und die fast schon künstlerische Variante als Struktogramm (auch Nassi-Shneiderman-Diagramm genannt):

Alle drei Varianten beschreiben den gleichen Ablauf.

Die in Pseudocode verwendeten Begriffe wie WENN-DANN oder SOLANGE sind nicht genormt. Häufiger sieht man die englischen Gegenstücke oder Variationen der Begriffe.

Beim Schreiben eines Programmablaufplans und eines Nassi-Shneiderman-Diagramms muss aufmerksam gearbeitet werden, da hier die einzelnen Symbole in Ihrer Bedeutung genau festgelegt sind. (Der Programmablaufplan ist nach DIN 66001 genormt und das Struktogramm nach DIN 66261).

Wer tiefer in die Materie eintauchen möchte, kann sich gerne an den weiterführenden Links entlang hangeln, da ich hier nur eine kurze Übersicht geben wollte. Euch sollte jedoch schon dieses erste Grundwissen helfen, Algorithmen oder Aktionen für Smart Contracts verständlich und nachvollziehbar notieren zu können.

Übrigens kann man auch Prozesse auf der Arbeit auf diese Weise aufschreiben. Dies kann hilfreich sein, um einer anderen Person im Büro einen bestimmten Arbeitsablauf zu erklären und diesen zu dokumentieren.

Weiterführende Links:
https://de.wikipedia.org/wiki/Pseudocode
https://de.wikipedia.org/wiki/Programmablaufplan
https://de.wikipedia.org/wiki/Nassi-Shneiderman-Diagramm
Vergleich der verschiedenen Methoden

Merken

MerkenMerken

MerkenMerken

Teile diesen Beitrag

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.