Actualmente estoy experimentando con Ruby and Rails, y he accedido a algunas secciones en tutoriales y libros sobre metaprogramación. Muchos mencionan que es un componente esencial de Ruby, pero en realidad no entran en detalles. Es como si la metaprogramación fuera la última frontera para los programadores de Ruby. Procedente de un fondo .NET me cuesta entender por qué supuestamente es tan útil.¿Por qué es importante aprender sobre la metaprogramación y las clases propias en Ruby?
- ¿Qué ventajas se obtienen al usar la metaprogramación?
- ¿Qué es una clase de origen y cómo es diferente de un singleton?
- ¿En qué situaciones es común el uso de la metaprogramación?
- ¿Qué implicaciones éticas existen al usar código para modificar el comportamiento de otro código, especialmente el código que no es el suyo?
+1 Me gusta mucho el ejemplo 'attr_accessor', ya que muestra una ventaja importante de las sólidas capacidades de metaprogramación: la metaprogramación mantiene el lenguaje en sí mismo simple. 'attr_accessor' podría ser fácilmente una construcción de lenguaje separada en otro idioma (relacionado: propiedades en C#, etc.). En Ruby, es simplemente otro método. –
Buena respuesta. Si bien es cierto que la clase eigenclass y singleton significan lo mismo en Ruby, este último es ahora el término preferido, como lo indica la existencia de los métodos 'singleton_class',' singleton_methods' y 'define_singleton_method'. –