:Das ist weder ein anderer Ansatz noch ein Modula-Idiom. Es ist lediglich die Umsetzung des Entwurfs in Pseudocode. :Warum es nicht unbedingt die beste Lösung ist, den Zugriff auf die letzte erzeuget Pseudozufallszahl und das Weiterschalten in der Pseodozufallszahlenfolge als eine Operation zu betrachten versuchte ich bereits anzudeuten. Hier noch einmal die Begründung dafür: Ein Pseudozufallszahlengenerator iteriert über eine Folge. Die natürlichen Operationen sind daher der 'Zugriff' an der aktuellen Position und der 'Schritt' zum nächsten Element der Folge. :Dass der Zugriff auf das aktuelle Element der Folge einen Schritt zum nächsten Element als Seiteneffekt hat, mag für Java-Kundige ein vertrautes Verhalten eines Iterators sein. Das Entwurfsmuster 'Iterator' versteht die natürlichen Nachrichten first, next, isDone und currentItem, und currentItem hat keine Seiteneffekte (Gamma et. al. 1994). Auch BertrandMeyer (1997) sieht das nicht anders. :Also: welchen Grund ausser der Definition von java.util.Iterator gibt es, das Weiterschalten und den Zugriff auf das letzte Element als einen Abfrage mit Seiteneffekt oder als eine Anweisung mit Rückgabewert zu sehen. Zumindest Meyers 'Command-Query Separation principle' wird durch die Funktionsweise von next() in java.util.Iterator verletzt. Das sich rand() aus der C-Standardbibliothek so verhält ist bei den Abstraktionsmöglichkeiten von C, wie sie im Jahr 1972 gesehen wurden, kaum zu vermeiden. :Ausser Java fällt mir keine aktuelle Programmiersprache ein, in der der Zugriff auf das aktuelle Element über einen Iterator den Seiteneffekt 'Weiterschalten' hat. -- KurtWatzka |
|
Der Typ, hinter dem der Generator steckt, bleibt dabei (wie in BoxGenerator/SpracheCee) verdeckt und wird erst in einer eigenen Implementationsdatei spezifiziert.
|
Fragen |
Sehe ich das richtig, daß man den Generator händisch mir RndBoxNext? weiterschalten muß? Ist das ein Modula Idiom oder einfach nur ein anderer Ansatz?