¿Cuándo debo aprender algoritmos? ¿Lo aprendo antes de aprender a programar o después?

Tienes que aprender antes de escribir el programa. Aprender algoritmos es lo primero que debe saber si desea escribir un código realmente bueno. Algoritmo no es nada el proceso paso a paso para resolver un problema.

Una vez que tenga el algoritmo, puede convertir el algoritmo escribiendo un programa.

En mi opinión, la mejor manera de aprender algoritmos es aprender un lenguaje de programación. Me refiero a los conceptos básicos del lenguaje de programación, digamos Java o C ++, y aprender un algoritmo de clasificación, digamos ordenar por combinación e intentar implementarlo utilizando C ++ o Java.

Introducción a los algoritmos: la búsqueda de Google es un buen libro para comenzar.

Estructuras de datos y algoritmos en C ++ es otro buen libro.

Para resumir la respuesta

  1. Aprende el algoritmo
  2. Aprenda los conceptos básicos de un lenguaje de programación: bucles, operadores, etc.
  3. Implementa el algoritmo en tu lenguaje de programación favorito.
  4. Comience de nuevo desde el paso 1.

¡Aclamaciones! 🙂

Parece que hay una idea errónea acerca de qué son los algoritmos.

En resumen, un algoritmo es un procedimiento para resolver un problema. Normalmente, los programas informáticos implementan algoritmos. (Ejemplo simple: calcule el impuesto sobre las ventas multiplicando el total por .o5; puede hacerlo en papel, con una calculadora, o escribir un programa para hacerlo).

El problema es que hay algoritmos básicos que las personas usan todo el tiempo, en todo tipo de situaciones (por ejemplo, búsqueda, clasificación). Por lo general, están integradas en un lenguaje, implementadas por una biblioteca estándar, o busca el Algoritmo en una referencia como Knuth. Sí, debes saber que existen y dónde encontrarlas, pero rara vez tienes que diseñarlas o codificarlas.

El trabajo real en ingeniería de software, o desarrollo, (NO programación), es en el desarrollo de algoritmos para resolver problemas específicos en dominios de aplicación específicos. (Por ejemplo, cómo averiguar la ruta y el horario de un camión de reparto, en base a una lista de direcciones). De nuevo, generalmente, hay una gran cantidad de técnica anterior (por ejemplo, muchos algoritmos para el “problema del vendedor ambulante”) – Pero normalmente tienes que ajustarlos y modificarlos. Y a veces, para los problemas realmente difíciles, estás abriendo nuevos caminos. (Y … la mayoría de las veces … no se trata de algoritmos, se trata de heurísticas : enfoques aproximados de este tipo de trabajo, a diferencia de los algoritmos de fórmulas. Algo gracioso: nunca escuchas esa palabra, pero el mundo real tiende a ser borroso). pocos problemas se prestan a soluciones algorítmicas de forma cerrada.)

El punto es que, a menos que esté escribiendo sistemas operativos o software del sistema, los algoritmos provienen del dominio del problema. Primero resuelves el problema, luego lo traduces en código. Si está escribiendo un software de análisis de datos generales: estudie estadísticas, aprenda algo de R, o tal vez solo MATLAB. Si está escribiendo software para analizar datos clínicos, estudie bioinformática. Si estás trabajando en el CERN, analizando la salida de los aceleradores de partículas, necesitas estudiar física. Y, en muchos casos, es posible que no necesite realmente saber cómo programar, simplemente puede estar escribiendo ecuaciones en MATLAB.

Aprendes algoritmos como parte del proceso de aprender a programar. La programación tiene que ver con la resolución de problemas . ¡La solución para resolver un problema de programación es un algoritmo! El algoritmo es lo que usted codifica usando el lenguaje de programación de su elección.

En general, crea sus propios algoritmos, pero hay muchos casos en que el problema que está tratando de resolver ya se resolvió de manera general, y dichos algoritmos se recopilan en libros de texto y de referencia. Hacer referencia a estos libros puede ahorrarle mucho tiempo y esfuerzo, y es por eso que debe estudiarlos. El ejemplo clásico de tales libros es “El arte de la programación de computadoras” de Donald Knuth (Addison-Wesley, 1968–2015).

Lo antes posible

A veces, los problemas realmente tienen un truco para ellos, puede requerir ordenar y luego calcular una matriz de diferencia en el resultado ordenado. Esto luego se usaría para realizar una solución de abajo hacia arriba con un criterio de actualización y soluciones memorizadas que se utilizarán para el siguiente lote de soluciones, evitando así los gastos generales y el cálculo. Corre y ve como va eso.

En general, el tiempo que se tarda en resolverlo realmente depende de si has visto el truco del problema, porque si lo has visto, un problema difícil se vuelve fácil.

Si está aprendiendo en su propio tiempo, tome ambos simultáneamente.
Los cursos de programación básica no requieren familiaridad previa con los algoritmos o la complejidad computacional (que también suele estar cubierta en los cursos y la literatura relevantes), y los cursos de algoritmos no dependen de un extenso conocimiento de programación previa.
Si está preguntando sobre estudios reales, debe verificar cuál es el programa para su curso de algoritmos: los ejercicios y el trabajo de laboratorio requieren algunos conocimientos básicos de programación.