Superando los límites de la Orientación a Objetos (Parte 8)

Sigo en esta entrega, transcribiendo y comentando la charla de Alejandro Reimondo de Smalltalking, dictada hace unas semanas en la Universidad Tecnológica Nacional, sede Buenos Aires. Pongo la transcripción, no textual, en cursiva.

Una cosa es decir “soy observador, y no me quiero comprometer, soy un orientado”. Eso paso con la orientación a objetos.

Hay una POO, DOO, LOO, y hay con objetos. No hay libros donde se hable de eso. Todos tienen la O en el medio, de “Orientado”, no se habla de “Programación con Objetos”, sino de “Programación Orientada a Objeto”.

Abundan la gente que habla de lo que funciona, pero no te dicen lo que no funciona.

En cambio reiterado, también se puede usar Smalltalk, y ahí se ve a Smalltalk como plataforma, como un buen IDE, ese cambio reiterado en un lugar donde todo se puede cambiar, el todo es un objeto me permite seguir proyectando y hacerlo crecer. Y genera en muchos smalltalkers una actitud de fanatismo. El fanático es el que ve distintas alternativas, elige una, y esa la defiende a muerte. Es una etapa común en los smalltalkers, una etapa de fanatismo. Y a veces, en los demás, es percibido como no entendible.

Y lo digo así, porque yo he pasado esa etapa, y ya no soy fanático, ¿por qué? Porque no veo alternativas … ;-) … no hay herramientas comerciales que permitan trabajar de esta manera.

Se refiere a programar con objetos.

¿Y por qué? ¿Me pongo a escribir otra cosa? Uno ve que tratan de salir otras cosas, que se parecen a Smalltalk, y luego no lo son, ¿por qué? No entiendo. Hay muchos orientados a objetos, hay pocos ambientes de objetos, y uno es Smalltalk, ¿por qué va a haber otro? Porque siempre lo podemos cambiar.

Lo que quiere decir, es que Smalltalk es cambiable, y de ahí, que no hace falta otra tecnología, en principio.

Ha habido otras cositas tan seductoras como Smalltalk pero no han logrado instalarse.

Algunos usan Smalltalk como sistema cerrado, y valoran Smalltalk con el concepto de imagen. Dicen entonces que Smalltalk es una caja que contiene objetos.

Acá Alejandro mostró un programa en 3 dimensiones, con un pez en una pecera, programado para nadar y reaccionar de forma simple.

 

No hablamos entre diferencia entre clase y especie. Este pez tiene una colección de pensamientos que puede tener basado en su especie. Este pez es muy estúpido, que sabe ir para hacia adelante, si ve a alguien de su misma especie, va a para ese lado. Cuando esta solo en la pecera, se choca contra todos los bordes. El sistema es pobre, es estúpido.

Si quiero cambiar el sistema, ¿qué puedo hacer? Ir a programar nuevo comportamiento, o puedo agarrar y poner más peces. Pongo diez peces más, y ¿qué pasa? Empiezan a juntarse y se hace un cardumen. El sistema es más eficiente, porque no hay tantas colisiones contra las paredes, los peces aprendieron a no chocarse contra las paredes, y trabajan en grupo. Esto se logra con mas peces. No hubo que cambiar el sistema.

Ese es el punto del ejemplo: no hizo falta cambiar el sistema, sólo agregar objetos. Y el comportamiento que se dió, es emergente: puede o no haber sido previsto por el que colocó la conducta en “pez”. Y no hizo falta codificar, pensar, diseñar a “cardumen”.

Cuando uno ve esto, piensa en codificar la clase cardumen. Pero vean que curioso, no hubo necesidad. Hay un candidato a objeto que no era necesario hacerlo. Era un objeto que no existía pero era un observable. Hay cosas que observamos que no son objetos. ¿Qué es, entonces, un objeto? Dije que un cardumen no es un objeto. Uds. debian saltar y decir ¿cómo? En las charlas informales de Smalltalking, es un observable, es cardumen. Pero muchos le ponen nombre y lo quieren hacer un objeto.

En cambio, cardumen es una abstraccion. ¿Vamos a poner en el sistema algo que nunca vamos a instaciar?. Estamos haciendo algo que no es del sistema, es algo orientado a objeto. Y en el equipo aparece la evidencia de ese observable, y alguno del equipo lo agarra y lo toma como objeto. Pero no lo es, ¿dónde aparecen los indicadores de que no es un objeto?

Cuando uno tiene un cardumen, y ponemos un vidrio, el cardumen original se divide en dos ¿cuál de los dos es el cardumen? ¿es ésto o es el otro?. O si tenemos dos cardumenes, y se juntan, ¿cuál desaparece?

Se invierte mucha energia en un equipo, para decidir lo que es evidente para todos y no es un objeto. Pero en un ambiente nos damos cuenta.

No queda bien definido a qué se refiere con ambiente, a esta altura de la charla. Venía más adelante una aclaración, pero no alcanzó el tiempo de la charla. Alejandro tiene que comenzar a manejar mejor los tiempos, para lograr transmitir lo que quiere decir. (En un cliente, me hacen practicar dando charlas de 10 minutos… ;-)

Uno de los indicadores es la instanciación, y la identidad. Si no podemos definir la identidad, dudemos de la conveniencia de definirlo como objeto.

Lo interesante es tener un soporte informático para ver un emergente del sistema, al ejecutarlo, antes de que el equipo se de cuenta.

El gran tema acá es la emergencia. Recomendaría para una lectura más amplia, el libro de Mario Bunge “Emergencia y convergencia”, y otros, como su filosofía de la biología, para comprender mejor a sistema y emergencia.

En el sistema, van a emerger cosas, independientes de nuestra visión o voluntad de dirigir. Quedarnos con solo nuestra voluntad, nos olvidamos de estos emergentes que van a suceder. El paradigma de objetos se compromete con el tiempo, el sistema incorpora cambios.

En física tenemos sistemas ideales, reales, y naturales. La física trata los ideales, en la práctica, se tunea, para llevar ese modelo ideal a un modelo real, que funcione en máquinas. Y de la naturaleza nadie la trata. Hay un sistema natural, no tiene tratamiento, desde el momento en que uno lo representa.

Lo interesante es Smalltalk como soporte para que las cosas pasen, antes de darnos cuenta de por qué. Nos sirve para definir objetos, y para observar cosas que ocurrían, en cambio de decir de antemano “esto es un objeto, preserva identidad”.

Esto de estar dentro y fuera del sistema, hace que las personas entiendan a Smalltalk como un sistema vivo, y en mi opinión, es una expresion usada sin cuidad, esto es lejos de ser un sistema vivo.

Post relacionados

Superando los límites de la Orientación a Objetos (Parte 7)
Superando los límites de la Orientación a Objetos (Parte 6)
Superando los límites de la Orientación a Objetos (Parte 5)
Superando los límites de la Orientación a Objetos (Parte 4)
Superando los límites de la Orientación a Objetos (Parte 3)
Superando los límites de la Orientación a Objetos (Parte 2)
Superando los límites de la Orientación a Objetos (Parte 1)
Mas allá de objetos

Nos leemos!

Angel “Java” Lopez
http://www.ajlopez.com/
http://twitter.com/ajlopez

This entry was posted in 3462, 3463. Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>