¿Programar en XML?
Me llegó por ahí la pregunta, ¿es válido decir “Yo programo en XML”? Mi respuesta es que es tan válido como decir “Yo programo en ASCII”. Posiblemente cierto, pero bobo e irrelevante. Los márgenes de un twiterazo son demasiado pequeños para una explicación completa, así que mejor la pongo por acá.
XML no es un lenguaje. Y no dije “lenguaje de programación”, dije lenguaje. XML es metalenguaje, un juego de reglas para definir la sintáxis de otros lenguajes. Usar XML para definir un lenguaje le da un aspecto parecido al de todos los demás lenguajes definidos con él, pero no dice nada acerca de la semántica del lenguaje, es decir, del qué significa. Los lenguajes que se definan usando XML pueden ser lenguajes de programación, lenguajes de marcado de textos, lenguajes de intercambio de datos. XML no tiene nada que decir respecto a eso[1].
Un ejemplo relacionado lo da la familia de lenguajes “parecidos a C”. Si bien nadie se ha tomado la molestia de escribir con cuidado una descripción de la sintáxis común, todos los programadores la conocemos de uno u otro modo. Cosas como “los identificadores están formados de alfanuméricos”, “las palabras reservadas son cadenas de letras”, “los bloques se delimitan con {}”, “0x marca el inicio de un número en hexadecimal”. Todas estas reglas (y muchas otras, por supuesto) son parte del metalenguaje (no escrito) que describe la sintáxis de esa familia. Gracias a ellas es que C y C++ y Perl y Java tienen ese aspecto similar, ese “no se qué” que hace que quien ha programado en uno no se sienta intimidado al ver otro. A pesar de que los lenguajes en sí son sumamente distintos unos de otros.
Igualmente, XML es un juego de relgas del estilo: “El documento se estructura en bloques anidados con nombre”, “Los nombres no pueden contener espacios”, “El final del bloque repite el nombre del mismo”, “mayorque y menorque son caracteres reservados”, etc, etc. Mucha información acerca del aspecto, nada acerca del significado.
Las relgas de sintáxis son, por supuesto, importantes. XML destila la experiencia de mucha gente encontrando reglas útiles para lenguajes cuyo propósito principal es enmarcar un texto. De este modo, alguien que necesita diseñar un nuevo lenguaje puede saltarse esa parte (que es más bien aburrida) y evitar errores y ambiguedades de las que es difícil darse cuenta. Pero no son el lenguaje, así como no lo es el apegarse a la convención de representar un espacio con el número 32 y la letra ‘A’ con el 65, como en ASCII.
1. En general, las reglas de sintáxis definidas por XML están enfocadas a lenguajes de marcado de textos, en los que se espera que casi todo el documento sean datos (el texto) y las instrucciones pocas y esparcidas por ahí. Debido a esto, los lenguajes de programación definidos usando estas reglas tienden a ser más bien feos. Eso no impide que sean definidos, aunque sí tiende a impedir que sean usados, por lo menos voluntariamente.
Abril 11th, 2008 a las 10:21 pm
Muy bonito texto, casi casi te invitaría a enviarlo a alguna revista no-muy-especializada. Muy importante, y muy bien escrito. Felicidades, Rodrigo, un puntito más a tu ya de por sí inflamentado ego.
Yo agregaría que, especialmente con metalenguajes completamente definidos (como XML, y a diferencia de los tipo-C, que son sencillamente un “se parece a estas reglas que pegaron y, por simplicidad, todo mundo sigue”) es que éste y muchos de ámbito similar (YAML, JSON, incluso
y jalando un poquito la definiciónData::Dumper) te permiten representar exactamente (con sus excepciones cuando entras a las partes más escleróticas… digo, esotéricas) el mismo contenido con sintáxiseses completamente diferentes.Abril 11th, 2008 a las 10:31 pm
ugh, redcloth/textilize/bluecloth/sea-lo-que-sea… Odio que mis textos
escritos correctamente, me cai de madres… acá tienes otra muestrase llenen de enrayados y demás marcados. ¿ bold ? /BAH/Abril 11th, 2008 a las 11:39 pm
Pero como yo odio tener que llenar de tags mi texto para que se vea semibonito, se amuelan.
Mayo 11th, 2008 a las 9:19 pm
Pues yo programo en XML, dibujo con el gzip; uso java y firefox indistintamente… y qué y qué.
El problema EMNHO no es que sea metalenguaje, sino que no es de programación. sino de definición de datos.