Qué Es La Metaprogramacion
timer 6 Min.
remove_red_eye 7876
calendar_today 01/05/18
La metaprogramación o metaprogramming como decimos en inglés, es uno de los términos más
desafiantes que un desarrollador puede encontrar, en resumen, solemos pensar en
metaprogramación como la habilidad de usar código para generar código, el problema es que ir
de, con metaprogramación puedo generar código a efectivamente aprovechar la implementación de
metaprogramación de un lenguaje, hay un largo camino.
PARA QUÉ USAMOS METAPROGRAMACIÓN
Primero tratemos de entender por qué el concepto es importante, a final de cuentas, es probable que
hasta ahora hayas sobrevivido sin una rutina de código que genere más código, a final de cuentas,
ese código también lo podemos escribir nosotros, ¿cierto?
id title durationl
1 Curso de Ruby 1500
2 Curso de Laravel 200
3 Curso de JavaScript 900
Considera que tenemos una tabla Cursos, que tiene un título y una duración, en versiones anteriores
de Rails, era posible usar un método como el siguiente para buscar elementos en la tabla:
def search_courses
Course.find_by_title_and_duration(‘Ruby’,100)
end
La pregunta es, de dónde salen dichos métodos, es imposible que los desarrolladores del framework
pudieran definir un método para cada combinación de campos posible en un programa. La
respuesta es metaprogramación.
Ahora, considera el siguiente programa de Ruby:
class HTML
def self.method_missing(nomb_method, *args, &block)
tag(nomb_method,*args,&block)
end
def [Link](tag_name,*args,&block)
"<#{tag_name}>#{[Link]} #{yield if
block_given?}</#{tag_name}>"
end
end
El mismo se utiliza de la siguiente manera:
html = [Link] do
[Link] do
HTML.h1 "Titulo de la pagina"
end +
[Link] do
HTML.p "Hola a todos"
end
end
puts html
aprogramación consiste en escribir programas que escriben o manipulan otros programas
(o a sí mismos) como datos, o que hacen en tiempo de compilación parte del trabajo que,
de otra forma, se haría en tiempo de ejecución. Esto permite al programador ahorrar
tiempo en la producción de código.