Hope (Blogtober2019)

por Fran Iglesias

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.

October 26, 2019

Etiquetas: blogtober19  

Temas

good-practices

php

refactoring

testing

tdd

python

blogtober19

design-principles

design-patterns

bdd

misc

legacy

dungeon

tips

tools

golang

ddd

bbdd

soft-skills

ruby

oop

javascript

books

api

sql

ethics

swift

java