¿Es una mala idea usar Python para aprender algoritmos y programación competitiva?

No, no es una mala idea aprender algoritmos mientras usa Python. Sin embargo, tiene algunas ventajas y desventajas sobre el uso de lenguajes de programación de nivel inferior, como C ++.

Una de las ventajas es que el lenguaje es muy simple y puedes enfocarte únicamente en los algoritmos mientras practicas. Con C ++ a menudo puede sentir que está luchando con la sintaxis del lenguaje en lugar de mejorar las habilidades de programación competitivas.

Otra ventaja es que durante las entrevistas de trabajo, en un tiempo limitado y bajo la presión, es mucho más fácil codificar en Python que los lenguajes estáticamente escritos como C ++. Por lo tanto, al practicar sus habilidades de algoritmo en Python y al elegir ese idioma durante la entrevista, maximizará sus posibilidades de obtener las ofertas.

Por otro lado, dado que C ++ es un lenguaje de programación de nivel inferior con tipos estáticos, comprenderá cómo funcionan las cosas mucho mejor. Debes ser extremadamente cuidadoso con Python, para que entiendas lo que sucede detrás de escena. Por ejemplo, debe saber que los mapas y conjuntos de Python se implementan con tablas hash y debe comprender las consecuencias de eso. Debe saber cómo se implementan las listas y otros contenedores y comprender los tiempos de ejecución de las diferentes operaciones en estas colecciones. Tienes la idea.

Otra desventaja es que si alguna vez necesita usar algunos algoritmos inteligentes para minimizar el consumo de memoria y tiempo, nunca podrá lograr los buenos resultados prácticos en Python. Esto se debe a que Python es increíblemente lento y consume demasiada memoria. Entonces, al usar lenguajes de programación de bajo nivel como C ++, obtendrá resultados mucho mejores en las competiciones en línea.

En resumen, no diría que es una mala idea. Simplemente tiene algunas ventajas y desventajas y debe optimizar para sus necesidades. En general, aprender un segundo lenguaje de programación no será un gran problema en comparación con pulir sus habilidades de algoritmo después. Entonces no es una decisión muy importante.

Creo que Python es perfecto para APRENDER algoritmos. Le ayuda a centrarse en algoritmos en lugar de dificultades y peculiaridades aleatorias del lenguaje en sí.

Pero no es mi primera opción cuando absolutamente necesito velocidad en la implementación de algoritmos recientemente desarrollados. Python (o Cpython) no es conocido por su velocidad. De hecho, casi todos los módulos de Python populares para computación científica se escriben en C y se empaquetan para Python.

Pero (nuevamente) si combina de manera inteligente algoritmos bien optimizados que ya se han implementado y están disponibles como módulos de Python (o incluso bibliotecas C), para resolver su problema, no hay razón para que no aproveche Python. El tiempo que ahorró en armar las cosas, tal vez días / horas, bien vale la pequeña pérdida de tiempo en la ejecución del programa.

No es una mala idea aprender o implementar algoritmos en Python. Thomas H. Cormen, por ejemplo, lo usa.
Sin embargo, Python no es la mejor opción para la programación competitiva en general. C ++ es el lenguaje más recomendado para eso, y el más común entre competidores de alta calificación, seguido de Java.

La respuesta de Thomas Cormen a Como principiante, ¿cuál es el mejor lenguaje de programación para usar con la Introducción a los algoritmos de Thomas Cormen? ¿Python es suficiente o es mejor un lenguaje de nivel inferior como C o Java?
Calificación – Codeforces

Si está aprendiendo algoritmos para usarlos en problemas de programación competitivos, le sugiero que los aprenda e implemente en el lenguaje en el que va a resolver los problemas.

Usar python para aprender algoritmos es una buena idea en realidad. La sintaxis simple de Python hace que sea muy fácil implementar el algoritmo y comprender lo que está sucediendo. A veces es tan simple como el pseudocódigo en sí.

Para la programación competitiva se está utilizando Python, pero en una escala relativamente más pequeña que otros lenguajes mucho más rápidos como C / C ++, Java, etc. Estos lenguajes son aceptados en casi todas partes para la programación competitiva y los programadores tienden a preferir estos lenguajes sobre Python principalmente porque son mucho más rápidos y por lo tanto más adecuado para la programación competitiva.

Los algoritmos / programación competitiva no están relacionados con ningún lenguaje de programación específico.

De hecho, la mayoría de los curadores de problemas (creadores de preguntas de algoritmos) usan Python, que puede verse en las editoriales del desafío / problema, si tienen uno.

Aunque Google prefiere C ++ y Java, no dirán que no si eres un experto en Python, según ellos, si eres bueno en la resolución de problemas / algoritmos.

Serías un muy buen programador si te enfocas más en los algoritmos y la resolución de problemas, que en pensar qué lenguaje es adecuado.

El lenguaje no importaría mucho en la programación competitiva, ya que el código que escribes no se reutilizará en ningún lado, ni servirá a gran escala.

Pensamientos como estos, qué idioma elegir, qué herramienta usar … provoca un tumor en el que no se dará cuenta rápidamente. Adelante con lo que te sientas cómodo.

Puedes aprender algoritmos con cualquier lenguaje de programación; Python es tan bueno como cualquiera.

Nunca vi el punto en la programación competitiva, pero Python probablemente también funcione para eso. Mientras esté aprendiendo y escribiendo solo pequeños programas para su propio uso, cualquier idioma servirá.

Una vez que comience a programar profesionalmente, querrá conocer muchos idiomas diferentes para poder tomar buenas decisiones entre ellos, así que no se limite a uno solo.

No, no es una mala idea usar Python. Python es un lenguaje agradable y puedes codificar algoritmos al usarlo.