[Madrid-pm] Perl 5.10 y el MRO "C3"

Diego Kuperman diego en kuperman.com.ar
Lun Mar 3 10:49:14 PST 2008


Hola!,

Raúl Núñez de Arenas Coronado wrote:
> Muy buenas :)
> 
> Ahora que veo el subject, espero que no haga saltar ningún filtro
> antispam XDDDDD
> 
:-p

> En fin, al grano: he visto que a partir de 5.9.algo Perl soporta el
> Method Ordering Resolution "C3", que es el que usa también Python,
> Dylan, etc.
>
Hombre, la verdad es que hace ya tiempo que se utiliza C3 en perl 5.8.x 
(quizas inferiores tambien) via Class::C3.

Nosotros utilizamos mucho DBIx::Class que es uno de los primeros modulos 
que lo ha utilizado intensivamente.

> He estado buscando un poco sin mucho éxito acerca de los posibles
> problemas que pueda acarrear esto de "use mro 'c3';" en futuros scripts
> de Perl. Reconozcámoslo, el soporte de objetos de Perl es "tricky" y he
> visto más de una vez jerarquías reveladas en la implementación. O para
> ser más preciso, he visto jerarquías en las que la implementación asumía
> un orden concreto en la búsqueda de métodos.
> 
Bueno, los objetos de perl tienen pocas reglas, y eso ha permitido, 
ademas de genialidades, muchas cosas raras. Entre ellas los 
revolucionarios inside-out objects o que exista una clase que implementa 
C3 :-p

> Se me ha pasado por la cabeza que una forma de combatir el aburrimiento
> con Perl 5.10 va a ser coger algún módulo algo complejo de CPAN, cambiar
> el MRO a "c3" e intentar corregir los bugs chulos que aparezcan.
> 
> ¿Sabéis si hay algo publicado sobre el tema? ¿Alguien ha probado ya el
> MRO nuevo? Ahora en serio: ¿alguien *ha necesitado cambiar el MRO*?.
>
Leete la documentacion de Class::C3, creo que contesta estas preguntas:

http://search.cpan.org/~blblack/Class-C3-0.19/lib/Class/C3.pm

> No es por pinchar, pero en cuestión de objetos Perl está pidiendo a
> gritos una ruptura de compatibilidad hacia atrás. Por ejemplo, haciendo
> que la sintáxis estándar para clases y objetos sea la que propone Conway
> pero no implementada como un core-module, sino en el propio lenguaje.
> Igual hay que esperar a Perl 6 (u 8) para eso...
>
A mi no me gustaria que la rompa la verdad, dependo de cientos de 
modulos que esperan que no se rompa... Y como te decia antes, en general 
, sabiendo las pocas reglas, usos y costumbres es muy flexible (sobre 
todo aprovechandose de los varios modulos que añaden/cambian 
funcionalidad al modelo de objetos).

Supongo que puedes completar la lectura mirado algo de Moose:

http://search.cpan.org/dist/Moose/lib/Moose.pm

Un abrazo,
Diego



Más información sobre la lista de distribución Madrid-pm