Se implementó. Para ello modificamos el header de todos los objetos y le
agregamos una word para que referencie al objeto que reificaba el method
lookup. Por default utilizaba el method lookup definido en la clase del
objeto que por default era el method lookup que todos conocemos :-)
Había algunos objetos donde esto no se podía hacer como los small integer
por no tener "header" y otros detalles de implementación que no recuerdo,
pero andaba bastante bien.


2010/8/2 [email protected] <[email protected]>

> Hola Hernán, una pregunta, esto lo implementaron o es un trabajo
> teórico? (de cualquier manera me parece muy interesante)
>
> Diego
>
> On Aug 2, 7:36 am, Hernan Wilkinson <[email protected]>
> wrote:
> > Alejandra De Bonnis es su tesis de licenciatura reifico el method lookup
> de
> > tal manera que cada objeto podía definir cómo buscar un método a partir
> de
> > un mensaje. De esta manera teníamos en el mismo ambiente prototipos y
> clases
> > por ejemplo. Haciendo esto usar dnu o method wrappers, etc. dejó de tener
> > sentido... imaginense, cada OBJETO puede definir que hacer cuando recibe
> un
> > mensaje (delegarlo, buscar su método, tomarlo prestado, etc).
> > Como dice Gaby, el problema de la regresión existió pero lo resolvirmos
> > fácil jeje... o sea, los objetos que se usaban para reificar el method
> > lookup no podía reificar su method lookup jeje, pero igual había que
> > trabajar un poco más en cómo estaba implementado.
> > A mi entender fue un trabajo muy pero muy interesante, lástima que como
> > muchas cosas quedó ahí muerto por falta de tiempo para investigar, guita
> > para invertir, etc.
> > En fin, si alguien tiene ganas de verlo avise
> >
> > Hernán.
> >
> > 2010/7/27 Gabriel Brunstein <[email protected]>
> >
> >
> >
> > > Diego, en realidad el method dictionary se puede modificar, y se pueden
> > > usar wrappers bastante sofisticados, como method wrappers o instance
> > > wrappers (con clases anónimas). Creo que vos te referís a tener
> reificado en
> > > Smalltalk el algoritmo de method lookup, cosa que sería muy interesante
> de
> > > ver como se resolvería (hay un problema de regresión infinita, ya que
> el
> > > propio algoritmo tendría que evaluarse utilizándose, algo loco..). Si
> esto
> > > se logra sería muy interesante para experimentar, pero no hay que
> subestimar
> > > el problema de performance que podría ocasionar.
> > > Por otro lado, según entiendo, lo que vos decías es tener un modelo de
> > > prototipos y delegación como el de Self (de donde se influenció
> > > NewtonScript). Yo también creo que sería más natural partir de un
> esquema
> > > de ese tipo y luego agregarle el esquema de clasificación como el de
> > > Smalltalk, así podrías combinar ambos.
> > > Pero creo que estos cambios implicarían un nuevo ambiente, ya no sería
> > > Smalltalk. Estaría muy bueno todo esto, pero por como están las cosas
> > > después de 35 años no creo que pase nada...
> >
> > > 2010/7/27 [email protected] <[email protected]>
> >
> > > Hola Andrés
> > >> Contesto entre líneas...
> >
> > >> On Jul 26, 8:57 pm, Andres Valloud <[email protected]> wrote:
> > >> > > Coincido en que hacer algo que ande es relativamente sencillo y
> hacer
> > >> algo que ande bien es extremadamente complejo.
> >
> > >> > Y si... tal cual.
> >
> > >> > > Entre las cosas que hoy le pediría a un VM es en que aumenten los
> > >> límites en cantidad de objetos, que soporten 64 bits
> >
> > >> > No es por ser pretencioso, pero VisualWorks tiene VMs de 64 bits
> para
> > >> > Linux en x86, Solaris en x86, y Solaris en SPARC.  Trabajamos mucho
> > >> > con las VMs y las imagenes de 64 bits en este tiempo, y las
> versiones
> > >> > que estan a punto de salir son muchisimo mejores que lo que teniamos
> > >> > hace unos años (esto no lo digo yo o nosotros (Cincom)... lo puso
> por
> > >> > escrito gente de GemStone en la lista de VisualWorks acerca de 7.7).
> >
> > >> > Tambien estamos trabajando en un port a Windows 64 bits.  Esto
> ultimo
> > >> > es mas dificil de lo que parece.  Por ejemplo, al contrario de mas o
> > >> > menos todo el mundo, en Windows de 64 bits un long tiene 32 bits.
>  Asi
> > >> > que si, digamos, tenes codigo multiplataforma que habla de longs
> todo
> > >> > el tiempo porque hasta ahora siempre (la VM de VisualWorks tiene
> cerca
> > >> > de 30 años encima) en 64 bits un long tenia 64 bits, y en 32 bits un
> > >> > long tenia 32 bits... hmmm...
> > >> Si, puedo imaginar a VW y Gemstone muy bien armados en todo eso, en mi
> > >> caso uso Dolphin o Squeak por motivos comerciales.
> >
> > >> > > y algo que siempre quisiera tener es mucho mas control sobre el
> method
> > >> lookup, que a mi entender es la principal limitación de Smalltalk.
> >
> > >> > Podrias contar mas de esto?  Donde le ves la limitacion?  Que te
> > >> > gustaria que hubiera pero no hay?
> >
> > >> Cuando envío un mensaje a un objeto, este busca en la clase,
> > >> superclases, etc. y ejectua el método. Toda esta convención es
> > >> invariable y define, sin posibilidad de modificar nada, cosas muy
> > >> importantes como la herencia y otras yerbas. Esta convención nos
> > >> parece bien a todos porque nos parece bien que si mando el mensaje
> > >> #print se ejecute el método #print, y también nos parece bien a todos
> > >> utilizar herencia simple, y también a casi todos nos parecen bien las
> > >> clases, metaclases y todo lo que defendemos desde la practicidad. Sin
> > >> embargo, no poder modificar esta convención, trae mas limitaciones de
> > >> las que generalmente pensamos (porque nos acostumbramos y nos gusta la
> > >> convención) y usualmente resolvemos de manera sucia y limitada. Son
> > >> conocidos los casos no muy bien resueltos con herencia simple (como la
> > >> jerarquia de Stream), son conocidos los trucos de usar #dnu para
> > >> activar métodos que no están presentes en la clase del receptor (como
> > >> en los proxies) y personalmente me molesta que esté conceptualmente
> > >> tan acoplado el método con el mensaje, dos cosas muy distintas. Una
> > >> solución que me suena factible, y tal vez compleja de implementar
> > >> decentemente, sería que el methodLookup estuviera implementado en
> > >> Smalltalk, en Object supongo. La implementación default podría ser una
> > >> primitiva que hiciera lo mismo que esperamos hoy en día, pero que al
> > >> modificarla en subclases nos abriera un campo de posibilidades muy
> > >> amplias y muy peligrosas (tan peligrosas como cualquier otra de
> > >> Smalltalk). Sería trivial implementar proxies, hacer delegaciones mas
> > >> sofisticadas y generar diseños hoy imposibles, de manera muy clara.
> > >> Por ejemplo, hoy es común ver que los proxies para persistencia en
> > >> bases de datos, o para sistemas distribuidos se hacen heredando de
> > >> ProtoObject, o de clases con pocos métodos, cosa que ya es sucia de
> > >> entrada, luego se agregan #dnu que son mas sucios. No sería mas
> > >> adecuado que la clase de un proxy fuera el misma que la del subject?
> > >> al menos parecida?, de esta manera se podrían delegar en el subject la
> > >> resolución de algunos métodos y en el proxy la resolución de otros,
> > >> podría incluso haber cooperación entre estos objetos. Esto es largo de
> > >> explicar, pero creo qeu se podría resolver mucho, programando poco,
> > >> mas claro y simple de debuggear. Otro ejemplo sería la herencia
> > >> múltiple, quedaría de una manera muy prolija, porque se podría acotar
> > >> a una parte muy pequeña del sistema, no estaría condicionada por otra
> > >> convención (como en c++), no tendría porqué tener que limitarse a
> > >> clases, podría ser entre objetos (como en la herencia de prototipos
> > >> que usaba en el NewtonScript de Apple). Es mas el polimorfismo se
> > >> ampliaría porque un objecto podría resolver mensajes que hoy no
> > >> entendería. Creo que también desaparecerían los intentos de solucionar
> > >> estos problemas mediante traits o cosas similares. Todo esto, tal vez
> > >> genere mas incertidumbre, pero creo que sería muy interesante TENERLO,
> > >> ir usándolo con mucho cuidado, y posiblemente aparezcan patterns que
> > >> mejoren sustancialmente las recetas actuales. Entiendo, no estoy
> > >> seguro, que las primeras versiones de la VM de Smalltalk tenían algo
> > >> similar y que luego se descartó por temas de perfomance, supongo que
> > >> 35 años mas tarde se podría tratar de resolver ese "problemita".
> >
> > >> Saludos
> >
> > >> Diego Coronel
> >
> > >> > Andres.
> >
> > >> > 2010/7/26 [email protected] <[email protected]>:
> >
> > >> > > Coincido con Gerardo, muy bueno el correo de Andrés, muchas
> gracias.
> > >> > > Sería bueno que alguna vez alguien documentara o publicara algo
> acerca
> > >> > > de VMs de calidad, hay poca gente que lo podría hacer bien,  y ese
> > >> > > material aportaría a la continuidad de Smalltalk como plataforma a
> > >> > > largo plazo. Todo smalltalker alguna vez tiene su época de querer
> > >> > > hacerse la VM, yo la pasé y si me distraigo un poco supongo que
> > >> > > volveré a lo mismo, es como recurrente el tema. Coincido en que
> hacer
> > >> > > algo que ande es relativamente sencillo y hacer algo que ande bien
> es
> > >> > > extremadamente complejo. Además la problemática a resolver tiene
> poco
> > >> > > que ver con Smalltalk (lo cual no lo hace menos divertido). Me
> parecen
> > >> > > válidos todos los enfoques, desde los que arrancan del assembler
> mas
> > >> > > crudo hasta los que se suben arriba de otra VM o lenguaje de alto
> > >> > > nivel, cada uno en su lugar y contexto no deja de ser interesante.
> > >> > > Entre las cosas que hoy le pediría a un VM es en que aumenten los
> > >> > > límites en cantidad de objetos, que soporten 64 bits y algo que
> > >> > > siempre quisiera tener es mucho mas control sobre el method
> lookup,
> > >> > > que a mi entender es la principal limitación de Smalltalk.
> >
> > >> > > Pero insisto en que sería bueno, que quienes saben del tema,
> alguna
> > >> > > vez publiquen y/o hagan docencia sobre el tema, al menos a modo de
> > >> > > memorias antes de retirarse. Creo que muchos pagaríamos gustosos
> un
> > >> > > libro sobre eso, porque nos ahorraría tiempo en lo que igual
> queremos
> > >> > > o vamos a hacer. Y además, difundir esto podría tener un efecto
> > >> > > positivo y podría originar la aparición de mas alternativas que
> las
> > >> > > que existen hoy, que son pocas.
> >
> > >> > > Saludos y gracias por la información.
> >
> > >> > > Diego Coronel
> >
> > >> > > On Jul 26, 2:41 pm, Gerardo Richarte <[email protected]> wrote:
> > >> > >> excelente andres!!!
> >
> > >> > >> espero que todo esto tambi n lo tengas en formato powerpoint :)
> >
> > >> > >> ya sab s que a unos cuantos nos interesa, ponele una tonelada de
> > >> > >> detalles t cnicos, y agregale una pizca de rant tambi n :)
> > >> > >> listo! receta perfecta :)
> >
> > >> > >>     en un rato vuelvo a leer el mail y mando algunas preguntas
> tambi
> > >> n
> >
> > >> > >>     saludos!
> >
> > >> > > --
> > >> > > To post to this group, send email to
> [email protected]
> > >> > > To unsubscribe from this group, send email to
> >
> > ...
> >
> > read more »- Hide quoted text -
> >
> > - Show quoted text -
>
> --
> To post to this group, send email to [email protected]
> To unsubscribe from this group, send email to
> [email protected]<clubsmalltalk%[email protected]>
>
> http://www.clubSmalltalk.org
>



-- 
*Hernán Wilkinson
Agile Software Development, Teaching & Coaching
Mobile: +54 - 11 - 4470 - 7207
email: [email protected]
site: http://www.10Pines.com <http://www.10pines.com/>*

-- 
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]

http://www.clubSmalltalk.org

Responder a