En retrospectiva, ¿basar XAML en XML es un error o un buen enfoque?

16

XAML es esencialmente un subconjunto de XML. Se dice que uno de los principales beneficios de basar XAML en XML es que se puede analizar con las herramientas existentes. Y puede, en gran medida, aunque los valores de los atributos (sintácticamente no triviales) permanecerán en forma de texto y requerirán un análisis más detallado.

Hay dos alternativas principales para describir una GUI en un lenguaje derivado de XML. Una es hacer lo que hizo WinForms y describirlo en código real. Existen numerosos problemas con esto, aunque no es completamente libre de ventajas (una pregunta para comparar XAML con este enfoque ). La otra alternativa importante es diseñar una sintaxis completamente nueva diseñada específicamente para la tarea en cuestión. Esto se conoce generalmente como un lenguaje de dominio específico .

Entonces, en retrospectiva, y como una lección para las generaciones futuras, ¿fue una buena idea basar XAML en XML, o hubiera sido mejor como un lenguaje específico de dominio diseñado a medida? Si estuviéramos diseñando un marco de interfaz de usuario aún mejor, ¿deberíamos elegir XML o un DSL personalizado?

Dado que es mucho más fácil pensar positivamente sobre el status quo, especialmente uno que le gusta bastante a la comunidad, daré algunos ejemplos de razones por las cuales construir sobre XML podría considerarse un error.

Basar un lenguaje en XML tiene algo que hacer: es mucho más fácil de analizar (el analizador principal ya está disponible), requiere mucho, mucho menos trabajo de diseño, y los analizadores alternativos también son mucho más fáciles de escribir para desarrolladores de terceros.

Pero el lenguaje resultante puede ser insatisfactorio de varias maneras. Es más bien detallado. Si cambia el tipo de algo, debe cambiarlo en la etiqueta de cierre. Tiene muy poco apoyo para comentarios; Es imposible comentar un atributo. Existen limitaciones en el contenido de los atributos por XML. Las extensiones de marcado deben construirse "encima" de la sintaxis XML, no integrarse de manera profunda y agradable en ella. Y, mi favorito personal, si configura algo a través de un atributo, usa una sintaxis completamente diferente que si configura exactamente lo mismo que una propiedad de contenido.

También se dice que dado que todos conocen XML, XAML requiere menos aprendizaje. Estrictamente hablando, esto es cierto, pero aprender la sintaxis es una pequeña fracción del tiempo dedicado a aprender un nuevo marco de interfaz de usuario; Son los conceptos del marco los que hacen que la curva sea empinada. Además, las idiosincrasias de un lenguaje basado en XML podrían agregarse a la cesta de "necesidades de aprendizaje".

¿Son estas desventajas compensadas por la facilidad de análisis? ¿Debería el próximo marco genial continuar con la tradición, o invertir el tiempo para diseñar un DSL increíble que las herramientas existentes no puedan analizar y cuya sintaxis deba ser aprendida por todos?

PD: No todos confunden XAML y WPF , pero algunos sí. XAML es una cosa similar a XML. WPF es el marco con soporte para enlaces, temas, aceleración de hardware y muchas otras cosas interesantes.

Roman Starkov
fuente
3
Sí, puede ser analizado por un analizador XML, pero no de manera significativa / completa. Por ejemplo, utiliza atributos de cadena para definir orígenes de datos y asignaciones de propiedades.
Konrad Rudolph el
55
¿Qué propones como alternativa? Cualquier discusión sobre la idoneidad de una tecnología en particular tendría que abordar tecnologías de reemplazo adecuadas.
Robert Harvey
2
XAML no está exento de contrapartes, ya sabes. XUL, Glade y QML se basan en la misma idea. Creo que estás cantando XAML injustamente.
user16764
3
Creo que el mayor beneficio de XAML no es que pueda ser analizado por analizadores XML. Es más bien que XAML es similar a XML, y la mayoría de los desarrolladores ya saben cómo trabajar con XML, por lo que la curva de aprendizaje es mucho menos pronunciada.
Juozas Kontvainis
2
@JuozasKontvainis Si por "trabajo" te refieres a "analizarlo en sus herramientas", entonces sí. Si quiere decir "escribir una interfaz de usuario descrita por él", entonces la sintaxis familiar puede parecer útil, pero de manera realista, aún necesita aprender qué poner dentro de los atributos (porque eso no es XML), y eso es, con mucho, el más difícil cosa, en mi experiencia personal. Aprender una nueva sintaxis, especialmente si es simple y bien diseñada, es trivial, en mi opinión.
Roman Starkov

Respuestas:

4

La única razón convincente para usar XML es establecer un estándar de datos abierto. XAML es el mismo lenguaje de visualización utilizado en Silverlight y WPF; cualquier proveedor puede usar el mismo estándar de marcado para crear una definición de pantalla para su propia plataforma, y ​​puede reutilizarse en Silverlight o WPF.

