Discutiendo con un amigo que decía que Smalltalk no tenia herencia múltiple.
Aunque sea discutible la necesidad de herencia múltiple, me pregunte cuan rápido se podrá implementar herencia múltiple en Smalltalk y poner a prueba su flexibilidad.
En "7 líneas de código" o 5 minutos ... hice esto:
Se puede discutir sobre la validez de la implementación (la variable # superinstances y sus implicaciones) pero NO es el punto central.
Lo central es que si en 5 minutos se puede hacer esto, que será después de estar un año trabajando sobre un tema…
Implementa algo así en C# (u otro) valor!!!
Object subclass: #HerenciaMultiple
instanceVariableNames: 'superinstances'
classVariableNames: ''
poolDictionaries: ''
classInstanceVariableNames: ''
initialize
super initialize.
superinstances := OrderedCollection new.
superinstances addAll: (self superclasses collect: [:each | each new initialize])
doesNotUnderstand: failedMessage
superinstances do: [:each | | result |
[result := each perform: failedMessage selector withArguments: failedMessage arguments] on: Error do: [:ex | ].
result ifNotNil: [:value | ^value]].
^super doesNotUnderstand: failedMessage
Object
Lagarto
Pajaro
HerenciaMultiple
Dragon
Dragon class
superclasses
^OrderedCollection with: Lagarto with: Pajaro
Saludos,
bruno
No virus found in this outgoing message.
Checked by AVG.
Version: 7.5.524 / Virus Database: 269.23.2/1387 - Release Date: 4/19/2008 11:31 AM
Bruno Buzzi Brassesco escribió:
>
> Discutiendo con un amigo que decía que Smalltalk no tenia herencia
> múltiple.
>
> Aunque sea discutible la necesidad de herencia múltiple, me pregunte
> cuan rápido se podrá implementar herencia múltiple en Smalltalk y
> poner a prueba su flexibilidad.
>
> En "7 líneas de código" o 5 minutos ... hice esto:
>
> Se puede discutir sobre la validez de la implementación (la variable #
> superinstances y sus implicaciones) pero NO es el punto central.
>
> Lo central es que si en 5 minutos se puede hacer esto, que será
> después de estar un año trabajando sobre un tema…
>
> Implementa algo así en C# (u otro) valor!!!
>
Muy bueno!
Se llega a resultados sorprendentes. Lo que no entiendo es porque en C#
no se podría hacer lo mismo. Me gustaría que me explicaras los motivos
(por los cuales no se puede) ya que eso que mostraste es muy simple.
Saludos
GallegO
El framework Dojo (www.dojotollkit.com) es un framework para hacer
interfaces web con javascript que usa el concepto de Mixins para
simular la herencia múltiple.
Lo que hace es copiar todos los métodos de los mixins en la clase receptora.
Saludos!
Pablo.-
2008/4/21 Guillermo Schwarz <guillerm...@gmail.com>:
Digamos que era una discusión que Smalltalk no tenia herencia multiple, en 5
min hice eso (como vos decis lo que hice fue muy sencillo), y dije: "hacete
lo mismo en C# valor". Ese es el contexto de "Herencia multiple en 7 lineas
de codigo o 5 minutos".
La cara de mi amigo es indescriptible, tendria que haberle sacado una foto,
sobre todo cuando explicas que hace y como funciona cada "linea de codigo".
Saludos,
Bruno
-----Original Message-----
From: clubSm...@googlegroups.com [mailto:clubSm...@googlegroups.com]
On Behalf Of GallegO
Sent: Monday, April 21, 2008 9:46 AM
To: clubSm...@googlegroups.com
Subject: [clubSmalltalk] Re: Herencia multiple "7 lineas de codigo" o 5
minutos ...
Hola Bruno:
Bruno Buzzi Brassesco escribió:
>
> Discutiendo con un amigo que decía que Smalltalk no tenia herencia
> múltiple.
>
> Aunque sea discutible la necesidad de herencia múltiple, me pregunte
> cuan rápido se podrá implementar herencia múltiple en Smalltalk y
> poner a prueba su flexibilidad.
>
> En "7 líneas de código" o 5 minutos ... hice esto:
>
> Se puede discutir sobre la validez de la implementación (la variable #
> superinstances y sus implicaciones) pero NO es el punto central.
>
> Lo central es que si en 5 minutos se puede hacer esto, que será
> después de estar un año trabajando sobre un tema...
>
> Implementa algo así en C# (u otro) valor!!!
>
Muy bueno!
Se llega a resultados sorprendentes. Lo que no entiendo es porque en C#
no se podría hacer lo mismo. Me gustaría que me explicaras los motivos
(por los cuales no se puede) ya que eso que mostraste es muy simple.
Saludos
GallegO
No virus found in this incoming message.
Checked by AVG.
Version: 7.5.524 / Virus Database: 269.23.3/1390 - Release Date: 4/21/2008
4:23 PM
No virus found in this outgoing message.
Checked by AVG.
Version: 7.5.524 / Virus Database: 269.23.3/1390 - Release Date: 4/21/2008
4:23 PM
El mayor problema que tienen tanto Java como C# es que tienen early binding en vez de late binding, es decir, se trata de resolver todo en tiempo de compilaciòn, de modo que el truco del #doesNotUnderstand no es practicable ni en Java ni en C# (ok, todos sabemos que sì tienen late binding, pero es menos late que en el caso de Smalltalk).Sin embargo en Java desde la versiòn 1.3 existen los dynamic proxies que vienen a hacer lo mismo pero con tipos estàticos. Ahora bien, la cantidad de lìneas de còdigo para hacer lo mismo bordea las 70 lìneas de código dependiendo de còmo se cuente, es decir unas 10 veces màs. Sin embargo considero que eso no es lo impresionante si despuès de todo eso se meterà dentro de una biblioteca, de modo que da lo mismo la cantidad de lìneas de còdigo, lo impresionante es el còdigo resultante con que queda la aplicaciòn, que al tener proxies dinàmicos permite asociaciones en tiempo de ejecuciòn.El truco surgiò inicialmente en Smalltalk como el patròn de diseño llamado Proxy. Luego se concirtiò en Mixins para simular herencia múltiple. Luego se convirtió en AOP que finalmente es lo mismo.He leìdo de proyectos que estàn tratando de programar todo con Traits (muy parecido a los Mixins), pero en vez de usar herencia para resolver los comportamientos similares, encadenan Traits. Al parecer la desilusiòn de las jerarquìas de clases nos ha llevado a esto, lo que hace que los lenguajes sean cada vez màs dinámicos, ya que en tiempode ejecución se podría agregar un trait a un objeto sin necesidad de instanciarlo de nuevo, mientras que con las jerarquìas de clases hay que recompilarlo todo.
Saludos,Guillermo.
2008/4/21 GallegO <fxga...@gmail.com>:
Hola Bruno:
Bruno Buzzi Brassesco escribió:
>
> Discutiendo con un amigo que decía que Smalltalk no tenia herencia
> múltiple.
>
> Aunque sea discutible la necesidad de herencia múltiple, me pregunte
> cuan rápido se podrá implementar herencia múltiple en Smalltalk y
> poner a prueba su flexibilidad.
>
> En "7 líneas de código" o 5 minutos ... hice esto:
>
> Se puede discutir sobre la validez de la implementación (la variable #
> superinstances y sus implicaciones) pero NO es el punto central.
>
> Lo central es que si en 5 minutos se puede hacer esto, que será
> después de estar un año trabajando sobre un tema...
>
> Implementa algo así en C# (u otro) valor!!!
>
Muy bueno!
Se llega a resultados sorprendentes. Lo que no entiendo es porque en C#
no se podría hacer lo mismo. Me gustaría que me explicaras los motivos
(por los cuales no se puede) ya que eso que mostraste es muy simple.
Saludos
GallegO
--
Saludos cordiales,
Guillermo Schwarz
Sun Certified Enterprise Architect
Yahoo! Encuentros
Ahora encontrar pareja es mucho más fácil, probá el nuevo Yahoo! Encuentros.
Visitá http://yahoo.cupidovirtual.com/servlet/NewRegistration
Saludos,
Bruno
-----Original Message-----
From: clubSm...@googlegroups.com [mailto:clubSm...@googlegroups.com]
On Behalf Of Chuck
Sent: Wednesday, April 23, 2008 8:36 PM
To: ClubSmalltalk
Subject: [clubSmalltalk] Re: Herencia multiple "7 lineas de codigo" o 5
minutos ...
eso es composicion implementada con una collection, o sea un
"cruncher" :)
On 19 abr, 16:59, "Bruno Buzzi Brassesco" <smallt...@adinet.com.uy>
wrote:
> Discutiendo con un amigo que decía que Smalltalk no tenia herencia
múltiple.
>
> Aunque sea discutible la necesidad de herencia múltiple, me pregunte cuan
> rápido se podrá implementar herencia múltiple en Smalltalk y poner a
prueba
> su flexibilidad.
>
> En "7 líneas de código" o 5 minutos ... hice esto:
>
> Se puede discutir sobre la validez de la implementación (la variable #
> superinstances y sus implicaciones) pero NO es el punto central.
>
> Lo central es que si en 5 minutos se puede hacer esto, que será después de
> estar un año trabajando sobre un tema...
No virus found in this incoming message.
Checked by AVG.
Version: 7.5.524 / Virus Database: 269.23.4/1394 - Release Date: 4/23/2008
7:16 PM
No virus found in this outgoing message.
Checked by AVG.
Version: 7.5.524 / Virus Database: 269.23.4/1394 - Release Date: 4/23/2008
7:16 PM
2008/4/23 Bruno Buzzi Brassesco <smal...@adinet.com.uy>:
>
> Y que vendría a ser un "cruncher" ?
>
>
> Saludos,
> Bruno
>
>
> -----Original Message-----
> From: clubSm...@googlegroups.com [mailto:clubSm...@googlegroups.com]
>
> On Behalf Of Chuck
> Sent: Wednesday, April 23, 2008 8:36 PM
> To: ClubSmalltalk
> Subject: [clubSmalltalk] Re: Herencia multiple "7 lineas de codigo" o 5
> minutos ...
>
>
>
>
> eso es composicion implementada con una collection, o sea un
> "cruncher" :)
>
> On 19 abr, 16:59, "Bruno Buzzi Brassesco" <smallt...@adinet.com.uy>
> wrote:
> > Discutiendo con un amigo que decía que Smalltalk no tenia herencia
> múltiple.
> >
> > Aunque sea discutible la necesidad de herencia múltiple, me pregunte cuan
> > rápido se podrá implementar herencia múltiple en Smalltalk y poner a
> prueba
> > su flexibilidad.
> >
> > En "7 líneas de código" o 5 minutos ... hice esto:
> >
> > Se puede discutir sobre la validez de la implementación (la variable #
> > superinstances y sus implicaciones) pero NO es el punto central.
> >
> > Lo central es que si en 5 minutos se puede hacer esto, que será después de
> > estar un año trabajando sobre un tema...
> No virus found in this incoming message.
> Checked by AVG.
> Version: 7.5.524 / Virus Database: 269.23.4/1394 - Release Date: 4/23/2008
> 7:16 PM
>
>
>
> No virus found in this outgoing message.
> Checked by AVG.
perdon entonces "cruncher" == traits?
porque traits ya lo conocia..
salu2
mdc
2008/4/25 Guillermo Schwarz <guillerm...@gmail.com>:
Alguien usó Traits para sistemas en producción?
Han obtenido buenos resultados?
Hay algún port o intención de port a Dolphin o Visual Smalltalk?
Saludos
GallegO
Guillermo Schwarz escribió:
> La idea de la orientaciòn a objetos se puede ver como la creaciòn de
> objetos biológicos (de ahí su nombre, no muy apropiado por cierto, por
> parte de Alan Kay que fue el inventor del término y que estudió
> biología molecular), pero además se puede ver como la reducción del
> código repetido a través de las jerarquías de clases.
>
> Acà hay un ejemplo de Traits y cómo se puede eliminar la repetición de
> las colecciones en Smalltalk:
> http://portal.acm.org/citation.cfm?doid=949305.949311
>
> "La" explicación de Traits:
> http://www.iam.unibe.ch/~scg/Archive/Papers/Scha03aTraits.pdf
> <http://www.iam.unibe.ch/%7Escg/Archive/Papers/Scha03aTraits.pdf> en
> Smalltalk.
>
> Saludos,
> Guillermo.
>
> 2008/4/23 Jose Gregoris <kikod...@yahoo.com.ar
> <mailto:kikod...@yahoo.com.ar>>:
>
> Hola gente.
>
> Perdon que me meta en la charla, pero no entendí esto:
>
> *
> He leìdo de proyectos que estàn tratando de programar todo con
> Traits (muy parecido a los Mixins), pero en vez de usar herencia
> para resolver los comportamientos similares, encadenan Traits. Al
> parecer la desilusiòn de las jerarquìas de clases nos ha llevado a
> esto, lo que hace que los lenguajes sean cada vez màs dinámicos,
> ya que en tiempode ejecución se podría agregar un trait a un
> objeto sin necesidad de instanciarlo de nuevo
> *,* mientras que con las jerarquìas de clases hay que recompilarlo
> todo.
>
> *
> Sobre todo lo de recompilar todo, se refieren a ST o ( JAVA C#)
> Saludos kiko
>
>
> */Guillermo Schwarz <guillerm...@gmail.com
> <mailto:guillerm...@gmail.com>>/* escribió:
> <mailto:fxga...@gmail.com>>:
> ------------------------------------------------------------------------
http://www.dc.uba.ar/events/smalltalks/2007/programme/canibanoSmalltalks2007.pdf
Estuve en la presentación de Nicolás en Smalltalks2007 y estuvo muy
interesante :-)
Saludos, Guiye
Nicolas Chillo escribió:
> Gabo:
> El problema con lo que vos decis es que la clasificación actual es
> demasiado arbitraria. A no todos les sirve por ejemplo que un Entero
> se clasifique en LargeInteger y SmallInteger.
>
> A partir de estas clasificaciones arbitrarias, surge la necesidad de
> buscar nuevas alternativas. Aca entran en juego los mecanismos de
> herencia multiple, de traits, etc. Igualmente, yo coincido en que
> estos mecanismos no deberían ser soluciones a reutilización de codigo.
>
> Saludos,
> Nicolas Chillo
>
> El día 25 de abril de 2008 11:05, Gabriel <gab...@gmail.com
> <mailto:gab...@gmail.com>> escribió:
> On 25/04/2008, *Claudio* <claudio...@gmail.com
> <smallt...@adinet.com.uy <mailto:smallt...@adinet.com.uy>>
--
Guillermo Sapaya
InfOil S.A.
Gerente de Desarrollo
(+54-11) 4542-9999 x122
gsa...@infoil.com.ar
Personalmente nunca usaria herencia multiple. Para mi en los casos de
herencia multiple siempre hay un error de concepto.
Como vos decis en lo que envie esta el problema del "self" y muchos otros
problemas. En si lo que envie es un ejemplo que hice frente a un amigo (de
la linea C#) para que viera la flexibilidad que tiene Smalltalk. Como esta
preocupado por la herencia multiple le mostre esto, solo eso.
No se trata de implementar HM ni mostrar por donde se podria ir para
implementar HM, sino que fue algo que hice en 5 min (ahora son las 8:04 para
8:09 que podria hacer de de HM???) y fue solamente eso. Ya se que el ejemplo
es muy burdo; y simple como dijo gallego.
Saludos,
Bruno
-----Original Message-----
From: clubSm...@googlegroups.com [mailto:clubSm...@googlegroups.com]
On Behalf Of Claudio
Sent: Friday, April 25, 2008 10:47 AM
To: ClubSmalltalk
Subject: [clubSmalltalk] Re: Herencia multiple "7 lineas de codigo" o 5
minutos ...
> estar un año trabajando sobre un tema...
No virus found in this incoming message.
Checked by AVG.
Version: 7.5.524 / Virus Database: 269.23.5/1398 - Release Date: 4/25/2008
2:31 PM
No virus found in this outgoing message.
Checked by AVG.
Version: 7.5.524 / Virus Database: 269.23.5/1398 - Release Date: 4/25/2008
2:31 PM