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

Sigo transcribiendo (notas no textuales) la charla de Alejandro Reimondo de Smalltalking. Mostró un slide con un dibujo de bebé:

Pongo lo que dijo Alejandro (aproximadamente) en cursiva:

Hay un dibujito que se ha usado bastante, mira, mamá, todos son objetos, quedémonos tranquilos. Es algo muy utilizado para vender, si pensamos así, que la inocencia nos valga.

No sé cuántos de los asistentes a la charla vieron algún dibujo así. Hace tiempo que no aparece. El auditorio de esta charla, principalmente estudiantes universitarios, pertenece a una generación que no vió ese tipo de dibujo.

Está bueno decir todos son objetos, pero es muy inocente. ¿No sospecharon cuando les dijeron, “pone objetos”? Es demasiado simple. Muy simple, Y cuando uno lo piensa, todos son objetos, pero cuando uno ve la realidad, a todos nos va yendo mal.

Bueno, yo no diría a todos.

Hay cosas fuera de control, y hay problemas en el software, por ejemplo, en escalabilidad. Si 1+1 funciona, seguimos hasta el infinito, esa proyección inductiva que todos son objetos, nos pone en un camino infinito, y tenemos un mundo para darnos cuenta que cada vez que agregamos más de lo mismo, cada vez complicamos más. Esa complejidad que no vemos cuando empezamos por un sistema simple.

He visto mucha gente capacitada, que dice que todos son objetos.

Pero es interesante, ese dibujo de bebé, nos estan seduciendo a sentirnos que tenemos intercambiar, y tener ese rol.

No entendí esa frase. Pasamos a otro slide, con título Punto de Partida. 

No vamos a tratar acá, hay todo un método que sustenta esto, el tratar de abordar a las cosas descomponiéndolas, en el fondo, entendiéndolas. Normalmente, cuando se nos presenta una problemática, lo que se nos sugiere hacer, es decomponerla en partes, seccionarla, y si todo esto era un problema, ahora tenemos tres poblemas mas simples.

Yo recordaría aquí a Descartes. En su método, algo de esto recomienda, pero también recomienda, como cuarto paso, revisar que no nos hayamos olvidado algo.

Cuando atacamos cada problema, vamos seccionándolo. Hay que ser cuidadoso, hay que ver donde seccionar. Hay que saber donde cortar el sistema,para que el problema sea más entendible. Es algo bien enseñado, no tengo que hablar de esto, es diseccionar sistemas, es cuestión de tener un hacha. A medida que tiene más partes, más comienza a ser todo ser inmanejable. No se sabe cual es el vínculo entre las partes. En esa partición estratégica que hicimos, dos partes no tendrían que estar asociadas, pero están.

Lo más curioso, no nos damos cuenta nunca, cuando más partimos, más queda entre medio, más queda entre los intercisios, y lo que entendemos, cada vez es menor, este método genera no solo incertidumbre, cada vez entendemos menos, lo que importa son las partículas, y en el medio lo negamos, es vacío, todos son objetos, son pelotas, es la primera parte del paradigma, entonces, encontramos esas pelotas, marcamos las relaciones, pero en medio hay algo incontrolable, que si lo tocamos, hay cambios en otras partes.

Acá creo que hubiera sido bueno mostrar un ejemplo, para mostrar esa pérdida con un caso concreto.

Es una forma de abordar la realidad, es la única que tenemos. No tratamos de sugerirles que hay otra forma, solamente estamos siendo criticos, de lo que hacemos todos los dias.

Cada vez que arrancamos con algo, empezamos a disectar.

Ese metodo que es lo que produce? ese metodo produce, un sistema, que se entiende como un conjunto de reglas, en donde uno puede chequear, la validez de ese sistema, mientras nada cambia, es un sistema cerrado. Y si una encapsula un conjunto de reglas, lo podrá llamar clases. Y eso está muy bueno para lo que es el estudio y la descripción de lo que es el sistema.

¿Pero qué compromiso tiene con la realidad?

El sistema real no tiene compromiso con cómo lo dibujemos. Cada persona que venga con un hacha nueva, lo parte distinto. Hay un componente importante que está dada por la óptica, y no con la realidad. Queda como uno ve la realidad, más que la realidad.

Cuando un sistema es cerrado, si uno cambia una de las reglas, algo cambia, el sistema resultante es otro sistema, el anterior puede ser correcto, y el siguiente no serlo. Es decir, de ese sistema al sistema modificado, un cambio produce otro sistema, y el primero no tiene relación con el segundo, porque no tiene compromiso con la realidad, es una descripción.

Alejandro hace años que viene afirmando esta postura. Pero creo que le falta algún ejemplo, él ya está tan acostumbrado a transitar este argumento, que le parece claro. Pero el que enfrenta este tema por primera vez, sin saber hacia dónde se quiere llegar, o sin tener una referencia concreta de lo que se está hablando, se puede perder, o entenderlo de otra forma.

Ese método que estamos usando, siempre se compromete, como mucho, a definir la óptica que tenemos con la realidad, pero no está comprometida con la realidad.

Recordemos la experiencia de Alejandro con el sistema de simulación de locomotora. Ahí él armó un sistema, que era el reflejo de la realidad. Hacia ahí apunta el argumento, en parte. Para el que haya usado Smalltalk, también le parecerá algo conocido el camino al que quiere llegar Alejandro: armar el sistema usando el propio ambiente.

No ve a la implementación como una herramienta de percepción. Utiliza la cabeza para hacer los cortes, obtiene un sistema, y como un cambio en ese sistema, resulta en una vuelta atrás, no es utilizado para entender la realidad del sistema.

Cuando obtenemos un modelo, la codificación no es utilizada para entender la realidad que modelo.

Yo veo que gran parte de esta discusión, ya ha sido encarada por los propulsores del diseño dirigido por el modelo, Eric Evans a la cabeza. Aunque ellos no usarían siempre la computadora, sino el lenguaje ubicuo, y otras herramientas de comunicación con el usuario. Pero Alejandro apunta a armar el sistema en el ambiente.

Usamos representaciones, dibujos, pero no usamos la computadora. El sistema virtual que estamos generando, no tenga la posibilidad de utilizar de realimentarnos. es imposible tener experiencia.

Estoy hablando antes de ambiente. Le decimos a la gente, usa la computadora, pero nosotros no las usamos.

Podemos termina ahi, o podemos tratar de ver alternativas, y ver que es una consecuencia del método que estamos tomando. Tratemos de hacer explícita esa limitación.

Se invierte mucha energía en enseñar este método, este método de disectar, pero no queda tiempo para enseñar cuales son los límites del mismo. Mucha gente no tuvo la posibilidad de darse cuenta cuándo ese método no funciona.

No estoy diciendo de desecharlo, de tirar algo que da valor. No. Si yo dijera “tiremos eso, y les doy otra cosa X”, estoy cometiendo el mismo error, de darles que en cambio de “todo son objetos”, ahora es “todo son X”. Quiero motivarlos, para mostrar los límites. Porque sino la gente aplica las cosas rutinariamente, y luego trata de emparcharlas, con la inducción de sigamos siendo lo mismo.

Si hay un problema en lo que hiciste, escribiste mal esto, esto, arréglalo. Yo no me quedo tranquilo en hacer siempre lo mismo. Sin reflexionar sobre la realidad.

Nada mas difícil que un diseño para ver cuando hay una falla. Los intercisios no están escritos en ninguna parte. Son negados con pongamos mas objetos.

Post relacionados

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>