Ich habe mich gefragt, warum XML ein L im Namen hat.
XML selbst "macht" nichts. Es ist nur ein Datenspeicherformat, keine Sprache! Sprachen "tun" Dinge.
Die Art und Weise, wie Sie XML dazu bringen, Dinge zu "erledigen", um es in eine richtige Sprache zu verwandeln, besteht darin, seinem Stammelement xmlns
Attribute hinzuzufügen . Erst dann sagt es seiner Umgebung, worum es geht.
Ein Beispiel ist XHTML. Es ist aktiv, es hat Links, Hypertext, Stile usw., alle ausgelöst durch die xmlns
. Ohne dies ist eine XHTML-Datei nur ein Datenpaket in Markup-Knoten.
Warum wird XML dann eine Sprache genannt? Es beschreibt nichts, es interpretiert nichts, es ist einfach so.
Edit: Vielleicht hätte meine Frage breiter sein sollen. Da die Antwort derzeit "weil XML nach SGML benannt wurde, was nach GML usw. benannt wurde" lautet, sollte die Frage lauten, warum Auszeichnungssprachen (wie XML) als Sprachen bezeichnet werden.
Oh, und WRT die engen Abstimmungen: Nein, ich frage nicht nach dem X. Ich frage nach dem L!
quelle
Antworten:
Die eigentliche Antwort ist, dass XML ein L im Namen hat, weil ein Typ namens Raymond L Orie in den 1970er Jahren zu den Designern der ersten "Auszeichnungssprache" bei IBM gehörte. Die Entwickler mussten einen Namen für die Sprache finden, also entschieden sie sich für GML, weil es die Initialen der drei Entwickler (Goldfarb, Mosher und Lorie) waren. Anschließend erstellten sie das Backronym Generalized Markup Language .
Diese wurde später als SGML ( Standardized General Markup Language ) standardisiert. Als XML erstellt wurde, wollten die Entwickler das ML-Postfix beibehalten, um die familiäre Beziehung zu SGML anzuzeigen, und sie fügten das X voran, weil sie es für cool hielten. (Auch wenn es eigentlich keinen Sinn ergibt - XML ist eine Metasprache, mit der Sie erweiterbare Sprachen definieren können, XML selbst ist jedoch nicht wirklich erweiterbar.)
Zu Ihrer zweiten Frage, ob XML zu Recht als Sprache bezeichnet werden kann:
Jedes strukturierte Textformat (oder sogar Binärformat), das rechnerisch verarbeitet werden kann, kann als Sprache bezeichnet werden. Eine Sprache "tut" nichts als solche, aber manche Software kann Eingaben in die Sprache verarbeiten und etwas darauf basierend "tun".
Sie stellen fest, dass XML ein "Speicherformat" ist, das zwar zutrifft, ein textuelles Speicherformat jedoch als Sprache bezeichnet werden kann. Diese Begriffe schließen sich nicht gegenseitig aus.
Programmiersprachen sind eine Teilmenge von Sprachen. ZB HTML und CSS sind Sprachen, aber keine Programmiersprachen , während JavaScript eine echte Programmiersprache ist. Allerdings gibt es auch keine formale Definition der Programmiersprache , und es gibt eine große Grauzone von Sprachen, die abhängig von Ihrer Sichtweise entweder als Datenformate oder als Programmiersprachen bezeichnet werden können.
Vor diesem Hintergrund ist XML eindeutig eine Sprache. Nur keine Programmiersprache - obwohl es verwendet werden kann, um Programmiersprachen wie XSLT zu definieren.
Ihr Standpunkt zu Namespaces ist irrelevant. Namespaces sind eine optionale Funktion von XML und ändern die Semantik eines XML-Vokabulars nicht. Es ist nur erforderlich, Elementnamen zu disambiguieren, wenn das Format mehrere Vokabulare enthalten kann.
Edit: reinierpost wies darauf hin, dass du mit der Frage etwas anderes gemeint haben könntest als das, was ich verstanden habe. Vielleicht haben Sie gemeint, dass bestimmte Vokabulare wie XHTML, RSS, XSLT usw. Sprachen sind, weil sie Elemente und Attribute mit bestimmten Semantiken verknüpfen, aber der XML-Standard selbst definiert keine Semantik für bestimmte Elemente und Attribute und fühlt sich daher nicht wie ein " echte Sprache ".
Meine Antwort wäre, dass XML funktioniert sowohl Syntax und Semantik definieren, definiert sie es nur auf einer anderen Ebene. Zum Beispiel definiert es die Syntax von Elementen und Attributen sowie Regeln für deren Verarbeitung. XML ist eine "Metasprache", die immer noch eine Art Sprache ist (genau wie Metadaten immer noch Daten sind!). Als Beispiel ist EBNF auch eindeutig eine Sprache, aber ihr Zweck besteht darin, die Syntax anderer Sprachen zu definieren, so dass sie auch eine Metasprache ist.
quelle
Weil es eine Sprache ist. Eine Auszeichnungssprache , keine Programmiersprache.
Beachten Sie, dass natürliche menschliche Sprachen wie Englisch und Spanisch auch nichts "tun". Tatsächlich "tun" C ++ und Java und dergleichen technisch nichts, bis sie in einen Compiler eingespeist werden und die Ausgabe ausgeführt wird. Sachen machen und eine Sprache sein sind weitgehend orthogonal zueinander.
quelle
</nitpick>
Wie auch immer, gute Antwort!Sei Σ eine nicht leere, endliche Menge von Symbolen, die als Alphabet bezeichnet wird . Dann ist Σ * die abzählbare unendliche Menge von endlichen Wörtern, die durch Verketten von null oder mehr Symbolen aus Σ gebildet werden können. Jede genau definierte Teilmenge L ⊆ ⊆ * ist eine Sprache .
Wenden wir dies auf XML an. Sein Alphabet ist der Unicode- Zeichensatz U , der nicht leer und endlich ist. Nicht jede Verkettung von null oder mehr Unicode-Zeichen ist ein wohlgeformtes XML-Dokument, beispielsweise die Zeichenfolge
ist eindeutig nicht. Die Teilmenge XML ⊂ U *, die wohlgeformte XML- Dokumente bildet, ist entscheidbar (oder „rekursiv“). Es gibt eine Maschine (Algorithmus oder Computerprogramm), die ein beliebiges Wort w ∈ U * als Eingabe verwendet und nach einer begrenzten Zeit entweder 1 ausgibt, wenn w ∈ XML ist, oder 0, wenn nicht. Ein solcher Algorithmus ist eine Subroutine jeder XML-Verarbeitungssoftware. Nicht alle Sprachen sind entscheidbar. Zum Beispiel ist die Menge der gültigen C-Programme, die in einer begrenzten Zeitspanne enden, nicht (dies wird als Stopp-Problem bezeichnet)). Wenn man eine neue Sprache entwirft, ist es wichtig zu entscheiden, ob sie so mächtig wie möglich sein soll oder ob die Ausdruckskraft zugunsten der Entscheidbarkeit eingeschränkt werden soll.
Einige Sprachen können mit Hilfe einer Grammatik definiert werden , die die Sprache hervorbringen soll . Eine Grammatik besteht aus
Jedes Wort, das ausschließlich aus Literalen besteht und abgeleitet werden kann, indem man mit dem Startsymbol beginnt und dann die angegebenen Regeln anwendet, gehört zu der Sprache, die von der Grammatik erzeugt wird.
Je nachdem, wie ausgefeilte Regeln Sie in Ihrer Grammatik zulassen, sind unterschiedlich ausgefeilte Maschinen erforderlich, um zu beweisen, dass ein bestimmtes Wort tatsächlich von der Grammatik erzeugt werden kann. Das obige Beispiel ist eine reguläre Grammatik, die am einfachsten und am wenigsten mächtig ist. Die nächste mächtige Klasse von Grammatiken heißt kontextfrei . Diese Grammatiken sind auch sehr einfach zu überprüfen. XML kann durch eine kontextfreie Grammatik beschrieben werden (es sei denn, ich übersehe eine unbekannte Funktion, die mir nicht bekannt ist). Die Klassifikation der Grammatiken bildet die Chomsky-Hierarchie der Grammatiken (und damit der Sprachen). Jede Sprache, die durch eine Grammatik beschrieben werden kann, ist zumindest halbentscheidbar(oder "rekursiv aufzählbar"). Das heißt, es gibt eine Maschine, die angesichts eines Wortes, das tatsächlich zur Sprache gehört, einen Beweis herleitet, dass es von der Grammatik innerhalb einer begrenzten Zeit erzeugt werden kann, und niemals einen falschen Beweis ausgibt. Eine solche Maschine wird als Verifizierer bezeichnet . Beachten Sie, dass die Maschine möglicherweise nie anhält, wenn ein Wort eingegeben wird, das nicht zur Sprache gehört. Natürlich möchten wir, dass unsere Programmiersprachen durch weniger leistungsfähige Grammatiken beschrieben werden, damit ungültige Programme innerhalb einer begrenzten Zeit abgelehnt werden können.
Schemata sind eine Ergänzung zu XML, mit der sich die wohlgeformten Dokumente verfeinern lassen. Ein wohlgeformtes Dokument, das einem bestimmten Schema folgt, wird gemäß diesem Schema als gültig bezeichnet . Zum Beispiel die Zeichenfolge
ist ein wohlgeformtes XML-Dokument, aber kein gültiges XHTML-Dokument. Es gibt Schemata für XHTML , SVG , XSLT und was nicht. Die Schemaüberprüfung kann auch durch einen Algorithmus erfolgen, der bei jeder Eingabe nach einer begrenzten Anzahl von Schritten angehalten wird. Ein solches Programm wird Validator oder Validierungsparser genannt. Schemata werden durch sogenannte Scema-Definitionssprachen definiert , die eine Möglichkeit darstellen, Grammatiken formal zu definieren. XSD ist die offizielle Schemadefinitionssprache für XML und selbst XML-basiert. RELAX NG ist eine elegantere, viel einfachere und etwas weniger leistungsstarke Alternative zu XSD.
Da Sie Ihre eigenen Schemata definieren können, wird XML als erweiterbare Sprache bezeichnet. Dies ist der Ursprung des "X" in "XML".
Sie können einen Regelsatz definieren, der XML-Dokumenten eine Interpretation als Beschreibung von Computerprogrammen gibt. Das bereits erwähnte XSLT ist ein Beispiel für eine solche mit XML erstellte Programmiersprache. Im Allgemeinen können Sie den abstrakten Syntaxbaum fast jeder Programmiersprache ganz natürlich in XML serialisieren, wenn Sie dies möchten.
quelle
In der Informatik ist die formale Sprache nur ein Satz von Zeichenfolgen, die normalerweise unendlich sind und häufig mithilfe von Regeln beschrieben werden (zwei gebräuchliche Versionen dieser Regeln sind reguläre Ausdrücke und formale Grammatiken ).
Beachten Sie, dass dies bedeutet, dass eine Sprache nur Syntax benötigt . Die Sprache muss nicht beschreiben, was jede gültige Zeichenfolge bedeutet (das heißt Semantik ).
Dies bedeutet nun, dass Programmiersprachen formale Sprachen sind, die auch eine Semantik haben, die einige Berechnungen beschreibt. Und zum Beispiel ist XHTML eine formale Sprache, deren Semantik (grob und informell) beschreibt, wie ein Hypertextdokument aussieht und sich verhält.
XML ist immer noch eine Sprache, obwohl es selbst keine Semantik hat (aber viele von XML abgeleitete Sprachen, wie XHTML und XAML).
Binärformate sind technisch gesehen ebenfalls Sprachen, werden aber nicht so genannt. Der Begriff "Sprache" ist für vom Menschen lesbare Formate reserviert.
quelle
Eine Sprache ist eine Methode zur Übermittlung von Informationen.
Eine Programmiersprache ist eine Methode zur Übermittlung von Algorithmen.
Eine Auszeichnungssprache wie XML ist eine Sprache für die Übermittlung von Daten.
quelle
XML ist eine Metasprache. Sie verwenden es, um bestimmte Sprachen zu definieren. Sprachen tun nie etwas, sie erlauben uns nur, Dinge auszudrücken. Es ist auch nicht wahr, dass XML eine "Speichersprache" ist. Im Gegenteil. Sie können XML-Dokumente nach Belieben speichern. XML wird besser als Übertragungssprache angesehen. PS. Wenn Sie nicht glauben, dass XML etwas "bewirkt", müssen Sie erklären, wie viele Systeme (z. B. Anlegestellen) XML als (schlechte) Programmiersprache verwenden. Es ist ein bedauerlicher Missbrauch von XML, aber es gibt ihn in der Natur und das ist nur eines von vielen Beispielen.
quelle