martes, 20 de enero de 2015

Algoritmia, el mapa de un pensador.



Un algoritmo, es el mapa de una estrategia.

Cuando ojeamos una receta de cocina, cuando cocinamos, cuando leemos unas instrucciones y cuando las seguimos, cuando seguimos direcciones en un mapa o de un navegador GPS, cuando hacemos operaciones matemáticas, cuando trabajamos, cuando hacemos la compra, cuando ordenamos nuestro cuarto e incluso cuando lavamos los platos. Los seres vivos, hacemos uso de algoritmos en todo momento, seamos o no conscientes de ello. Cuando vamos a realizar un acto, y encontramos un problema, pensamos opciones y elegimos la que creemos mas correcta, y eso es un algoritmo.
Según el diccionario de la Real Academia Española:
"Conjunto ordenado y finito de operaciones que permite hallar la solución de un problema."

Y es que en eso consiste. Cuando seguimos una receta de cocina, no hacemos un algoritmo, si no que seguimos uno en concreto. El cocinero que las anotó, si era un postre debía pensar:

Problemas: Quiero un postre nuevo, dulce, pero no demasiado. Quiero que sea sano, rápido y sencillo.
Algoritmo: Para que sea dulce, tendrá que llevar Azúcar, Sacarina o Sacarosa. Para que sea mas sano, tendrá que llevar fruta para substituir otros componentes. Para que sea rápido y sencillo, no tendrá que tener muchos ingredientes.


Cuando un programador se dispone a crear una nueva aplicación, el proceso es exactamente el mismo:
  • ¿Cual es mi problema?
  • ¿Que necesito?
  • ¿Cuales son mis opciones?
  • ¿Cual es la que yo creo mas adecuada?
  • ¿Obtuve un resultado óptimo?
    • No: Vuelve a empezar
    • Si: Perfecto, hemos terminado.

Pero a diferencia de los que hemos visto en las anteriores imagenes, y de los ejemplos que les he puesto para facilitar la comprensión de los mismos, un algoritmo puede llegar a ser muy extenso y complejo, incluso hay algoritmos que basan su funcionamiento en el uso de decenas de sub-algoritmos asociados a uno principal.

Pequeño ejemplo, de un algoritmo mas complejo.

Realmente, es difícil saber si tu algoritmo es el mas indicado, puesto que siempre existe la posibilidad de resolver un problema mediante otra metodologia. La tarea del programador, consiste en pensar la mejor de ellas, y llevarla a cabo para que el usuario final, pueda tener una solución a un problema.

Hay muchos tipos de programadores, los cuales a mi, personalmente, me gusta clasificar como:
  • Programador estratégico: Es el que se dedica principalmente a pensar ideas para nuevos proyectos y algoritmos para los mismos.
  • Programador masivo: Es el que se dedica principalmente a escribir código en masa, en base al algoritmo proporcionado por un Programador Estratégico.
  • Programador científico: Es el que se dedica principalmente a desarrollar los mecanismos internos de un algoritmo. Sus operaciones matemáticas, sus matices en base a la física y la inteligencia artificial.
Obviamente, no se necesita un equipo entero para desarrollar una aplicación, puesto que una sola persona puede cubrir los tres puestos en un proyecto, pero en mi opinión, trabajes en equipo o trabajes en solitario, es bueno saber que tipo de programador eres, quieres ser o te consideras tu mismo.

Yo, me considero un programador estratégico. Espero que esta entrada, haya sido de tu agrado, y estaré encantado de resolver cualquier tipo de duda.

- Atentamente, Chaarlis Me.