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 
> > [email protected]
>
> >http://www.clubSmalltalk.org- 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]

http://www.clubSmalltalk.org

Responder a