miércoles, 6 de junio de 2007

Números y objetos

Ayer estuve ayudando a mi hija mayor con unos problemas de matemática. Un problema decía algo así: "Tenes 398 estampillas y queres repartirlas en páginas de 9 estampillas cada una. ¿Cúantas páginas se necesitan? ¿Cúantos espacios libres quedan?"
(Si se preguntan que tiene que ver esto con modelar usando objetos, aguanten un poco)
Por suerta ella se dio cuanta que tenía que dividir, hasta ahí todo bien, pero no pudo responder bien cuantos espacios libres quedaban. ¿Por qué? porque no interpretaba que el resto de la división (o sea, el número 2) representaba 2 estampillas y no 2 páginas, como había pensado en primera instancia.
Hoy cuando venía para el trabajo me saltó a la cabeza el motivo por el cual creamos el modelo de Medidas, que hicimos público bajo en nombre de Aconcagua. El motivo se debía principalmente a que nos dimos cuenta que los números "no tienen significado", son "símbolos abstractos" a los cuales el ser humano, según el contexto, les da un significado. La manera de hacer explícito dicho significado es "adosando" a cada número una palabra (o unidad como comunmente lo conocemos).
Por lo tanto, si a mi hija le hubiesen enseñado a dividir usando "numeros con unidades" y no solo números, creo que hubiese entendido que el resto no eran páginas sino estampillas. Esto significa que en vez de hacer "398/9", debería haber hecho "398 estampillas/9 estampillas/página". De esta manera está claro que el resultado (cociente) son páginas (se simplifica estampillas del numerador con estampillas de denominador y queda página) y el resto estampillas.
Lo curioso de esto es que ella sabía que tenía que hacer "398/9" (¿quizá de memoria?), pero al escribir esta división solo con números perdió por completo el significado de estos, por lo tanto no interpretó que le sobraban estampillas y no páginas.
¿Qué tiene que ver esto con computación y objetos?. Bueno, si un ser humano puede "olvidar" el significado de un número, imaginensé una computadora que no interpreta más allá del contexto que le provee el programa.
Este es el error típico que se encuentra en todo sistema bancario, financiero, etc. donde se mezclan dolares con pesos, pesos con euros, bonos con acciones, etc. El error (haciendo una analogía con el problema que tenía que resolver mi hija) es que seguramente el modelo que hagamos (programa) utilizará el objeto "398" para representar el ente de la realidad "398 estampillas", y no el objeto "398 estampillas" para representar dicho ente (No se confundan con que el ente de la realidad "398 estampillas" se escribe igual que el objeto "398 estampillas". El primero "vive" en la realidad, el segundo en el modelo, en la simulación, por ende lo representa. Son dos entes distintos).
Esto implica que el programa (o sea lo objetos) perdieron toda información sobre qué significa ese objeto "398" y solo saben que es un número. El que tiene esa información, ese conocimiento, es el programador, en su cabeza (cuando hizo el programa, seguramente luego se olvidará), pero como todos sabemos los programadores se equivocan como todo ser humano y por lo tanto no faltará mucho para que alguno interprete que sobraron 2 páginas o que se puede sumar 3 dólares con 4 pesos, puesto que seguramente esto será resuelto sumando 3 y 4 en vez de "3 dólares" y "4 pesos".
En fin, ahora entiendo por qué los programadores tenemos la costumbre de utilizar solamente números: ¡¡¡ASI NOS ENSEÑARON!!!

Comentario sobre Aconcagua: Básicamente modela lo que llamamos Medidas (que es un nombre que le queda chico a lo que realmente representa pero por ahora no importa). Una medida es por lo tanto un objeto compuesto por una cantidad y una unidad como por ejemplo: "3 dólares", "398 estampillas", "4 horas", etc. Ahora lo interesante de las medidas es su comportamiento y es que se las puede operar aritméticamente como cualquier número y con cualquier otra medida o número. Por ejemplo, se puede hacer "10 metros * 10 metros" que dará "100 metrosCuadrados", o "398 estampillas / (9 estampillas/1 página)" lo que dara "44.22 páginas". Nos salvo de muchos problemas, puesto que le pasamos EL PROBLEMA a la computadora.

