martes, 15 de febrero de 2011

YAML. Un lenguaje estructurado pero no de marcado

YAML, cuyas iniciales dicen YAML Ain't Markage Language, es un lenguaje que me ha sorprendido. Lo descubrí a raíz de un artículo en el que comentaban su uso en la introducción de estructuras de datos por personas que no estaban relacionadas con el desarrollo software.
Y es que es cierto que estamos muy acostumbrados a usar lenguaje XML o derivados, del que .NET tiene muchas librerias, o incluso JSON para otras plataformas.
Xml no está pensado realmente para ser leido por una persona. Aunque para ficheros pequeños y con no demasiadas estructuras anidadas, podamos apañarnos bien.

YAML es un lenguaje estructurado, pero sin etiquetas. Lo cual lo hace extremadamente fácil de leer para una persona. Definido a partir de una serie de reglas muy símples que hace que escribir un documento con este formato sea realmente fácil.

Las andaduras de este lenguaje comenzaron en Mayo de 2001 por Clark Evans. Y actualmente está en la versión de especificación 1.2. La página de referencia la podeis encontrar aquí. Y que precisamente tiene todo su contenido escrito con estructura YAML.

Una pequeña lista de sus características son:

  • YAML tiene un formato de lectura sencillo para las personas.
  • YAML es conciso y compacto.
  • YAML es expresivo y extensible.
  • YAML no es un lenguaje de marcado!

Si esta lista la quisiera expresar con XML necesitaría algo así:

<ul>
   <li>YAML tiene un formato de lectura sencillo para las personas.</li>
   <li>YAML es conciso y compacto.</li>
   <li>YAML es expresivo y extensible.</li>
   <li>YAML no es un lenguaje de marcado!</li>
<ul>

En YAML se definiría de la siguiente manera:

- YAML tiene un formato de lectura sencillo para las personas.
- YAML es conciso y compacto.
- YAML es expresivo y extensible.
- YAML no es un lenguaje de marcado!

Otros ejemplos de estructuras que pueden hacerse con YAML:

Diccionarios:

---
Clave 1: Valor de la clave 1.
Clave 2: Valor de la clave 2.
Clave 3: Valor de la clave 3.

Listas de diccionarios anidados:

---
- Clave 1: Valor de la clave 1.
- Clave 2:
     Subclave 1: Valor de la Clave 2, Subclave 1.
     Subclave 2: Valor de la Clave 2, Subclave 2.

Mapas:

---
Seat Leon: {Color: Rojo, Carburante: Diesel, Velocidad Máxima: 185 Km/h, Kilometros: 25000}
Nissan Micra: {Color: Blanco, Carburante: Hibrido, Velocidad Máxima: 172 Km/h, Kilometros: 12000}
 

Existen implementaciones de este formato en muchos lenguajes, incluyendo .NET, el cual dispone de una implementación en Codeplex y que acompaña con un minitutorial de Yaml en 5 minutos.

No hay comentarios:

Publicar un comentario