Elucubrando

Abril 11, 2008

¿Programar en XML?

Archivado en: — rodrigo @ 10:16 am

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.

Hay 4 Respuestas a “¿Programar en XML?”

  1. Gunnar Dice:

    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ón Data::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.

  2. Gunnar Dice:

    ugh, redcloth/textilize/bluecloth/sea-lo-que-sea… Odio que mis textos escritos correctamente, me cai de madres… acá tienes otra muestra se llenen de enrayados y demás marcados. ¿ bold ? /BAH/

  3. rodrigo Dice:

    Pero como yo odio tener que llenar de tags mi texto para que se vea semibonito, se amuelan.

  4. Ijon Tichy Dice:

    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.

Deje un comentario

Para evitar el spam, todos los comentarios deben esperar a ser aprobados. Prometo no censurar nada.

Además, cualquier comentario que diga 'poker' o 'casino', será borrado automáticamente sin aviso previo. No usen esas palabras aquí, por favor.

Gestionado con WordPress