Haremos una introducción a la computación desde la escuela de Smalltalk, siguiendo la idea de genealogías difractivas de Janeke Adema en Living Books, que rehistorizan la computación alejándola de unos orígenes púramente militarista y de postguerra.
Iniciado en los 70’s con el grupo de Xerox Palo Alto Ver Smalltalk en la Wikipedia
Según Alan Kay, la computación tiene una definición recursiva: un computador está hecho computadores más pequeños que se envían mensajes entre sí.
Computación: definición recursiva tldraw.
En ese sentido, él afirmaba que la computación tiene símiles:
Continuando la métáfora de las células, la idea es que se puede modelar complejidad a través de la agregación de unidades más sencillas: las células conforman tejidos, que conforman órganos, que conforman tejidos, que conforman cuerpos.
Para más información hay un par de charlas interesantes de Anjana Vakil
Anjana Vakil - Oops! OOP’s not what I thought | Øredev 2018
Object Oriented Programming is not what I thought - Talk by Anjana Vakil
Para una historia larga y difractiva de la computación, en particular de Smalltalk puede encontrarse en la tesis doctoral de filosofía Tracing the Dynabook, James W. Maxwell
Alan Kay dice que, desafortunadamente, cuando el ayudó a nombrar la Programación Orientada a Objetos, eligió un mal nombre, pues debió ser Programación Orientada a Mensajes, pues los objetos son una idea menor y lo clave son los mensajes.
Intro a los objetos:
Tenemos varios mecanismos para modelar la complejidad, entre ellos composición y herencia.
Para ambos usamos las clases:
Clases: Organizan un discurso del mundo a través de la contenencia.
Mensaje: qué le pido a un objeto.
Método: cómo implemento lo que pido.
Un listado de mensajes, subrayados en rosado.
Al cliquear en el triangulito, podemos ver el método.
Si queremos modelar objetos complejos, tenemos que tener cierta familiaridad con los objetos preexistentes, pues en Smalltalk, a diferencia de la mayoría de lenguajes y entornos de programación, no tomamos texto que luego convertimos en un sistema de cómputo (como en Python, C/C++, Lua, Nim), sino que tomamos un entorno de computo preexistente y lo vamos modificando hasta que lo convertimos en el entorno que queremos. Saber qué viene incluido y cómo explorar el entorno preexistente nos ayuda en ese tránsito.
Son objetos con los cuales creamos más objetos. Entres los tipos básicos
Cuando computamos, son importantes dos cosas:
Los mensajes tienen tres tipos:
Del tipo objeto mensaje
'anita lava la tina' reversed
3 factorial
Del tipo objeto operador argumento
1 + 2
1
+
2
'estamos ' , 'locos!'
estamos
,
locos!
De la forma:
receptor keyword!: arg1 {keword2: arg2}
3 between: 2 and: 5
between: and:
2 y 5