5 comentarios:

Unknown dijo...

El problema que le presentaron a tu hija implicaba un manejo de los diferentes sentidos de la división bastante complicado. No era un problema de reparto común, sino de partición y además exigía analizar el resto (en este caso: cuánto le faltaba al resto para llegar a 9-divisor-). Más allá de esto, desde el enfoque que se está enseñando matemática, se le está pidiendo a los chicos continua reflexión de lo que hacen para evitar esa clase de errores, por ejemplo "¿suena lógico sumar libros con bananas? ¿Qué obtenés de resultado, libro-banana?" No ocurre lo mismo con los objetos que se pueden agrupar en las mismas categoría, si sumo 3 peras y 4 bananas puedo obtener de resultado 7 frutas. Y así puedo seguir dando infinitos ejemplos sobre cómo se intenta hacer reflexionar a los chicos sobre las operaciones que realizan y especialemente sobre las respuestas que no son "sólo" números. Ahora bien, que estos clásicos errores también los cometa una máquina y que además haya gente como ustedes diseñando programas o lo que sea para que no ocurra, es realmente interesante. Ustedes hagan "pensar" a los aporatos y yo me encargaré de enseñar a "pensar" a mis alumnos.
Me gustó la analogía del artículo!!

Chiara dijo...

Muy bueno el post. Yo también soy (o intento ser) informático y algo de docencia hago (siempre en informática).
Me interesó el ejemplo que dio Ana:
3 peras + 4 bananas = 7 frutas
Acá obviamente hay una combinación entre las medidas: ¿peras + bananas = frutas?
En todo caso depende mucho de en que medida quiero mi resultado y con esto se podría jugar mucho:
Si quiero peras:
3 peras + 4 bananas = 3 peras

Si quiero bananas:
3 peras + 4 bananas = 4 bananas

Si quiero manzanas:
3 peras + 4 bananas = 0 manzanas

Aconcagua da esta funcionalida?, es algo piola para jugar un rato, y como comentabas con las medidas monetarias, lograr aplicacion y utilidad real.

Hernan Wilkinson dijo...

Que tal Ani, me alegro que estén dándole importancia a estas cosas en la enseñanza ahora, no recuerdo que se haya hecho cuando yo era pibe (solo uno 95 años atras jaja!).
Ahora, más allá de que le recuerden todo el tiempo este tema a los chicos, ¿no sería bueno hacerlo explícito?. Con explícito me refiero a que lo escriban como lo deberían pensar, que no escriban solo los números y les quede en la cabeza que significa. ¿Podría ayudar en algo? ¿Habrá alguien que ya lo intentó?

Hernan Wilkinson dijo...

Que tal Chiara, si, Aconcagua maneja este tipo de cosas que preguntas. En Aconcagua es posible sumar "medidas" de unidades que pertencen a "sistemas de mediciones" distintos. Por ejemplo, podes sumar 3 peras y 4 bananas y te devolverá un objeto que representa "3 peras + 4 bananas". Por lo tanto si a dicho objeto le pedis cuantas peras tenes, te devuelve 3 peras, si le pedis cuantas bananas te devuelve 4 bananas y si le pedis cuantas manzanas te dice que no tien ninguna manzana. Lo interesante de este objeto (que llamamos MeasureBag) es que lo podes seguir operando aritméticamente, por ejemplo podes multiplicarlo por 3, en cuyo caso obtendrías "9 peras + 12 bananas" o restarle "4 bananas" y te quedarías únicamente con las "3 peras".
Respecto de la aplicación real, te comento que nosotros usamos este modelo en el sistema financiero que desarrollamos con muy buen resultado. Justamente nos permitió evitar mezclar dólares y pesos, un error muy común cuando se programa este tipo de sistemas.

Unknown dijo...

Volviendo a lo de las peras y bananas...jeje. Generalmente a los chicos que poseen más dificultades en Matemática son a los que se les promueve que no escriban "sólo números" sino a qué se están refiriendo esos números. Y eso los ayuda a entender por qué hacen lo que hacen.