R
Dravere schrieb:
Man muss sich keine Kodierung ausdenken <-> Die Kodierung ist in der Regel standardisiert? Ehm, wie jetzt? Und welche Kodierung nimmst du jetzt? Du musst dich festlegen.
Ich nehme ASCII. Oder UTF-8. Ich muss mir keine Kodierung ausdenken (natürlich im Sinne von erfinden!), weil es ASCII und UTF-8 als fertig standardisierte Kodierung schon gibt, und so ziemlich jedes System kann sie verarbeiten.
Keine Gedanken über Endianess ist auch schlicht gelogen, wie ich es schon mehrfach aufgeführt habe.
Ja, weil du ASCII und UTF-8 einfach ignorierst. Für die ist Endianess irrelevant. Wenn ich selbst festlegen kann, wie ich meine Dateien speichere, dann nehme ich natürlich das einfachste - darum geht es doch gerade, um Einfachheit. Wenn UTF-8 für die Aufgabe nicht ausreicht, wird es komplizierter. Das ist dann aber schon jenseits dessen, was ich hier propagiere.
Also gerade als C oder C++ Programmierer solltest du wissen, dass nicht jede Programmiersprache fertige Mittel anbietet.
Gut, jede war vielleicht übertrieben. Ich hätte aber Mühe eine Allzwecksprache zu finden, die keine Funktionen für das Lesen von ASCII-Files und das rudimentäre parsen selbiger mitbringt. C++ und C jedenfalls können das ganz gut. Welche relevante Sprache kann es denn nicht?
Und wenn du nun mit Libraries kommst, dann frage ich dich, wieso man nicht auch Libraries für Binärfiles verwenden kann, zum Beispiel wie bei SQLite?
Hab ich nichts dagegen gesagt. Es stellt sich natürlich die Frage, auf wie vielen Systemen SQLite verfügbar ist, und wie relevant die Portierbarkeit im Einzelfall ist.
Registrierter Troll schrieb:
Man muss Konventionen festlegen, ...
Ohne welche du auch kein Textfile lesen kannst, da legst du die auch fest!
Ja. ASCII. Mit \n getrennte Dezimalzahlen. Fertig. Kann von einer Unzahl von Systemen auf der Welt sofort gelesen und verarbeitet werden, ohne viel zu programmieren oder auf den SQLite-Port warten zu müssen.
Wie soll der Text abgespeichert werden? Wie soll die Syntax aussehen? Wird der Dezimalpunkt als Punkt oder Komma dargestellt? Wie wird ein Datum notiert? Du musst ganz genau bestimmen, wie es im Textfile passieren soll.
Du wirfst die ganze Zeit Kodierung (edit: Semantik) und Formatierung (edit: Syntax) durcheinander. Dass man die Formatierung in beiden Fällen definieren muss, ist doch klar. Es geht mir darum, dass alleine schon die Kodierung der Daten zwischen verschiedenen Systemen aufwendig synchronisiert werden muss. Ob eine Bibliothek das erledigt oder nicht, ist dabei doch völlig egal. Der Punkt ist, dass das mit Text in einer allgemein gültigen und portablen Kodierung einfacher sein dürfte als mit binären Codes. "1000" auf x Plattformen korrekt als 1000 zu interpretieren ist quasi immer eine triviale Aufgabe - das gleiche mit 0x03e8 zu tun ist eben nicht trivial.
Und selbstverständlich verwende ich dafür die Standard-Bibliotheken der Programmiersprachen, die mir die notwendigen Werkzeuge liefern - genau deshalb nehme ich ja überhaupt ASCII-Text. Weil es der kleinste gemeinsame Nenner ist.
Ja, es gibt einen Unterschied, wenn du nämlich eine Bibliothek für Textformate nimmst und mit dieser entwickelst, aber beim Binärformat zuerst die Bibliothek selber entwickelst. Logisch hast du dann einen Mehraufwand. Aber wenn du die Bibliothek für den Text auch selber implementierst, dann wäre es gleich, oder du nimmst beim Binärformat auch eine Bibliothek und es ist gleich.
Das ist richtig. Genau darum geht es. Ich will nicht selbst entwickeln, und wenn doch, so wenig Arbeit wie möglich haben. Text zu speichern und zu laden ist ein No-Brainer, sogar auf dem Mobiltelefon, das kein SQLite kennt.
Wie ist es denn nun mit dem Text in Binärdateien, der zusätzlich eine Kodierung braucht? Warum ist es deiner Ansicht nach genauso einfach, zwei Kodierungen zu verwenden statt nur einer?