Qué es la metaprogramación

La metaprogramación de la forma más sencilla se puede definir cómo: «programar un programa que genere o modifique otros programas o a si mismos» el ejemplo más común de la metaprogramación es un compilador que te permite convertir un programa escrito en un lenguaje de alto nivel en uno con lenguaje de bajo nivel, lenguaje máquina o ensamblador.

Pero la metaprogramación tiene otras aplicaciones más potentes, aunque algunos creen que sólo es útil para los programadores flojos que no quieren escribir programas, es cierto te puede ahorrar mucho tiempo, un ejemplo sencillo de metaprogramación que encontré en la wikipedia es el siguiente:

#!/bin/bash
# metaprogram
echo \'#!/bin/bash\' >program
for ((I=1; I<=992; I++)); do
    echo "echo $I" >>program
done
chmod +x program

Este script genera un nuevo programa que imprime por pantalla los números 1 a 992. Esto es sólo una muestra de cómo usar código para escribir más código, no la forma más eficiente de imprimir una lista de números. En cualquier caso, un buen programador puede escribir y ejecutar este metaprogama en apenas un par de minutos, y habrá generado exactamente 1000 líneas de código en esa cantidad de tiempo.

Otro ejemplo interesante es LibSH es un ejemplo de metaprogramación. Escribes shaders en C++, y un motor basado en plantillas y sobrecarga de operadores traduce (en tiempo de ejecución) ese código a un shader para la tarjeta de vídeo.

Escríbe un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

3 comentarios en “Qué es la metaprogramación”

  1. tu segundo ejemplo solo se usa al teclear y traducir o a caso es lo que busco , como en la tv que traduce programas al mismo tiempo que emiten el programa , veras quiero saber si existe un programa que me pueda traducir una pelicul para convertirla a dvd , tengo acceso a peliculas en ingles y quiero agregar el subtitulo mediante un programa que genere el subtitulo . no como el subtitule workshop , ue me permite traducir yo mismo la pelicula , si sabes de algo agradeceria el comentario