EMU-Code: Effective Mark-Up of Source Code

Literate Programming

Emu

La "Programación Letrada" (Literate Programming, LP) propuesta por D. E. Knuth es una metodología de desarrollo de programas que da preferencia a la documentación frente al código. Se propone realizar el desarrollo escribiendo un documento que describa el problema, la solución adoptada (y las no adoptadas, y porqué), la descomposición del programa en fragmentos más sencillos, la descripción de cada fragmento, y finalmente el código de cada fragmento.

El conjunto constituye un documento-código único. La organización del documento-código se elige de manera que resulte fácil de leer por parte de las personas interesadas, y en general no corresponde a la estructura propia del código fuente. A partir de este documento se puede generar:

  1. El documento impreso, con una buena tipografía y presentación, al igual que cualquier documento técnico, mediante la herramienta weave.
  2. El código del programa, compilable, mediante la herramienta tangle.

Las herramientas de LP se basan en una notación general para descripción de documentos, a la que añaden algunos elementos de notación especial para describir los fragmentos de código. La notación base de muchas de ellas es TeX/LaTeX.

Programación Letrada en XML

Existen diversas notaciones XML para descripción de documentos. Cualquiera de ellas puede servir como base para una herramienta de LP. Algunas herramientas de LP sobre XML ya existentes son:

Programación Letrada en EMU-Code

Las notaciones de LP se basan en una notación rica para la descripcion del documentos, pero no suelen describir los fragmentos de código de manera estructurada. Por otra parte, la documentación simple del código mediante comentarios usa toda la gramática del lenguaje de programación para describir la estructura del código, pero usa texto plano para los comentarios de documentación.

El desarrollo inicial de EMU-Code adopta una postura intermedia entre LP y la documentación simple del código mediante comentarios. El marcado EMU-Code posee elementos para describir tanto la estructura del código como la de la documentación. Por el momento la estructura global del conjunto documentación-código se ajusta más a la del código, pero se preve el desarrollo de herramientas de tipo weave y tangle que puedan componer tanto un documento impreso bien organizado como el código en notación convencional, sin incluir la documentación global.


Copyright © 2004, 2007 Manuel Collado: http://lml.ls.fi.upm.es/~mcollado