La Sombra de Dijkstra

Sobre el arte y la práctica de la programación

Entre Algoritmos Y Patrones

| Comentarios

La mayor parte de los programadores corporativos del mundo tienen un rutinario trabajo que se puede super simplificar en uno de estos dos modelos:

  • Transaccional: crear un formulario y copiar los datos ingresados a través de este a una base de datos.

  • Batch: leer o escribir archivos desde o hacia una base de datos.

Niklaus Wirth expresó una famosa ecuación como título a uno de sus libros:

 Algoritmos + Estructuras de Datos = Programas

Eso puede haber sido cierto en 1976, pero ¿sigue siéndolo aún en el siglo XXI?

Hemos evolucionado mucho en un desarrollo espiral, para un observador poco atento pareciera que la computación se moviera como un péndulo, van de un paradigma al opuesto y vuelven, pero yo no creo que sea así, con cada ciclo aprendemos algo y lo incorporamos.

Sin embargo hay que reconocer que hay mucho de re inventar la rueda, muy poco de investigación profunda, la urgencia por resolver el problema lleva a muchos a rehacer una solución que ya existía, y con peor desempeño muchas veces.

En su discurso de recepción del premio Turing de 1968 Richard Hamming dijo lo siguiente:

Whereas Newton could say, “If I have seen a little farther than others, it is because I have stood on the shoulders of giants,” I am forced to say, “Today we stand on each other’s feet.” Perhaps the central problem we face in all of computer science is how we are to get to the situation where we build on top of the work of others rather than redoing so much of it in a trivially different way.

Mientras que Newton podía decir, “Si he visto más lejos que otros, es porque me paré sobre hombros de gigantes¨, yo estoy forzado a decir, “Hoy en día nos paramos sobre los pies de los otros”. Quizás el problema principal que enfrentamos en toda la ciencia de la computación es cómo llegaremos a la situación donde construyamos sobre el trabajo de otros más que rehaciendo tanto de aquello de una forma trivialmente diferente.

Así que ahí está el desafío de todo gran programador, construir a partir de lo que ya existe, no reinventar la rueda para que le salga cuadrada ;).

Nos movemos entre algoritmos y patrones de diseño, estamos llamados a innovar a partir de las herramientas básicas de nuestra profesión y a partir del trabajo previo de quienes nos precedieron. Domina los algoritmos, estudia los patrones, conoce tus frameworks, sus fortalezas, sus limitaciones, juega en el área chica, donde se aplican esos conocimientos para crear una solución a un problema, o una gran innovación. Pero preocúpate de aprender de los que estuvieron antes que tú en este mundo, no seas tan soberbio, la rueda te puede salir cuadrada.

Off Topic: queda una semana para el cierre del desafío Julio Agosto, espero sus respuestas…

Comentarios