...da fragt man sich schon wie wichtig eine geschlossene Prozedur eigentlich sein kann?
Hey FloatingRiver,
nachdem ich meinen Herzinfarkt überwunden und mich mit dem Defibrillator erfolgreich reanimiert habe, möchte ich dir gerne noch etwas zum Thema CLOSED mitgeben.
Wenn man COMAL so nutzt, wie es gedacht ist, sollten PROC und FUNC immer mit CLOSED geschrieben werden. Und zwar aus folgenden Gründen:
Lokale Variablen sind nur mit CLOSED möglich
Nur in CLOSED-Prozeduren bleiben Variablen innerhalb der Prozedur. Ohne CLOSED sind alle Variablen global. Das heißt: Prozeduren können sich gegenseitig beeinflussen, und der Überblick geht schnell verloren. Das macht Programme fehleranfälliger - und widerspricht dem Grundprinzip prozeduraler Programmierung: Klare, abgeschlossene Bausteine.
Speicher wird effizienter genutzt
In CLOSED-Prozeduren werden Variablen nur während der Ausführung im Speicher gehalten. Nach dem Ende der Prozedur wird der Speicher sofort freigegeben. Ohne CLOSED bleiben alle Variablen dauerhaft erhalten - selbst wenn sie gar nicht mehr gebraucht werden. Auf einem C64 mit begrenztem RAM kann das schnell zum Problem werden.
Der Code bleibt sauber und nachvollziehbar
Prozeduren sollten so geschrieben sein, dass sie für sich selbst funktionieren - ohne Abhängigkeiten von außen. Das erreicht man nur mit CLOSED. Der Code bleibt dadurch übersichtlich, leichter zu testen und vor allem: Sicher vor unerwarteten Seiteneffekten.
Fazit:
Wer COMAL sinnvoll und strukturiert einsetzen möchte, sollte PROC und FUNC grundsätzlich mit CLOSED schreiben. Alles andere führt zu genau den Problemen, die COMAL gegenüber BASIC eigentlich vermeiden wollte.
Ich sage das bewusst so klar, weil ich oft den Eindruck habe, dass COMAL zwar irgendwie verwendet wird, aber die Konzepte prozeduraler Programmierung nicht wirklich verstanden werden. Manche sehen die Stärken von COMAL in der LOGO-ähnlichen Turtle-Grafik oder in bestimmten Grafikbefehlen - aber das sind eigentlich nur nette Zugaben.
Die eigentliche Stärke von COMAL liegt in seiner sauberen, strukturierten und prozeduralen Programmierung - genau das unterscheidet es fundamental von den alten BASIC-Varianten.
Mit freundlichen Grüßen,
der Oberlehrer 