En la industria aeroespacial, tenemos salas de control que, gracias a los avances de la tecnología informática, ahora son razonablemente flexibles. En el pasado, todo el hardware era personalizado, único y muy costoso; hoy todo funciona con PC de bajo costo, comúnmente disponibles y disponibles en el mercado. Esto reduce en gran medida el bloqueo del proveedor. Sin embargo, los widgets de visualización todavía se escriben usando ActiveX, porque así es como siempre se ha hecho.

ActiveX requiere acceso a las herramientas de Microsoft que, bueno, son obsoletas. Por lo tanto, la Fuerza Aérea y el Grupo de Instrumentación Inter-Rango están creando un Lenguaje de Marcado de Visualización de Datos, que está basado en XML. Esto permitirá a los profesionales diseñar pantallas usando marcado XML, en el editor de su elección. ¿Suena familiar?

Nadie argumenta que XML no está exento de fallas. Pero es lo mejor disponible para lo que fue diseñado para hacer, hasta que aparezca algo mejor.

Vea también por
qué XML no es malo

Robert Harvey
fuente
3
¿Estaría de acuerdo en que el mismo razonamiento se aplica igualmente bien a cosas como, por ejemplo, descripciones gramaticales de YACC, TeX, expresiones regulares, Verilog y tal vez incluso LISP? Se nos ocurrió una sintaxis especial para cada uno de estos. Se beneficiarían de la misma manera que usted enumera en el primer párrafo. Entonces, ¿no se deduce que usar XML para ellos sería lo correcto, porque XML cumple con los objetivos que mencionaste?
Roman Starkov
Solo XML es ampliamente reconocido como un metaestándar de datos universal, desde el cual puede crear tantos estándares de datos individuales como desee. Para evitar enturbiar las aguas, he eliminado el primer párrafo.
Robert Harvey
Las expresiones S nunca se entendieron como un estándar de metadatos, tal vez porque a nadie le gustan todos esos paréntesis tontos. La ubicuidad es el factor convincente aquí; todas esas sintaxis alternativas que mencionó pueden representarse en XML, si así lo desea.
Robert Harvey
2
Todos ellos también pueden representarse en YAML y JSON (y viceversa).
Timwi
2
Un gran problema que veo a lo largo de este argumento es que XAML no es realmente datos. Claro, podría tratarse solo como un gráfico de objeto, pero este tipo de pensamiento es probablemente la razón por la cual a muchas personas no les gusta y por qué tiene una curva de aprendizaje. "oye, vamos a hacer un gráfico de objetos, er, me refiero a una interfaz de usuario". No tengo idea de cómo podría mejorarse, pero estoy seguro de que podría ser.
Earlz
2

Sus objeciones a XML no tienen nada que ver con usarlo como lenguaje de descripción de GUI; todas son quejas sobre trabajar con sintaxis XML que se aplican por igual a cualquier forma de XML.

Parece que simplemente no te gusta XML.

Tienes razón, puede que no sea la opción óptima para editar a mano, pero para un lenguaje de descripción de GUI haría algunos contraargumentos:

  1. (En mi humilde opinión), las GUI son gráficas y deben presentarse gráficamente. El formato de archivo no es realmente tan importante, porque realmente no deberías editarlo a mano. (Basado en texto es bueno por el bien del control de código fuente, pero la verbosidad no es un problema).

  2. Además del analizador disponible, XML también es fácil de validar: puede escribir un DTD o un Esquema XML y luego usar herramientas genéricas para decirle si su archivo es legal. Esto será muy útil para un lenguaje de descripción GUI. Hacer lo mismo en JSON o YAML no es tan sencillo.

  3. Si no está contento con escribir XAML directamente, no hay nada que le impida desarrollar un nuevo formato y luego compilarlo en XAML. Por ejemplo, podría crear una asignación directa de JSON a XAML, para que pueda tener la sintaxis más clara de JSON (y la capacidad de comentar los atributos), y luego generar el XAML cuando construya su aplicación. La gente rara vez escribe HTML directamente, pero HTML sigue siendo un gran formato.

benzado
fuente
1
Me gusta XML; Simplemente no me gusta escribirlo a mano. 1. Sí, deberían hacerlo, pero lamentablemente la realidad es que Visual Studio realmente no puede lograrlo. 3. Esto es ortogonal a la discusión sobre si XAML fue, en retrospectiva, una mala idea. Sí, uno podría, pero ¿por qué necesitaría si XAML no fuera una mala elección?
Roman Starkov
1
Mi punto es que lo estás juzgando completamente contra el criterio de escribirlo; sus inquietudes deben equilibrarse con validarlas e interpretarlas también. Un DSL que fuera más agradable de escribir seguramente sería más difícil de analizar. Pero un paso intermedio de compilación podría darle lo mejor de ambos mundos.
benzado
0

Esta pregunta es subjetiva, por lo que creo que es justo publicar una respuesta que se base en mi preferencia personal.

XML es difícil de leer. Por ejemplo, abra este enlace y haga clic en "Muestra" para comparar XML y YAML lado a lado. Este último es claramente mucho más legible para los humanos.

Si desea utilizar XML para describir una GUI, es mejor que se asegure de proporcionar herramientas suficientes para que los humanos no tengan que mirar el XML.

Claramente XPF ha fallado en ese sentido.

John Henckel
fuente