Permalink

Was ist ein guter Standard?

Minimale Redundanz

Dieser Abschnitt heißt »minimale Redundanz«, nicht »keine Redundanz«, denn – wie bereits in der Einleitung gesagt – unsere Technologien werden von Menschen verwendet, und Menschen können mit Redundanz umgehen. Sie haben vielmehr Probleme, wenn es keine gibt. Zu viel Redundanz ist jedoch schlecht für Computer (oder Programmierer), denn das bedeutet, dass die gleichen Dinge mehrere Male implementiert werden müssen. Aber es ist zum Beispiel gut, dass HTML verschiedene Möglichkeiten bietet, einen Absatz rot zu färben. Menschen haben unterschiedliche Stile und Denkweisen. Verschiedene Arbeitsweisen können zum gleichen Ergebnis führen, für den Autoren oder Leser allerdings eine andere Bedeutung haben, was oftmals hilfreich ist.

Anmerkung des Übersetzers:

Ein Beispiel soll diesen Gedanken verdeutlichen. Um in einem HTML-Dokument per CSS Überschriften der ersten Ordnung rot und Überschriften der zweiten Ordnung rot und kursiv darzustellen, kann man folgende Regeln angeben:

h1 { color: red; }
h2 { color: red; font-style: italic; }

Um jedoch deutlicher klar zu machen, dass beide Elementtypen die selbe Farbe haben sollen, kann man es auch so schreiben:

h1, h2 { color: red; }
h2 { font-style: italic; }

Beide Möglichkeiten führen zum gleichen Ziel, allerdings haben sie unterschiedliche Bedeutung für den Autoren und stellen eine andere Methodik dar, die dem Autoren die Arbeit womöglich erleichtert.

Andererseits definiert XML 1.0 eine Baumstruktur mit vier Knotenarten (Zeichenketten, Verarbeitungsanweisungen, leere Elemente und Entities). Vor allem weil es sich um abstrakte Konzepte handelt, ist nicht klar, warum es vier Knotenarten sein müssen. Warum nicht zehn? Oder nur eine?

Was also ist zu wenig und was zu viel? Das ist schwer zu sagen. Die Überschneidung von Funktionalitäten zwischen verschiedenen Spezifikationen kann leicht zu inkompatiblen Modellen führen, deren Implementierung schwierig ist, was wiederum zu Fehlern führt. Daher sollten Überschneidungen möglichst gering gehalten werden. Aus diesem Grund unterstützt SVG keinen Weg, Rastergrafiken zu kodieren, weil es dafür PNG gibt. Andererseits kann es innerhalb einer Spezifikation durchaus mehrere Möglichkeiten geben, zu einem Ergebnis zu gelangen, denn innerhalb einer Spezifikation ist es leichter, Konsistenz beizubehalten.

Betrachten wir noch einmal das Beispiel der Rotfärbung eines Absatzes: CSS bietet mehrere Arten von Regeln und unterschiedlichen Ausdrücken, die alle »rot« bedeuten. Das erhöht den Implementierungsaufwand ein wenig, aber verbessert die Benutzbarkeit von CSS wesentlich. Andererseits ist das HTML-Attribut, das einen Text rot färbt, offiziell missbilligt (deprecated), denn es verwendet ein gegenüber CSS unterschiedliches Modell (keine Kaskade) und eine etwas abweichende Syntax (red und #FF0000 sind erlaubt, #F00 hingegen nicht).

Aber Vorsicht! Der Aspekt der Zugänglichkeit erfordert oftmals, dass die gleiche Information auf unterschiedliche Arten bereitgestellt wird, zum Beispiel sowohl als Grafik als auch als Text. Beide Formate transportieren gewissermaßen die »gleiche« Information, allerdings auf zwei unterschiedlichen Ebenen. Heutige Webformate können nur die Interpretation einer Information transportieren (zum Beispiel als Sprache, Bild oder Schrift), nicht die Information selbst. Das ist der Grund dafür, dass Computer eine Darstellung nicht selbstständig in einer andere umformen können. Vielleicht wird es eines Tages möglich sein, Dinge so zu beschrieben, dass Computer daraus beliebig Text, Sprache, Bilder oder sogar andere Formen generieren können. Daran arbeiten wir.

Anmerkung des Übersetzers:

Das W3C sucht unter dem Stichwort »Semantic Web« nach solchen Möglichkeiten. RDF ist ein Versuch, eine abstrakte Sprache zu schaffen, die die Essenz von Informationen ausdrückt und nicht nur eine oder mehrere mögliche Interpretationen. Aber RDF ist sehr primitiv und vom Ziel noch sehr weit entfernt.