Mi compañera y manager en Holaluz Mavi Jiménez va a hacer un dibujo cada día del mes sobre una palabra propuesta en twitter. Y aquí vamos a intentar escribir un post por cada una de ellas.
Hope
Hope es el nombre de una de las aplicaciones internas de Holaluz. Viene del episodio IV de Star Wars, lo cual debería indicarte que el frikismo es fuerte en el equipo a la hora de poner nombres a los proyectos.
En realidad casi diría demasiado fuerte. En general, tenemos bastante cuidado con el naming de las cosas, pero no en los nombres de los proyectos, que suelen contener alguna referencia bastante friki, hasta el punto de que puede resultar complicado orientarse en este pequeño bosque sin una guía de superhéroes, juegos de ordenador y otras fuentes.
En muchos sentidos la programación es Lingüística. Domain Driven Design, por ejemplo, se basa en trabajar a partir de la construcción de un lenguaje común entre desarrolladores y expertos de dominio, y que debe usarse en todo lo relacionado con el proyecto, ya sea código o documentación, dirigiendo e informando todas las decisiones de diseño. La consecuencia de esto es que las estructuras de datos que almacenan el estado están subordinadas a la representación de los conceptos y sus relaciones a través, principalmente, de mensajes.
Históricamente hablando, el paradigma de programación orientada a objetos tiene un marcado carácter lingüístico. De hecho, Alan Kay, uno de sus fundadores, lamentaría haberlo llamado en primer lugar “orientada a objetos”, porque en realidad quería poner el énfasis en los “mensajes” con que esos objetos se comunican para realizar tareas. Como se explica en esta conversación los objetos ya existían en el lenguaje Simula (de 1962), pero el enfoque OOP en el sentido de “orientado a mensajes” se introdujo en SmallTalk (Talk, ¿a qué te suena?) creado en el mítico Xerox PARC en los años 70.
Nota: Se podría hacer un blogtober solo hablando de todas las cosas importantes que tuvieron origen en este centro de investigación y que han dado forma a la informática que conocemos hoy.
Lo que interesa resaltar es que esta concepción se oponía, y se opone, a la visión que podríamos considerar más matematicista de la informática en la que la centralidad pertenece a las estructuras de datos, que en el caso de la OOP pone énfasis en los objetos y no tanto en su comunicación.
Un programa, desde este punto de vista, es un pequeño universo de objetos actores que son expertos en hacer ciertas cosas y con los que nos comunicamos, y se comunican entre sí, enviando mensajes.
Esta perspectiva me parece fascinante y la percibo en la base de muchas ideas que manejamos actualmente, aunque no siempre con total acierto. No solo en paradigmas como el Domain Driven Design, sino en áreas como los patrones de diseño, los sistemas de mensajería e incluso los refactors orientados a ocultar las estructuras de datos y potenciar el comportamiento de los objetos.