Intercession

1 view
Skip to first unread message

Nicolas Passerini

unread,
Oct 2, 2014, 11:38:01 AM10/2/14
to paco-d...@googlegroups.com
Hace un tiempo en Obj3 decimos intercession... pero es algo que me da dudas.

Si buscan intercession en google van a encontrar algo muy simpático relacionado con rezar pidiendo por un tercero... agregando "reflection" a la búsqueda ahí sí aparecen los dos primeros resultados más razonables: https://www.google.com.ar/search?q=intercession&oq=intercession&aqs=chrome..69i57j0l5.1801j0j7&sourceid=chrome&es_sm=0&ie=UTF-8#q=intercession+reflection

Aún así ninguno de ellos me lleva a algo concluyente.

Entonces pregunto, ¿algiuen sabe la fuente para el concepto de intercession para tener una definición más precisa?

Javier Fernandes

unread,
Oct 2, 2014, 11:49:59 AM10/2/14
to Nicolas Passerini, paco-d...@googlegroups.com
De tu amigo Gilad, Paper de Mirrors

  1. Intercession. The ability to modify the semantics of the underlying programming language from within the language itself (the term intercession is sometimes used in a broader sense in parts of the literature, but we adopt the narrower def- inition of intercession given here, based on [18]).


    A su vez,


    [18] Gregor Kiczales, Jim des Rivieres and Daniel G. Bobrow. The Art of the Metaobject Protocol. MIT Press, Cambridge, Massachu- setts, 1991.


     

     


--
Has recibido este mensaje porque estás suscrito al grupo "paco-docentes" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a paco-docente...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

Demian Alonso

unread,
Oct 2, 2014, 11:52:54 AM10/2/14
to Nicolas Passerini, paco-d...@googlegroups.com
Creo que en el libro The Art Of The Metaobject Protocol tenía una definición de Intercession, cuando esté con un rato libre en casa me fijo.

Pero entiendo que viene por el lado de que es la parte de la API de metaprogramación/self modification que te permite cambiar las cosas core del lenguaje, como por ejemplo, tener distintas formas de resolver la herencia y tener dos formas distintas dentro del mismo lenguaje (creo que ese era el ejemplo que daba en el libro).



2014-10-02 12:37 GMT-03:00 Nicolas Passerini <npass...@gmail.com>:

--
Has recibido este mensaje porque estás suscrito al grupo "paco-docentes" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a paco-docente...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.



--
Demian P. Alonso (demian...@gmail.com)
-- A conclusion is simply the place where someone got tired of thinking.

Franco Bulgarelli

unread,
Oct 11, 2014, 9:27:37 AM10/11/14
to Demian Alonso, Nicolas Passerini, paco-d...@googlegroups.com
Hola!

No conocía el término. ¿Cuál sería la diferencia entre intercession y self-modification?  

Javier Fernandes

unread,
Oct 11, 2014, 10:56:49 AM10/11/14
to Franco Bulgarelli, Demian Alonso, Nicolas Passerini, paco-d...@googlegroups.com
Así rápido, self-modification se refiere a intercambiar objetos del metamodelo. Por ejemplo sacar un field de una clase, o bien agregar un método.

Intercession sería hacer cambios en cómo funciona ese metamodelo.

Ojo, es dificil de ver explícito, porque depende del MOP.
Otra forma de verlo es que en el primero (selfm) cambias la semántica de tu programa, pero no la del metamodelo (no invetás un nuevo concepto fuera de los que existen: clase, metido, field, etc).
Con intercession cambiás algo de la semántica del metamodelo.

El ejemplo más concreto de esto es una gilada: usás el method_missing o doesNotUnderstand para redefinir el dispatching the métodos de objetos tradicional y hacer alguna locura.

Sería bueno tener otros ejemplos.
Yo creo que con Macros de Scala se puede llegar a hacer intercession fácilmente. Incluso sin modificar las clases del MOP.
Las active annotations de xtend también podrían ser.
Por ejemplo el @Delegate introduce delegación automática que es un concepto que no está en Java.

Lo malo es que no se reifican esos conceptos en la API de metaprogramación. Con lo cual esto va de la mano de hacer una api de mirrors, si querés reflejar todas las modificaciones que haces con intercession.

Saludines

Franco Bulgarelli

unread,
Oct 11, 2014, 11:22:28 AM10/11/14
to paco-d...@googlegroups.com
Clarísimo, gracias!

Javier Fernandes

unread,
Oct 11, 2014, 11:28:36 AM10/11/14
to Franco Bulgarelli, paco-d...@googlegroups.com
Sería interesante hacer una materia sólo de metraprogramación y mostrar locuras como las macros. O bien la homoiconicidad de LISP y lenguajes derivados (code as data, data as code).
Incluso metaprogramación en prolog (que en un momento teníamos ganas de experimentar con Nico), o en funcional.

Bah.. no se si una materia completa. Tal vez una charla.
Charla ? ... la uqbarconf tiene charlas !!!

Pero bueno: nadie tiene huevos acá para armar una charla de metaprogramación para la UqbarConf.

throw rock;




Pablo de Haro

unread,
Oct 11, 2014, 2:07:36 PM10/11/14
to Javier Fernandes, Franco Bulgarelli, paco-d...@googlegroups.com
try {
  throw rock;
} finally {
  hide(hand);
}


Pablo de Haro

Franco Bulgarelli

unread,
Oct 11, 2014, 8:05:53 PM10/11/14
to paco-d...@googlegroups.com

Nicolas Passerini

unread,
Oct 16, 2014, 12:05:36 AM10/16/14
to Javier Fernandes, Franco Bulgarelli, paco-d...@googlegroups.com

2014-10-11 12:28 GMT-03:00 Javier Fernandes <javier.f...@gmail.com>:
nadie tiene huevos acá para armar una charla de metaprogramación para la UqbarConf.

¿Y qué tal un tutorial? ¿Vale la pena?
Reply all
Reply to author
Forward
0 new messages