Fiquei me perguntando por que XML tem um L em seu nome.
Por si só, o XML não "faz" nada. É apenas um formato de armazenamento de dados, não um idioma! Idiomas "fazem" coisas.
A maneira como você faz com que o XML "faça" coisas, para transformá-lo em uma linguagem adequada, é adicionar xmlns
atributos ao seu elemento raiz. Só então ele diz ao seu ambiente o que é.
Um exemplo é o XHTML. Está ativo, possui links, hipertexto, estilos etc, todos acionados pelo xmlns
. Sem isso, um arquivo XHTML é apenas um monte de dados nos nós de marcação.
Então, por que o XML é chamado de linguagem? Não descreve nada, não interpreta, apenas é.
Edit: Talvez minha pergunta deveria ter sido mais ampla. Como a resposta atualmente é "porque o XML recebeu o nome de SGML, o nome de GML, etc.", a pergunta deveria ter sido: por que as linguagens de marcação (como XML) são chamadas de linguagens?
Ah, e WRT os votos próximos: não, não estou perguntando sobre o X. Estou perguntando sobre o L!
fonte
Respostas:
A resposta real é que XML tem um L no nome porque um cara chamado Raymond L. orie estava entre os designers da primeira "linguagem de marcação" da IBM na década de 1970. Os desenvolvedores tiveram que encontrar um nome para o idioma e escolheram o GML porque eram as iniciais dos três desenvolvedores (Goldfarb, Mosher e Lorie). Eles então criaram o backronym Generalized Markup Language .
Posteriormente, isso foi padronizado como SGML ( Standard Standard General Markup Language ) e, quando o XML foi criado, os desenvolvedores queriam reter o ML-postfix para indicar o relacionamento da família com o SGML, e adicionaram o X na frente porque acharam legal. (Mesmo que isso não faça sentido - o XML é uma meta linguagem que permite definir linguagens extensíveis, mas o XML não é realmente extensível.)
Quanto à sua segunda pergunta, se o XML pode legitimamente ser chamado de linguagem:
Qualquer formato textual estruturado (ou até binário) que pode ser processado computacionalmente pode ser chamado de linguagem. Um idioma não "faz" nada como tal, mas algum software pode processar entrada no idioma e "fazer" algo com base nele.
Você observa que XML é um "formato de armazenamento" que é verdadeiro, mas um formato de armazenamento de texto pode ser chamado de idioma; esses termos não são mutuamente exclusivos.
Linguagens de programação são um subconjunto de linguagens. Por exemplo, HTML e CSS são linguagens, mas não linguagens de programação , enquanto o JavaScript é uma linguagem de programação real. Dito isto, também não há uma definição formal de linguagem de programação e existe uma grande zona cinza de linguagens que poderia ser chamada de formatos de dados ou linguagens de programação, dependendo do seu ponto de vista.
Diante disso, o XML é claramente uma linguagem. apenas não é uma linguagem de programação - embora possa ser usada para definir linguagens de programação como XSLT.
Seu ponto de vista sobre namespaces é irrelevante. Os espaços para nome são um recurso opcional do XML e não alteram a semântica de um vocabulário XML. É apenas necessário desambiguar nomes de elementos se o formato puder conter vários vocabulários.
Edit: reinierpost apontou que você poderia ter significado algo diferente com a pergunta do que eu entendi. Talvez você quisesse dizer que vocabulários específicos como XHTML, RSS, XSLT etc. são linguagens, porque associam elementos e atributos a semânticas específicas, mas o próprio padrão XML não define nenhuma semântica para elementos e atributos específicos, portanto, não parece " linguagem real ".
Minha resposta para isso seria que XML não definir tanto sintaxe e semântica, ele só define-lo em um nível diferente. Por exemplo, define a sintaxe dos elementos e atributos e regras sobre como processá-los. XML é uma "metalinguagem" que ainda é um tipo de linguagem (assim como os metadados ainda são dados!). Como exemplo, o EBNF também é claramente uma linguagem, mas seu objetivo é definir a sintaxe de outras linguagens; portanto, também é uma metalinguagem.
fonte
Porque é uma linguagem. Uma linguagem de marcação , não uma linguagem de programação.
Observe que idiomas humanos naturais, como inglês e espanhol, também não "fazem" nada. De fato, tecnicamente C ++ e Java e similares não "fazem" nada até serem alimentados em um compilador e a saída ser executada. Fazer coisas e ser uma linguagem são amplamente ortogonais entre si.
fonte
</nitpick>
Enfim, boa resposta!Seja um conjunto finito não vazio de símbolos, chamado alfabeto . Então Σ * é o conjunto infinito contável de palavras finitas que podem ser formadas concatenando zero ou mais símbolos de Σ. Qualquer subconjunto bem definido L ⊆ Σ * é um idioma .
Vamos aplicar isso ao XML. Seu alfabeto é o conjunto de caracteres Unicode U , que não é vazio e é finito. Nem toda concatenação de zero ou mais caracteres Unicode é um documento XML bem formado, por exemplo, a sequência
não é claramente. O subconjunto XML ⊂ U * que forma documentos XML bem formados é decidível (ou "recursivo"). Existe uma máquina (algoritmo ou programa de computador) que recebe como entrada qualquer palavra w ∈ U * e após um período finito de tempo, gera 1 se w ∈ XML e 0 caso contrário. Esse algoritmo é uma sub-rotina de qualquer software de processamento XML. Nem todos os idiomas são decidíveis. Por exemplo, o conjunto de programas C válidos que terminam em um período finito de tempo não é (isso é conhecido como o problema de interrupção) Quando se projeta um novo idioma, uma decisão importante a ser tomada é se deve ser o mais poderoso possível ou se a expressividade seria melhor restringida em favor da decidibilidade.
Alguns idiomas podem ser definidos por meio de uma gramática que se diz produzir o idioma. Uma gramática consiste em
Qualquer palavra que consiste exclusivamente em literais e pode ser derivada começando com o símbolo inicial e aplicando as regras especificadas pertence ao idioma produzido pela gramática.
Dependendo de como as regras elaboradas são permitidas em sua gramática, são necessárias máquinas sofisticadas para provar que uma determinada palavra pode realmente ser produzida pela gramática. O exemplo dado acima é uma gramática regular , que é a mais simples e menos poderosa. A próxima classe poderosa de gramáticas é chamada sem contexto . Essas gramáticas também são muito simples de verificar. XML (a menos que eu esteja ignorando algum recurso obscuro do qual não conheço) pode ser descrito por uma gramática livre de contexto. A classificação das gramáticas forma a hierarquia de Chomsky das gramáticas (e, portanto, das línguas). Todo idioma que pode ser descrito por uma gramática é pelo menos semi-decidível(ou "recursivamente enumerável"). Ou seja, existe uma máquina que, dada uma palavra que realmente pertence ao idioma, obtém uma prova de que ela pode ser produzida pela gramática dentro de um tempo finito e nunca produz uma prova errada. Essa máquina é chamada de verificador . Observe que a máquina nunca pode parar quando recebe uma palavra que realmente não pertence ao idioma. Claramente, queremos que nossas linguagens de programação sejam descritas por gramáticas menos poderosas, para o benefício de poder rejeitar programas inválidos dentro de um tempo finito.
Esquemas são uma adição ao XML que permite refinar o conjunto de documentos bem formados. Um documento bem formado que segue um determinado esquema é chamado válido de acordo com esse esquema. Por exemplo, a sequência
é um documento XML bem formado, mas não é um documento XHTML válido. Existem esquemas para XHTML , SVG , XSLT e outros. A validação de esquema também pode ser feita por um algoritmo que é garantido para parar após uma quantidade finita de etapas para cada entrada. Esse programa é chamado de validador ou analisador de validação. Esquemas são definidos pelas chamadas linguagens de definição de scema , que são uma maneira de definir formalmente gramáticas. XSD é a linguagem oficial de definição de esquema para XML e é, ela própria, baseada em XML. O RELAX NG é uma alternativa mais elegante, muito mais simples e um pouco menos poderosa ao XSD.
Como você pode definir seus próprios esquemas, o XML é chamado de linguagem extensível , que é a origem do "X" em "XML".
Você pode definir um conjunto de regras que fornece aos documentos XML uma interpretação como descrições de programas de computador. O XSLT, mencionado anteriormente, é um exemplo dessa linguagem de programação criada com XML. Em geral, você pode serializar a árvore de sintaxe abstrata de quase qualquer linguagem de programação naturalmente para XML, se é isso que você deseja.
fonte
Na ciência da computação, a linguagem formal é apenas um conjunto de strings, geralmente infinitas e frequentemente descritas usando regras (duas versões comuns dessas regras são expressões regulares e gramáticas formais ).
Observe que isso significa que tudo o que uma linguagem precisa é de sintaxe , a linguagem não precisa descrever o que significa cada sequência válida (isso é chamado de semântica ).
Agora, isso significa que linguagens de programação são linguagens formais que também possuem semântica, o que descreve algumas computações. E, por exemplo, XHTML é uma linguagem formal, cuja semântica descreve (de maneira grosseira e informal) a aparência e o comportamento de um documento de hipertexto.
XML ainda é uma linguagem, embora não tenha semântica propriamente dita (mas muitas linguagens derivadas de XML possuem, como XHTML e XAML).
Tecnicamente, os formatos binários também são linguagens, mas não são assim chamados. O termo "idioma" é reservado para formatos legíveis por humanos.
fonte
Uma linguagem é um método de transmissão de informações.
Uma linguagem de programação é um método de transmitir algoritmos.
Uma linguagem de marcação como XML é uma linguagem para transmitir dados.
fonte
XML é uma meta-linguagem. Você o usa para definir idiomas específicos. As línguas nunca fazem nada, elas apenas nos permitem expressar as coisas. Além disso, não é verdade que XML seja uma "linguagem de armazenamento". Exatamente o oposto, de fato. Você pode armazenar documentos XML como quiser. XML é melhor pensado como uma linguagem de transferência. PS. Se você não acha que XML "faz" nada, precisará explicar como muitos sistemas (por exemplo, jetty) usam XML como uma (ruim) linguagem de programação. É um abuso lamentável de XML, mas existe na natureza, e esse é apenas um dos muitos exemplos.
fonte