Rolf B: Rekursiver Algorithmus über Callbackfunktion

Beitrag lesen

Hallo pl,

Nein: Eine Low-Level-Serialisierung bzw. Bytesequenzen kennen gar keine Zeichenkodierung.

Hat keiner anders behauptet. Aber die Daten darin, die schon.

Du hast doch drei Ebenen:

physisch: Die Bytefolge in der Datei (oder im Serialisieungsdatenstrom)
logisch: Die durch die Bytes codierten Symbole
semantisch: Die Bedeutung dieser Symbole.

Will ich die Datei inhaltlich verarbeiten, muss ich über alle drei Ebenen weg. Um das mal mit Compilerbau[^1]-Begriffen zu formulieren: Von physisch nach logisch brauche ich einen Lexer, von logisch nach semantisch einen Parser. Reicht mir das Hantieren mit dem Symbolen (z.B. weil ich die Codierung ändern will oder im Text suchen), brauche ich nur den Lexer.

Dein Verfahren verwendet zwei Klassen von Symbolen: Integers und Zeichen. Ich sehe aber deiner Bytefolge nicht an, welche Symbole sie enthält, ohne das inhaltliche Layout der Datei zu kennen. Das Layout gehört aber eher auf die dritte Ebene - der codierte Inhalt. D.h. ein Lexer muss Dinge wissen, die eigentlich in den Parser gehören. Darum sprach ich von der Verletzung der Separation Of Concerns.

JSON und XML verwenden nur eine Klasse von Symbolen: Zeichen. Die Unicode-Codierung ermöglicht es, einem Byte anzusehen, ob es der Beginn eines Symbols ist oder nicht. Der Lexer muss das technische Layout nicht kennen.

DAS ist meine Kritik an deinem Verfahren. Wenn Wirth vor 30 Jahren etwas anderes propagiert haben sollte, dann muss man dazu auch beachten, dass sich seit 1986 (A&D mit M2) in der Info eine Menge getan hat. Vor 30 Jahren war dein Verfahren durchaus state-of-the-art.

Rolf

--
sumpsi - posui - clusi [^1]: Wirth, Niklaus, 1977, ISBN 978-3519223382 (3. Aufl. '84)