¿Debo aprender algoritmos y estructuras de datos de cada lenguaje de programación?

No.

Las estructuras de datos y los algoritmos son independientes del lenguaje de programación (es decir, puede codificar una estructura de datos de árbol en C o Java o Python, etc.)

Aquí están mis pasos de preparación recomendados:

Fundamentos sólidos: puede utilizar Introducción a los algoritmos de Cormen. Concéntrese en estos capítulos:

  • Clasificación
  • Pilas y colas
  • Árboles (puede evitar AVL, árboles rojo-negros)
  • Gráficos
  • Programas dinámicos y codiciosos.

Ensuciarse las manos: no solo mire algoritmos. Debe elegir un lenguaje de programación con el que se sienta cómodo y comenzar a escribir código usando un IDE (por ejemplo, Eclipse) para ese idioma. Asegúrese de poder escribir código que maneje con éxito todos los casos de esquina. Con el tiempo, desarrollará la capacidad de simular código mentalmente para que pueda detectar intuitivamente errores en él.

Practique la programación competitiva: resuelva los desafíos de programación. Puede registrarse en varios sitios web de programación competitivos. Ver ¿Cuáles son algunos buenos sitios de competencia / práctica de codificación? para una buena lista de dichos sitios web.

¡Todo lo mejor!

No necesita aprender algoritmos y estructuras de datos de cada lenguaje de programación.

  1. Debe aprender en el idioma que prefiera y que utilizará para el desarrollo.
  2. Es más importante comprender la idea y la lógica detrás del algoritmo. Una vez que sepas entender eso, entonces deberías poder convertirlo a código en el idioma con el que te sientas cómodo. Esencialmente, la mayoría de las estructuras de datos son similares en la mayoría de los lenguajes como C, C ++, Java, etc.

Consulte mi respuesta similar aquí:

La respuesta de Venessa Wilson a ¿Es mejor aprender estructuras de datos y algoritmos en C ++ o Java?

No tengo tanta experiencia, pero en mi opinión no. La idea es la misma en todos los idiomas, solo depende de la sintaxis de cómo la va a escribir. La razón por la que lo creo es porque mucha gente escribe pseudocódigo al explicar algoritmos o estructuras de datos. No te dicen en Java que tienes que hacer esto y aquello, mientras que en C ++ tienes que hacer esto y aquello. En general, le dicen cómo funciona el código, en cualquier idioma.

No sé si otras personas están de acuerdo conmigo, pero me gusta implementar algunos algoritmos y estructuras de datos cuando empiezo a aprender un nuevo idioma. Para mí, esa es la mejor manera de practicar.

Si está aprendiendo algoritmos y estructuras de datos correctamente, el lenguaje de programación no debería importar: las estructuras de datos y los algoritmos no están limitados por un lenguaje de programación, y más aún, una idea que se puede implementar en cualquier lenguaje de programación. Los lenguajes como Java y C ++ tienen estructuras de datos integradas para mayor comodidad, pero esas no son las únicas estructuras de datos disponibles. También puede codificar esas estructuras usted mismo.

Realmente no.

Los mejores programadores que conozco son los que pueden captar conceptos muy rápidamente. No dependen de su conocimiento de un lenguaje de programación.

Los algoritmos y las estructuras de datos son completamente independientes de los lenguajes de programación. Puede escribir casi cualquier algoritmo en un lenguaje completo turing [1].

Siempre puede buscar la sintaxis para un lenguaje de programación, pero necesita conocer los algoritmos de antemano para poder tomar la decisión correcta sobre qué solución elegir [2].

Notas al pie

[1] Integridad de Turing – Wikipedia

[2] ¿Por qué cada programador debería aprender a optimizar algoritmos?

Es más como aprender un algoritmo y una estructura de datos y luego aplicarlos a diferentes idiomas y no al revés