[pyar] Programación Orientada a Aspectos (POA)

Pablo Ziliani pablo en kultroom.com
Mie Sep 22 15:00:57 ART 2010


Claudio Freire wrote:
>
>
> 2010/9/22 Pablo Ziliani <pablo en kultroom.com <mailto:pablo en kultroom.com>>
>
>     Mariano Guerra wrote:
>
>         2010/9/22 Nicolas Sarubbi <nicosarubbi en gmail.com
>         <mailto:nicosarubbi en gmail.com>>:
>          
>
>             Hola!! estoy con ganas de aprender algo nuevo, para pasar
>             el rato, y
>             me interesó la programación orientada a aspectos, aunque
>             no tengo la
>             más mínima idea de lo que se trata. ¿Alguien conoce algo
>             al respecto?
>             ¿Vale la pena? ¿se usa? ¿Pueden recomendarme algún
>             tutorial, manual,
>             curso, libro, librería, framework, o lo que sea? Tanto
>             sobre POA en
>             sí, como su implementación en Python. De ser posible en
>             español (al
>             menos para un primer acercamiento).
>                
>
>         los aspectos se implementan en python generalmente con
>         decoradores:
>
>         http://www.juanjoconti.com.ar/2008/07/11/decoradores-en-python-i/
>          
>
>
>     No sé nada respecto de POA/AOP, pero por lo poco que leí creo que
>     el detalle de cómo implementarlo en Python es la menos relevante
>     de las dudas que se plantearon. El artículo de Juanjo es sobre
>     decoradores pero no tiene demasiada relación con lo que se planteó.
>
>
> No entiendo tu postura.

A mí me parece evidente y autoexplicativa, trataré de explicarla mejor, 
aunque la mayoría se aburra.

> Es cierto que AOP no es "decoradores", que AOP es una disciplina 
> mientras que los decoradores son una herramienta de python. Pero se 
> dijo: "los aspectos se implementan en python generalmente con 
> decoradores".

Justamente este es el punto.

El sistema legal argentino, el proceso de elaboración de postrecitos de 
dulce de leche y un sistema de logging también se pueden implementar al 
menos parcialmente con decoradores. Eso no describe las ventajas y 
conveniencia de la constitución, la repostería o el reporte de errores.

> La herramienta "decoradores" permite definir un gran porcentaje de los 
> comportamientos usualmente definidos con AOP, específicamente, cuando 
> querés agregar código antes/después de una invoación a un método.

Ok, una persona (yo) que no sabe qué es AOP no puede (sin la información 
que pedía el OP) saber si en alguna parte de la producción de código se 
cruza con la necesidad de resolver si agrega código antes o después de 
la invocación a un método. Es más, es imposible distinguir qué hay 
específico de AOP en el empleo de un decorador que lo diferencia de OOO 
o de cualquier otro paradigma o ausencia de tal.

> Otra herramienta usualmente utilizada es monkeypatching, cuando las 
> modificaciones al código sin aspectos no es sencillamente expresada 
> mediante decoradores.

De nuevo, la llave inglesa o y la pico de loro ajustan tuercas pero no 
explican el motor a explosión.

> Pero me parece que los decoradores ya son una respuesta valedera, que 
> no entiendo por qué considerás "la menos relevante de las dudas":
>
> ¿Se usa? pregunta Nicolás. Pues sí... mediante decoradores.
> Luego de eso Nicolás va, googlea decoradores en python, y obtiene una 
> tonelada o dos de ejemplos e información.

Sobre decoradores. Pasa dos o tres días estudiando decoradores y todavía 
no sabe si tiene que implementar un aspectos, join points, advices, 
pointcuts, weavings etc. Es más, ni siquiera sabe qué quieren decir esas 
palabras.

> No veo qué hay de irrelevante en la respuesta.

Hice mi mejor esfuerzo por explicarlo. Si no se entendió ya fue, esta 
discusión no es importante.



More information about the pyar mailing list