viernes, 3 de febrero de 2012

La importancia de los "Algoritmos".

No sabía por donde empezar así que utilizaré el concepto del libro "Introduction to Algorithms" cuyos autores son Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest y Clifford Stein, más conocido como el "CLRS" por las iniciales de sus autores. En este libro nos dicen que "un algoritmo es un procedimiento computacional bien definido que toma algún valor, o conjunto de valores, como entrada y produce algún valor, o conjunto de valores, como salida. Un algoritmo es en consecuencia una secuencia de pasos computacionales que transforman la entrada en salida".

Antes que los lenguajes de programacion
se crearan todo era programado en base
de 0's y 1's.
Los algoritmos son muy importantes a la hora de programar ya que son los pasos exactos para resolver un problema. Esto quiere decir que es un procedimiento computacional bien definido que requiere de datos de entrada y produce un valor como salida.

Hoy en día existen muchos algoritmos ya diseñados pero esto no quiere decir que no podamos crear los nuestros mas optimizados, más rápidos, para resolver un problema comunes como los algoritmos de ordenamiento: Selección, Burbuja, Merge, entre otros. Cuando necesitemos utilizar algunos de estos algoritmos tenemos que saber cual implementar en nuestro software, ya que si elegimos el incorrecto nuestro software puede ser inestable e ineficiente.

"Si usted es rico, y no conoce mucho sobre algoritmos, tal vez no esté preparado para competir con alguien pobre que sepa mucho sobre algoritmos."

En la vida cotidiana, se emplean algoritmos frecuentemente para resolver problemas. Algunos ejemplos son los manuales de usuario, que muestran algoritmos para usar un aparato, o las instrucciones que recibe un trabajador por parte de su patrón. Algunos ejemplos en matemática son el algoritmo de la división para calcular el cociente de dos números, el algoritmo de Euclides para obtener el máximo común divisor de dos enteros positivos, o el método de Gauss para resolver un sistema lineal de ecuaciones.


Cuando se habla de eficiencia, se hace referencia a la velocidad del procesador, uso de memoria y entra/salida al disco duro. Esto quiere decir que un algoritmo es eficiente si el tiempo de ejecución es mínimo y requiere poco espacio en memoria.


Los términos "programación" y "computación" son mal empleados en el contexto de nuestra realidad educativa ya que en nuestro país recién está naciendo la carrera llamada "Ciencias de la Computación".

Se confunde a la "programación" con la "ingeniería del software", esta última tiene que ver con el análisis y desarrollo de proyectos de software, de ahí vienen los términos "desarrollador" y "analista de sistemas". Programar no es lo mismo que desarrollar, ser "programador" es diferente de ser "desarrollador" y "analista", nunca utilizaras por ejemplo UML en un concurso de programación. Los programadores hoy en día conocen de "Ingenieria del Software", pero es raro ver que un "Analista" conozca de algorítmica. Para el Analista si lo que necesita no está en el Software de Aplicación que usa simplemente no lo implementará.

Computación es un término que deriva del latín "computare" que significa contar o calcular haciendo uso de los números, así que tampoco hay que confundir el estudio de programas que pertenecen al "Software de Sistema, de Aplicación y Utilitarios" con la Teoría de la Computación. Por ejemplo al estudiar Word no estás estudiando computación, es un "Software de Aplicación"  lo que realmente estás aprendiendo a utilizar.

Gastate los dedos creando o buscando unos ya hechos.
Los algoritmos están presentes en todo lo que haces, son esos amigos invisibles que están ahí, aunque no notes su presencia están en cada aliento y suspiro de tu vida.Se ha realizado un experimento para comparar el algoritmo de ordenamiento QuickSort con el de Inserción. El algoritmo QuickSort se implemento en una computadora Intel 486 y el algoritmo de Inserción en una IBM SP2.


El experimento anterior demostró que una computadora rápida con un algoritmo inferior puede desempeñarse peor que una computadora lenta con un algoritmo superior. En otras palabras, si usted es rico, y no conoce mucho sobre algoritmos, tal vez no esté preparado para competir con alguien pobre que sepa mucho sobre algoritmos.

6 comentarios:

  1. muy interesante !! ni siquiera sabia que existian estas cosas!!

    ResponderEliminar
  2. pues poco a poco se aprende gracias por ayudarnos es muy interesate...!!!

    ResponderEliminar
  3. Pendientes con mas info. sobre como utilizarlos en la vida diaria.

    ResponderEliminar
  4. Busco a un programador senior experto en algoritmos complejos (Google, Yahoo,)

    ResponderEliminar