Hi Y0Gi!
Dann versuche ich mal meine Gedanken dazu in Worte zu fassen und meine Entscheidung, im Beispiel ein eigenes Textformat zu verwenden, zu begründen.
Heute würde ich wahrscheinlich das Datenformat von KVocTrain (XML) einsetzen und auf Grund meiner großen Erfahrung mit GUIs eine gute Eingabeoberfläche dafür erstellen. Aber dazu später...
Y0Gi hat geschrieben:aber IMHO kann das Format da auch nichts für, wenn sich jemand beim Hinzufügen von Daten nicht daran hält.
Hierbei war es mir (während meines Gedankenspiels zum Thema Vokabeltrainer) wichtig, dass Vokabeln **einfach** hinzugefügt werden können. Das bedeutet, dass der Benutzer sich auch mal das Textfile öffnen kann und, so nebenbei, auf die Schnelle ein paar hundert Vokabeln eingeben kann.
Sobald es eine komfortable Eingabeoberfläche gibt, spielt das Datenformat nur mehr eine untergeordnete Rolle.
Ich war einmal der Meinung, dass YAML für so etwas recht gut geeignet sei (siehe:
http://www.python-forum.de/post-17122.html#17122), bis ich anderen dabei zusah, wie sie Artikel in eine YAML-Datei eingeben mussten. Das war erbärmlich!
Einmal mit Tab, einmal ein Leerzeichen zu viel, dann wurden ein paar Bezeichner groß und andere Bezeichner klein geschrieben. -- Schlicht gesagt: Ein Chaos.
Diesen Fehler werde ich (hoffentlich) nicht mehr machen. Wenn ich möchte, dass eine Datendatei für Menschen schreibbar sein soll, dann muss diese einfach gehalten werden. Und auf keinen Fall darf es etwas ausmachen, wenn im Text ein paar Zeilenumbrüche mehr drinnen sind, als gedacht.
Y0Gi hat geschrieben:eine einfache Eingabe per Kommandozeile oder GUI verpacken
Wenn es nie geplant ist, dass der Benutzer die Datendatei angreifen soll, dann würde ich das Datenformat eines bekannten und bewährten freien Programms wählen. Damit würde man eine Synergie schaffen, die nicht zu unterschätzen ist. Man könnte das auch kombinieren, indem man zwar ein eigenes Format verwendet, aber den Import und Export in mindestens eines der beliebtesten anderen Programme beherrscht. Das bedeutet auch, dass man sich die anderen Datenformate ansehen muss oder zumindest herausfinden muss, welche Informationen gespeichert werden müssen.
Beide Programme profitieren dann von der Beliebtheit des anderen. Beide könnten die Daten untereinander austauschen, was dir sofort einen rießigen Vorteil bringen würde. Du hättest auf einen Schlag Zugriff auf fertige Wörterbücher. Auch das andere Programm würde davon profitieren.
Allerdings muss dann die Eingabeoberfläche wirklich komfortabel sein und auch ohne Maus schnell und leicht bedienbar sein. Dann -- und nur dann ist es egal (zumindest für den Benutzer), welches Datenformat du für die Speicherung verwendest.
XML, Yaml, Json -- Mit diesen Datenformaten liegt man nicht schlecht, denn das erlaubt anderen Programmierern auch auf *deine* Daten zuzugreifen, zu verändern oder einfach wieder nur als Basis für ein eigenes Programm oder ein Zusatzprodukt zu deinem Programm zu verwenden.
Noch etwas: Abwärtskompatibel bleiben. Neuere Versionen des Programms müssen mühelos mit älteren Datendateien klar kommen.
Was will ich eigentlich sagen? Eine wirklich gute Eingabeoberfläche zu erstellen ist nicht so einfach, wie manche glauben mögen. Es kostet Zeit, eine gute Eingabeoberfläche zu entwickeln. Denn, es gibt kaum etwas einfacheres als die Eingabe von Daten in eine Textdatei oder in eine Tabelle. Das muss man erst mal toppen.
lg
Gerold