Em retrospectiva, basear o XAML no XML é um erro ou uma boa abordagem?

16

XAML é essencialmente um subconjunto de XML. Um dos principais benefícios de basear o XAML no XML é que ele pode ser analisado com as ferramentas existentes. E pode, em grande medida, embora os valores de atributo (sintaticamente não triviais) permaneçam na forma de texto e exijam uma análise adicional.

Existem duas alternativas principais para descrever uma GUI em uma linguagem derivada de XML. Uma é fazer o que o WinForms fez e descrevê-lo em código real. Existem inúmeros problemas com isso, embora não seja totalmente sem vantagens (uma questão para comparar o XAML com essa abordagem ). A outra alternativa importante é projetar uma sintaxe completamente nova, especificamente projetada para a tarefa em questão. Isso geralmente é conhecido como um idioma específico do domínio .

Então, em retrospectiva, e como uma lição para as gerações futuras, foi uma boa idéia basear o XAML em XML ou teria sido melhor como uma linguagem específica de domínio projetada sob medida? Se projetássemos uma estrutura de interface do usuário ainda melhor, devemos escolher XML ou uma DSL personalizada?

Como é muito mais fácil pensar positivamente sobre o status quo, especialmente um que é bastante apreciado pela comunidade, darei alguns exemplos de razões pelas quais a criação no XML pode ser considerada um erro.

Basear uma linguagem no XML tem uma coisa a oferecer: é muito mais fácil analisar (o analisador principal já está disponível), requer muito, muito menos trabalho de design, e analisadores alternativos também são muito mais fáceis de escrever para desenvolvedores de terceiros.

Mas a linguagem resultante pode ser insatisfatória de várias maneiras. É bastante detalhado. Se você alterar o tipo de algo, precisará alterá-lo na tag de fechamento. Tem muito pouco apoio para comentários; é impossível comentar um atributo. Existem limitações colocadas no conteúdo dos atributos pelo XML. As extensões de marcação precisam ser construídas "em cima" da sintaxe XML, não integradas de maneira profunda e agradável a ela. E, meu favorito pessoal, se você definir algo por meio de um atributo, use uma sintaxe completamente diferente do que definir exatamente a mesma coisa que uma propriedade de conteúdo.

Também se diz que, como todo mundo conhece XML, o XAML requer menos aprendizado. A rigor, isso é verdade, mas aprender a sintaxe é uma pequena fração do tempo gasto aprendendo uma nova estrutura de interface do usuário; são os conceitos da estrutura que tornam a curva íngreme. Além disso, as idiossincrasias de uma linguagem baseada em XML podem realmente aumentar a cesta de "necessidades de aprendizado".

Essas desvantagens são superadas pela facilidade de analisar? A próxima estrutura legal deve continuar a tradição ou investir tempo para projetar uma DSL impressionante que não possa ser analisada pelas ferramentas existentes e cuja sintaxe precisa ser aprendida por todos?

PS Nem todo mundo confunde XAML e WPF , mas alguns o fazem. XAML é uma coisa parecida com XML. O WPF é a estrutura com suporte para ligações, temas, aceleração de hardware e muitas outras coisas interessantes.

Roman Starkov
fonte
3
Sim, ele pode ser analisado por um analisador XML, mas não de forma significativa / completa. Por exemplo, ele usa atributos de sequência para definir fontes de dados e mapeamentos de propriedades.
21978 Konrad Rudolph
5
O que você propõe como alternativa? Qualquer discussão sobre a adequação de uma tecnologia específica teria que abordar tecnologias de substituição adequadas.
Robert Harvey
2
XAML não é sem contrapartes, você sabe. XUL, Glade e QML são todos baseados na mesma idéia. Eu acho que você está destacando o XAML de forma injusta.
user16764
3
Eu acho que o maior benefício do XAML não é que ele possa ser analisado por analisadores XML. Em vez disso, o XAML é semelhante ao XML, e a maioria dos desenvolvedores já sabe trabalhar com XML, portanto, a curva de aprendizado é muito menos acentuada.
Juozas Kontvainis
2
@JuozasKontvainis Se por "trabalho" você quer dizer "analisá-lo em suas ferramentas", então sim. Se você quer dizer "escrever uma interface do usuário descrita por ela", a sintaxe familiar pode parecer útil, mas, realisticamente, você ainda precisa aprender o que colocar atributos internos (porque isso não é XML) e isso é de longe o mais difícil. coisa, na minha experiência pessoal. Aprender uma nova sintaxe, especialmente se for simples e bem projetada, é trivial, na minha opinião.
Roman Starkov

Respostas:

4

O único motivo convincente para usar XML é estabelecer um padrão de dados aberto. XAML é o mesmo idioma de exibição usado no Silverlight e no WPF; qualquer fornecedor pode usar o mesmo padrão de marcação para criar uma definição de exibição para sua própria plataforma e pode ser reutilizada no Silverlight ou no WPF.

