31 de Enero, 2006

YAML Ain't Markup Language

Si no me equivoco la primera vez que supe de YAML, o YAML no es un lenguaje de marcado, fue en la bitácora de JJ en barrapunto, donde comentaba que había publicado un módulo en CPAN. Curioso que es uno, fui a echar un vistazo:

YAML™ (rhymes with "camel") is a human-friendly, cross language, Unicode based data serialization language designed around the common native data structures of agile programming languages. It is broadly useful for programming needs ranging from configuration files to Internet messaging to object persistence to data auditing.

¿A qué se parece esto? Pues no a XML, aunque pueda servir para lo mismo ;).

Por ejemplo, una factura sacada del sitio oficial:

--- !clarkevans.com/^invoice
invoice: 34843
date   : 2001-01-23
bill-to: &id001
    given  : Chris
    family : Dumars
    address:
        lines: |
            458 Walkman Dr.
            Suite #292
        city    : Royal Oak
        state   : MI
        postal  : 48046
ship-to: *id001
product:
    - sku         : BL394D
      quantity    : 4
      description : Basketball
      price       : 450.00
    - sku         : BL4438H
      quantity    : 1
      description : Super Hoop
      price       : 2392.00
tax  : 251.42
total: 4443.52
comments: >
    Late afternoon is best.
    Backup contact is Nancy
    Billsmer @ 338-4338.

Aunque los autores ahora intenten hacernos creer que no es un lenguaje de marcado, sino un lenguaje para serialización (guardar un objeto en un medio de almacenamiento, distinto de memoria se entiende :P), en realidad sí se podría considerar un lenguaje de marcado ligero: tiene una sintaxis sencilla, fácil de elaborar por el ser humano con un editor de texto plano (hay una buena lista de lenguajes de marcado ligero). Y lo más sexy es que se puede usar en lugar de XML.

Leyendo ayer a Mark Mayo, que nos dice que YAML es su nuevo 'mejor amigo', me he acordado que estuve trabajando con él (YAML, no Mayo :P), y que hay muy buenas librerías para manipular estas estructuras en muchos lenguaje de programación (por ejemplo: Ruby, Python, PHP, OCaml, Perl, Java y Javascript; enlazados en la web oficial).

Además Mark da la clave:

It's not as language agnostic as XML, of course, but hot damn it's a pleasure to work with by comparison! YAML. I love it! :)

En efecto: no es la panacea para almacenar los datos de nuestros programas, ni para implementar protocolos de comunicación, ni para intercambiar datos entre aplicaciones; pero comparado con XML... You love it!

Anotación por Juan J. Martínez, clasificada en: yaml, xml.

Los comentarios están cerrados: los comentarios se cierran automáticamente una vez pasados 30 días. Si quieres comentar algo acerca de la anotación, puedes hacerlo por e-mail.

Algunas anotaciones relacionadas: