Python und Struktogramme?

2 Antworten

Naja.. Algorithmen sind eine Abfolge von Befehlen (ein Kuchenrezept ist auch ein Algorithmus). Programme sind Algorithmen in einer Programmiersprache. Programmiersprachen sind Sprachen, mit denen man dem Computer sozusagen Befehle gibt ( vereinfacht).

Struktogramme stellen zwar einen Lösungsweg eines Problems dar, sie geben aber keine Befehle an den Computer. Sie dienen nur zur Planung von Programmen. Das wäre dann eher ein Algorithmus.

Python ist eine Programmiersprache, weil der Computer daraufhin etwas tut. Also er macht, was du in Python schreibst.

Das ist einmal eine interessante Frage.

Was man zunächst einmal feststellen kann, ist, dass ein Struktogramm einen Programmablauf auf einer noch abstrakteren Ebene als Python darstellt und grundsätzlich eher zu Planungszwecken benutzt wird. Während sich Python im Vergleich schon mehr darauf fokussiert, konkreter auf das System einzugehen (ich denke, als sehr primitives Beispiel kann man da schon die Listen aufführen, die mit dem Index 0 beginnen), spart ein Struktogramm an solchen Details (bzw. sie sind gänzlich unwichtig).

Wenn man eine einfache Definition für eine Programmiersprache nutzt, dürfte ein Struktogramm die Anforderungen aber erfüllen. Es gibt Ausdrucksmittel für Schleifen, für Verzweigungen und man kann einzelne Anweisungen formulieren. Eine Aufteilung in Unterprogramme ist ebenfalls möglich und Variablen oder Operatoren lassen sich textuell in den Diagrammelementen einsetzen.

Das heißt, du müsstest an sich nur noch ein Programm entwickeln, welches das Struktogramm letztendlich in Maschinencode übersetzt, um damit ausführbare Anwendungen erstellen zu können. Das mag für einige Anwendungen ein umständlicher / aufwendiger Weg sein, doch das tut seiner Funktionalität ja keinen Abbruch. Als Resultat könnte auf jeden Fall von einer visuellen Programmiersprache reden.

Es wäre auch nicht das erste Mal, dass eine Flowchart-ähnliche Sprache produktiv genutzt werden würde. Du kannst dir als Beispiel DRAKON anschauen. Auch hinsichtlich UML gab es eine Entwicklungsrichtung, siehe xtUML oder fUML.

Aus all dem könnte man nun leichtfüßig sogar schlussfolgern (um den Bogen einmal noch weiter zu spannen):

Alle Programmiersprachen sind ausführbare Modellierungssprachen.

So einfach ist es m.E. allerdings nicht, wenn man sich an die oben gegebenen Kriterien hält. Ja, es gibt Modellierungssprachen, die zugleich als Programmiersprache definiert werden können (ein bekanntes Beispiel wäre AMPL). Aber es trifft nicht auf alle zu (wieder ein Beispiel: VRML), auch wenn sie für den Computer übersetzbar sind.

Modellierungssprachen müssen nicht in jedem Fall den konkreten Ablauf eines Programms beschreiben. Sie können bspw. auch einfach nur der Beschreibung eines Zustands dienen. Also anderen Zielen, die vielleicht sogar noch abstrakter als das Programm selbst sind (Bsp.: Darstellung einer kompletten Architektur verschiedener Systeme / Programme).

Die Diskussion: Was ist noch Modellierung? Wo beginnt Programmierung?, ist generell nicht neu und ich denke, du wirst bei Recherche via Google auch auf wissenschaftliche Abhandlungen oder Vorträge stoßen, die sich mit dem Thema versuchen, auseinanderzusetzen. Ein Beispiel-Autor wäre da Ed Seidewitz oder hier ein Blogartikel von Jean Bezivin: Modelling and Programming (wenn auch mit einem eher ernüchternden Fazit).

Zuletzt noch bezüglich Python, obwohl ich denke, dass dies klar sein sollte: Bei dieser Sprache handelt es sich, vom breiten Teil der Programmierwelt abgenickt, um eine textuelle Programmiersprache. Sie kann sprachlich Iteration/Rekursion ausdrücken, gilt als turing-vollständig und zudem gibt es Tools, um den Code für einen Computer ausführbar zu machen.