Me he estado preguntando por qué XML tiene una L en su nombre.
Por sí mismo, XML no "hace" nada. ¡Es solo un formato de almacenamiento de datos, no un idioma! Los idiomas "hacen" cosas.
La forma en que obtienes XML para "hacer" cosas, para convertirlo en un lenguaje apropiado, es agregar xmlns
atributos a su elemento raíz. Solo entonces le dice a su entorno de qué se trata.
Un ejemplo es XHTML. Está activo, tiene enlaces, hipertexto, estilos, etc., todos activados por xmlns
. Sin eso, un archivo XHTML es solo un conjunto de datos en nodos de marcado.
Entonces, ¿por qué XML se llama lenguaje? No describe nada, no interpreta, simplemente es.
Editar: Tal vez mi pregunta debería haber sido más amplia. Dado que la respuesta es actualmente "porque XML fue nombrado después de SGML, que fue nombrado después de GML, etc." la pregunta debería haber sido, ¿por qué los lenguajes de marcado (como XML) se llaman lenguajes?
Ah, y WRT los votos cerrados: no, no estoy preguntando por la X. ¡Estoy preguntando por la L!
fuente
Respuestas:
La verdadera respuesta es que XML tiene una L en el nombre porque un tipo llamado Raymond L orie fue uno de los diseñadores del primer "lenguaje de marcado" en IBM en la década de 1970. Los desarrolladores tuvieron que encontrar un nombre para el idioma, por lo que eligieron GML porque eran las iniciales de los tres desarrolladores (Goldfarb, Mosher y Lorie). Luego crearon el backronym Generalized Markup Language .
Más tarde, esto se estandarizó como SGML ( lenguaje de marcado general estandarizado ), y cuando se creó XML, los desarrolladores querían conservar el ML-postfix para indicar la relación familiar con SGML, y agregaron la X al frente porque pensaron que se veía genial. (Aunque en realidad no tiene sentido, XML es un metalenguaje que le permite definir lenguajes extensibles, pero XML no es realmente extensible en sí mismo).
En cuanto a su segunda pregunta si XML se puede llamar legítimamente un lenguaje:
Cualquier formato textual estructurado (o incluso binario) que pueda procesarse computacionalmente puede denominarse lenguaje. Un idioma no "hace" nada como tal, pero algunos programas pueden procesar entradas en el idioma y "hacer" algo basado en él.
Usted nota que XML es un "formato de almacenamiento" que es cierto, pero un formato de almacenamiento textual puede llamarse un lenguaje, estos términos no son mutuamente excluyentes.
Los lenguajes de programación son un subconjunto de idiomas. Por ejemplo, HTML y CSS son lenguajes pero no lenguajes de programación , mientras que JavaScript es un lenguaje de programación real. Dicho esto, tampoco hay una definición formal de lenguaje de programación , y hay una gran zona gris de lenguajes que podrían llamarse formatos de datos o lenguajes de programación dependiendo de su punto de vista.
Dado esto, XML es claramente un lenguaje. simplemente no es un lenguaje de programación , aunque puede usarse para definir lenguajes de programación como XSLT.
Su punto sobre los espacios de nombres es irrelevante. Los espacios de nombres son una característica opcional de XML y no cambian la semántica de un vocabulario XML. Solo es necesario desambiguar los nombres de los elementos si el formato puede contener múltiples vocabularios.
Editar: reinierpost señaló que podría haber significado algo diferente con la pregunta de lo que entendí. Tal vez quisiste decir que vocabularios específicos como XHTML, RSS, XSLT, etc. son lenguajes porque asocian elementos y atributos con una semántica particular, pero el estándar XML en sí no define ninguna semántica para elementos y atributos específicos, por lo que no parece un " lenguaje real ".
Mi respuesta a esto sería que XML hace definir tanto sintaxis y la semántica, sólo se define en un nivel diferente. Por ejemplo, define la sintaxis de elementos y atributos y reglas sobre cómo procesarlos. XML es un "metalenguaje" que sigue siendo una especie de lenguaje (¡al igual que los metadatos siguen siendo datos!). Como ejemplo, EBNF también es claramente un lenguaje, pero su propósito es definir la sintaxis de otros idiomas, por lo que también es un metalenguaje.
fuente
Porque es un lenguaje. Un lenguaje de marcado , no un lenguaje de programación.
Tenga en cuenta que los idiomas humanos naturales como el inglés y el español tampoco "hacen" nada. De hecho, técnicamente C ++ y Java y similares no "hacen" nada hasta que se introducen en un compilador y la salida se ejecuta. Hacer cosas y ser un idioma son en gran medida ortogonales entre sí.
fuente
</nitpick>
De todos modos, buena respuesta!Sea Σ un conjunto finito no vacío de símbolos, llamado alfabeto . Entonces Σ * es el conjunto infinito contable de palabras finitas que se pueden formar concatenando cero o más símbolos de Σ. Cualquier subconjunto bien definido L ⊆ Σ * es un lenguaje .
Apliquemos esto a XML. Su alfabeto es el juego de caracteres Unicode U , que no está vacío y es finito. No cada concatenación de cero o más caracteres Unicode es un documento XML bien formado, por ejemplo, la cadena
Claramente no lo es. El subconjunto XML ⊂ U * que forma documentos XML bien formados es decidible (o "recursivo"). Existe una máquina (algoritmo o programa de computadora) que toma como entrada cualquier palabra w ∈ U * y después de una cantidad de tiempo finita, genera 1 si w ∈ XML y 0 en caso contrario. Tal algoritmo es una subrutina de cualquier software de procesamiento XML. No todos los idiomas son decidibles. Por ejemplo, el conjunto de programas C válidos que terminan en un tiempo finito no lo es (esto se conoce como el problema de detención) Cuando uno diseña un nuevo lenguaje, una decisión importante es si debe ser lo más poderoso posible o si la expresividad se restringiría mejor a favor de la capacidad de decisión.
Algunos idiomas se pueden definir por medio de una gramática que se dice que produce el idioma. Una gramática consiste en
Cualquier palabra que consista exclusivamente en literales y se pueda derivar comenzando con el símbolo de inicio y luego aplicando las reglas dadas pertenece al lenguaje producido por la gramática.
Dependiendo de cuán elaboradas sean las reglas que permita en su gramática, se requieren máquinas sofisticadas para demostrar que la gramática puede producir una palabra determinada. El ejemplo dado anteriormente es una gramática regular , que es la más simple y menos poderosa. La próxima clase poderosa de gramáticas se llama libre de contexto . Estas gramáticas también son muy simples de verificar. XML (a menos que esté pasando por alto alguna característica oscura que no conozco) puede describirse mediante una gramática libre de contexto. La clasificación de las gramáticas forma la jerarquía Chomsky de las gramáticas (y, por lo tanto, los idiomas). Cada lenguaje que puede ser descrito por una gramática es al menos semi-decidible(o "recursivamente enumerable"). Es decir, existe una máquina que, dada una palabra que realmente pertenece al lenguaje, obtiene una prueba de que puede ser producida por la gramática en un tiempo finito y nunca generará una prueba incorrecta. Tal máquina se llama un verificador . Tenga en cuenta que la máquina nunca puede detenerse cuando se le da una palabra que en realidad no pertenece al idioma. Claramente, queremos que nuestros lenguajes de programación sean descritos por gramáticas menos poderosas para el beneficio de poder rechazar programas inválidos dentro de un tiempo finito.
Los esquemas son una adición a XML que permiten refinar el conjunto de documentos bien formados. Un documento bien formado que sigue un cierto esquema se llama válido de acuerdo con ese esquema. Por ejemplo, la cadena
es un documento XML bien formado pero no es un documento XHTML válido. Existen esquemas para XHTML , SVG , XSLT y lo que no. La validación del esquema también puede realizarse mediante un algoritmo que se garantiza que se detiene después de una cantidad finita de pasos para cada entrada. Tal programa se llama un validador o un analizador de validación. Los esquemas se definen mediante los llamados lenguajes de definición de scema , que son una forma de definir formalmente las gramáticas. XSD es el lenguaje oficial de definición de esquemas para XML y, en sí mismo, está basado en XML. RELAX NG es una alternativa más elegante, mucho más simple y un poco menos potente al XSD.
Como puede definir sus propios esquemas, XML se denomina lenguaje extensible , que es el origen de la "X" en "XML".
Puede definir un conjunto de reglas que le dan a los documentos XML una interpretación como descripciones de programas de computadora. XSLT, mencionado anteriormente, es un ejemplo de dicho lenguaje de programación construido con XML. En términos más generales, puede serializar el árbol de sintaxis abstracta de casi cualquier lenguaje de programación de forma bastante natural en XML, si esto es lo que desea.
fuente
En ciencias de la computación, el lenguaje formal es solo un conjunto de cadenas, generalmente infinito y a menudo descrito mediante reglas (dos versiones comunes de esas reglas son expresiones regulares y gramáticas formales ).
Tenga en cuenta que esto significa que todo lo que necesita un lenguaje es sintaxis , el lenguaje no necesita describir lo que significa cada cadena válida (eso se llama semántica ).
Ahora, esto significa que los lenguajes de programación son lenguajes formales que también tienen semántica, lo que describe algunos cálculos. Y, por ejemplo, XHTML es un lenguaje formal, cuya semántica describe (aproximadamente e informalmente) cómo se ve y se comporta un documento de hipertexto.
XML sigue siendo un lenguaje, aunque no tiene semántica en sí (pero muchos lenguajes derivados de XML sí, como XHTML y XAML).
Técnicamente, los formatos binarios también son idiomas, pero no se llaman así. El término "lenguaje" está reservado para formatos legibles por humanos.
fuente
Un lenguaje es un método para transmitir información.
Un lenguaje de programación es un método para transmitir algoritmos.
Un lenguaje de marcado como XML es un lenguaje para transmitir datos.
fuente
XML es un metalenguaje. Lo usas para definir idiomas específicos. Los idiomas nunca hacen nada, solo nos permiten expresar cosas. Además, no es cierto que XML sea un "lenguaje de almacenamiento". Todo lo contrario, de hecho. Puede almacenar documentos XML como quiera. XML está mejor pensado como un lenguaje de transferencia. PD. Si no cree que XML "haga" nada, tendrá que explicar cómo es que muchos sistemas (por ejemplo, embarcadero) usan XML como lenguaje de programación (malo). Es un lamentable abuso de XML, pero existe en la naturaleza, y ese es solo uno de los muchos ejemplos.
fuente