En otros Smalltalks, *cada objeto* tiene un puntero a su clase
(excepto los inmediatos como los caracteres, small integers y small
doubles).  Es lo mismo en lo que al puntero respecta, salvo que en VSE
el puntero es a una cosa que no es una clase.  En otros Smalltalks,
superficialmente, nada impide hacer clases fantasma que cambien los
mensajes a los que responde un objeto, o que hagan que la herencia
pase por clases tuyas antes etc.  Sin embargo, es de andar pidiendo
que se te cuelgue la imagen.  De cualquier modo es medio un garron.

A primera vista parece que el enfoque de VSE tiene que ser obviamente
superior, pero seguramente debe haber algun costo u otra cosa que se
complica al tener que andar escarbando entre los arrays de method
dictionaries para encontrar la clase del objeto... por ejemplo,
probablemente para VSE sea bueno tener acceso mas rapido a los method
dictionaries porque no tiene PICs.  Si tuviera PICs, los lookups
serian mucho menos frecuentes y entonces no importaria tanto tener la
doble indireccion a traves de la clase para encontrar el method
dictionary.  Que se yo, no me parece que sea tan facil.

2010/8/7 Gerardo Richarte <[email protected]>:
> On 07/27/2010 05:32 PM, [email protected] wrote:
>> Hola Andrés
>> Contesto entre líneas...
>>
> yo no, solo por esta vez :)
>> Cuando envío un mensaje a un objeto, este busca en la clase,
>> superclases, etc. y ejectua el método.
>>
> pegale una mirada a Visual Smalltalk, desde siempre tuvo algo que
> permite cambiar
> un poco la semántica del message send (del lookup) desde Smalltalk.
>
> Básicamente, el lookup no se hace por clases y jerarquías, si no que
> *cada objeto* tiene algo así como un array con los diccionarios donde se
> hace el lookup. El orden de los diccionarios es el orden del lookup.
> Obviamente por default este array esta armado según la jerarquía de la
> clase del objeto, y es compartido el mismo por todos los objetos de la
> misma clase, pero esto no tiene por que ser así.
>
> Y de esta forma se pueden usar métodos de instancia (y se usan en
> sistemas comerciales), se puede implementar fácilmente cosas como
> traits, hernecia múltiple, etc. Lo único que no se puede hacer es
> cambiar que el matching de los métodos se haga por el selector, para eso
> hay que caer en el doesNotUnderstand:
>
>    saludos!
>
> --
> To post to this group, send email to [email protected]
> To unsubscribe from this group, send email to 
> [email protected]
>
> http://www.clubSmalltalk.org

-- 
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