Na indústria aeroespacial, temos salas de controle que, graças aos avanços da tecnologia de computadores, agora são razoavelmente flexíveis. No passado, todo o hardware era personalizado, único e muito caro; hoje, tudo é executado com PCs baratos, comumente disponíveis e disponíveis no mercado. Isso reduz bastante o bloqueio do fornecedor. No entanto, os widgets de exibição ainda são gravados usando o ActiveX, porque é assim que sempre é feito.

O ActiveX requer acesso às ferramentas da Microsoft que são obsoletas. Portanto, a Força Aérea e o Grupo de Instrumentação Inter-Range estão criando uma Linguagem de Marcação de Exibição de Dados, que é baseada em XML. Isso permitirá que os profissionais projetem displays usando a marcação XML, no editor de sua escolha. Soa familiar?

Ninguém argumenta que o XML não está isento de falhas. Mas é a melhor coisa disponível para o que foi projetado para fazer, até que algo melhor apareça.

Veja também
Por que o XML não suga

Robert Harvey
fonte
3
Você concorda que o mesmo raciocínio se aplica igualmente bem a coisas como, por exemplo, descrições gramaticais do YACC, TeX, regexes, Verilog e talvez até LISP? Criamos uma sintaxe especial para cada um deles. Eles se beneficiariam da mesma maneira que você lista no primeiro parágrafo. Então não se segue que o uso de XML para eles seria a coisa certa, porque o XML atende aos objetivos que você mencionou?
Roman Starkov
Somente XML é amplamente reconhecido como um meta-padrão de dados universal, a partir do qual você pode criar quantos padrões de dados individuais desejar. Para evitar turvar as águas, removi o primeiro parágrafo.
Robert Harvey
As expressões S nunca são usadas como padrão de metadados, talvez porque ninguém goste de todos esses parênteses bobos. A onipresença é o fator convincente aqui; todas as sintaxes alternativas mencionadas podem ser representadas em XML, se você quiser.
22412 Robert Harvey
2
Todos eles também podem ser representados em YAML e JSON (e vice-versa).
Timwi
2
Um grande problema que vejo ao longo deste argumento é que o XAML não é realmente um dado. Claro, poderia ser tratado apenas como um gráfico de objetos, mas esse tipo de pensamento é provavelmente o motivo pelo qual muitas pessoas não gostam dele e por que tem uma curva de aprendizado. "ei, vamos criar um gráfico de objetos, er, quero dizer uma interface de usuário". Não tenho ideia de como poderia ser melhorado, mas estou confiante de que poderia ser.
Earlz
2

Suas objeções ao XML não têm nada a ver com usá-lo como uma linguagem de descrição da GUI; são todas reclamações sobre o trabalho com sintaxe XML que se aplicam igualmente a qualquer forma de XML.

Parece que você simplesmente não gosta de XML.

Você está certo, pode não ser a escolha ideal para editar manualmente, mas para uma linguagem de descrição da GUI eu faria alguns contra-argumentos:

  1. As GUIs são gráficas e devem ser apresentadas graficamente. O formato do arquivo não é realmente tão importante, porque você realmente não deve editá-lo manualmente. (Baseado em texto é bom para o controle do código-fonte, mas a verbosidade não é um problema.)

  2. Além de o analisador estar disponível, o XML também é fácil de validar: você pode escrever um esquema DTD ou XML e, em seguida, usar ferramentas genéricas para informar se seu arquivo é legal. Isso será muito útil para uma linguagem de descrição da GUI. Fazer o mesmo em JSON ou YAML não é tão simples.

  3. Se você está realmente insatisfeito com a gravação direta de XAML, não há nada que o impeça de desenvolver um novo formato e compilá-lo no XAML. Por exemplo, você pode criar um mapeamento direto do JSON para o XAML, para ter a sintaxe mais leve do JSON (e a capacidade de comentar os atributos) e gerar o XAML ao criar seu aplicativo. As pessoas raramente escrevem HTML diretamente, mas o HTML ainda é um ótimo formato.

benzado
fonte
1
Eu gosto de XML; Só não gosto de escrever à mão. 1. Sim, eles deveriam, mas, infelizmente, a realidade é que o Visual Studio não pode realmente fazer isso. 3. Isso é ortogonal à discussão sobre se o XAML foi, em retrospectiva, uma má idéia. Sim, é possível, mas por que seria necessário se o XAML não era uma má escolha?
o que seus amigos estão dizendo sobre roman Starkov
1
O que quero dizer é que você está julgando inteiramente contra os critérios de escrevê-lo; suas preocupações também devem ser equilibradas com a validação e a interpretação. Uma DSL que fosse melhor para escrever quase certamente seria mais difícil de analisar. Mas uma etapa intermediária de compilação pode oferecer o melhor dos dois mundos.
00
0

Como essa pergunta é subjetiva, acho que é justo postar uma resposta baseada na minha preferência pessoal.

XML é difícil de ler. Por exemplo, abra este link e clique em "Amostra" para comparar XML e YAML lado a lado. Este último é claramente muito mais legível por humanos.

Se você deseja usar o XML para descrever uma GUI, é melhor garantir que você forneça ferramentas suficientes para que os humanos não precisem examinar o XML.

Claramente, o XPF falhou nesse sentido.

John Henckel
fonte