Primero hay que leer el/los manual/es (que lo bajas de la pagina de GemStone/S).

Luego cuando se sabe como funciona se podes evaluar a gusto.

Saludos,
Bruno 






----Mensaje original----

De: [email protected]

Fecha: 14/10/2010 09:31 

Para: "[email protected]"

CC: ""

Asunto: Re: [clubSmalltalk] Blog



?Y donde se obtiene ese libro?

Por cierto, puede que se hayan mandado un trabajo hiper complejo en gemstone, 
pero eso no significa que no existan enfoques mas simples.
Por ejemplo, lo típico que enseñan en sistemas operativos es que debes proteger 
los objetos compartidos con mutexes o critical sections. En Windows hacen la 
distinción de que un mutex protege procesos, mientras que critical sections 
protege threads, mientras que en el curso de sistemas operativos no se hacia 
diferencia (estoy hablando de hace como 20 anios eso si).
Bueno, y alguna vez en algun proyecto protegíamos todo con critical sections  e 
implementábamos transacciones con eso, pero el código era un enredo y 
funcionaba hiper lento.
A lo que voy es que hay buenas implemnteciones y malas implementaciones, así 
como también buenos diseños y malos diseños. Imho la sola idea de que el 
programador se daba leer un libro para poder usar un sistema (gemstone/s en 
este caso) en vez de recibir una explicación que quepa en una servilleta, 
mientras que en el caso de transacciones de bd el tipo efectivamente recibe una 
instrucción en una serilleta y listo, me dice que el diseño de gemstone/s no es 
el correcto.
 Saludos,Guillermo Schwarz.
El 14-10-2010, a las 7:35, "[email protected]" [email protected]> 
escribió:

Leer: Manual de GemStone/S, capitulo Replicates y Forwaders.

Saludos,
Bruno
 

----Mensaje original----

De: [email protected]

Fecha: 13/10/2010 19:45 

Para: 

Asunto: Re: [clubSmalltalk] Blog



Sí, que bueno que lo mencionas.
El problema está ampliamente resuelto en las bases de datos.
En el caso de los "objetos" estamos tratando de reinventar la rueda, no sé para 
qué. Supongo que el olorcillo a que es un ejercicio intelectual que se puede 
resolver bien con algo de esfuerzo los motiva, cuando en realidad si partes de 
un diseño mal concebido no puedes tener una buena implementación aunque lo 
debuggees por años.

Ejemplos de cómo no se debe hacer hay muchos. Partamos por el ejemplo que 
mencionaba Angel donde algunos objetos son threads, ¿qué haces con los objetos 
apuntados por el thread? Supongamos que decides serializarlos para enviarlos a 
la máquina remota, ¿tendrás 2 copias de cada objeto? ¿cómo te aseguras que sean 
coherentes? Porque recordemos que en Smalltalk los objetos tienen estado, si 
cambias uno, ¿el otro cómo se entera? ¿Vas a hacer que uno sea el proxy del 
otro? ¿Cómo decides cuándo crear un nuevo proxy y cuando reutilizarlo? ¿Cómo 
evitas que el protocolo se vuelva "chatty"? ¿Las transaccioens serán también 
distribuidas?

Alguien también mencionó que los objetos tienen identidad. ¿En qué parte dice 
eso? Una vez vino a la universidad un Uruguayo o Argentino de apellido Tichy 
que venía fascinado con Smalltalk y venía con las idea de que todos los objetos 
deben tener identidad. ¿Porqué? ¿Porqué las bases de datos no lo hacen, ni un 
programa en C lo hace? A lo más un programa en Lisp lo hace, pero tiene sentido 
porque Lisp es un lenguaje funcional, de modo que los parámetros nunca se 
modifican.

Para simular las modificaciones en Lisp (y en ML y Haskell) se usan contextos. 
Los contextos se podría decir que son objetos o HashMaps. Apuesto a que los 
contextos no tienen identidad. Para mí es obvio, no sé para ustedes.

Si vamos a usar un paradigma deben entenderlo al revés y al derecho, no 
mezclarlo con otros paradigmas porque escucharon por ahí que así era más bonito 
o más OO o lo que sea que hayan escuchado.

Si tienes objetos compartidos entonces la "computación" (el cálculo) se hace 
difícil porque debes proteger todos los objetos compartidos para que no hayan 
modificaciones concurrentes, es decir, lo contrario de lo que haces cuando usas 
transacciones.

Por eso en Google usan MapReduce, porque es una idea que viene de la 
programación funcional, en la que siempre se calcula algo nuevo, no se modifica 
el estado de los objetos que se pasan como parámetro.

Capice?
Lo que postulo es que es la claridad de conceptos lo que ayuda a tener 
implementaciones simples que salen de una patada. Si no tienes los conceptos 
claros terminas con algo tan elegante como Struts con tag libraries que hace 
que todo sea difícil... ;-)

Oye una pregunta para Andrés Valloud, ¿tienes los fuentes de GemStone?
Saludos,Guillermo.

2010/10/11 Javier Burroni [email protected]>

Hola...

La verdad, estaba siguiendo la conversación pasivamente.

Guillermo, creo que el problema esta en decir ex-ante, que la solución

a un problema sea trivial. No se me ocurre un caso donde eso este bien

(no significa que no exista), pero bueno (tampoco se muy bien si yo

usaria ex-post la frase). Creo que se agrava cuando el que esta

buscando la solución es otra persona.



Por otro lado, que algo sea no trivial, no implica que sea dificil

(tampoco que sea facil). Así que evitar decir que algo se implementa

trivialmente no te convierte en un pesimista -yo soy un pesimista, y

se muy bien que no es por eso-.

Por otro lado, la cantidad de mails indagando sobre el problema, sin

que se haya escrito una sola linea, creo que fue un buen q.e.d. de la

no trivialidad del problema, no? :)



2010/10/11 Guillermo Schwarz [email protected]>:

> unlp

>

> Me dijeron que era la mejor universidad de Argentina... parece que

> no ;-)

>

> Y si es tan complicado, ¿porqué no los cuentas dónde están las

> complicaciones?

>

> ¿O no saber cómo hacerlo te convierte en experto como para decir que

> nadie más lo puede hacer o cuál es el camino equivocado?

>

> Sos genial!!!

>

> No sabes cuánto me hacés reir. :))

>

> En todo caso es una falacia típica. Lo mismo que hace Alan Turing cuando

...

> dice que si su máquina es indecidible entonces todas lo son. Primero

> encuentra el problema equivocado, luego plantéalo de la manera

> equivocada, luego presenta una solución que no lo resuelve y que es la

> solución más general posible... ¿No se han preguntado porqué todos

> estudiamos la indecibilidad de la máquina de Turing universal? Si eso no

> es crear the "dark ages", no sé lo que es.

>





saludos, y "haya paz" (siguiendo con las citas les luthierenses)

jb



--

" To be is to do " ( Socrates )

" To be or not to be " ( Shakespeare )

" To do is to be " ( Sartre )

" Do be do be do " ( Sinatra )



--

To post to this group, send email to [email protected]

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



http://www.clubSmalltalk.org

-- 
Saludos cordiales,

Guillermo Schwarz
Sun Certified Enterprise Architect







-- 

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




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