No ha especificado su nivel de conocimiento y experiencia en ciencias de la computación, y qué tan profundamente tiene la intención de estudiar algoritmos, estructuras de datos e ingeniería de software, pero dado que preguntó sobre los tres en una pregunta, asumiré que está cerca Las primeras etapas de su aprendizaje. Python es un buen lenguaje para comenzar en los tres temas, pero tiene limitaciones para el estudio avanzado de cualquiera de ellos.
Con respecto a los algoritmos y las estructuras de datos, las estructuras de datos integradas y el sistema de objetos de Python son poderosos bloques de construcción para estructuras más sofisticadas. Sin embargo, en Python no es realmente posible construir esas estructuras de datos muy básicas. Además, algunas de las características que hacen que Python sea muy conveniente para principiantes y para una programación rápida hacen que sea imposible construir estructuras de datos realmente eficientes. Para tomar el ejemplo más importante, todos los valores en Python son objetos etiquetados en la memoria del montón recolectado, lo cual es muy conveniente pero hace que sea esencialmente imposible construir grandes estructuras de datos con buena memoria local. (Y si sospechas que eres un principiante, esa advertencia probablemente no tenga sentido para ti, pero el punto es que Python no es un gran lenguaje para aprender qué es una buena localidad de memoria o cómo se pueden diseñar estructuras de datos y algoritmos para lograrlo .)
Python también es un buen lenguaje para aprender algunos conceptos básicos de ingeniería de software. De hecho, uso Python en un curso de ingeniería de software de segundo año que desarrollé. Puede aprender a construir sistemas de forma incremental, a escribir recursos de prueba automáticos, a utilizar el control de versiones de manera efectiva, a factorizar la información dependiente del objetivo a partir de la información utilizada en todos los objetivos de implementación, y muchas otras cosas. Pero a medida que avance, seguramente también querrá aprender algunas cosas sobre ingeniería de software que se abordan mejor en un lenguaje que tenga un sistema de tipos más sofisticado, un paso de compilación o compilación distinto de la ejecución del programa y un mejor soporte para estructurar sistemas grandes . De hecho, realmente debería aprender a construir sistemas de software que comprendan piezas escritas en múltiples lenguajes de programación, trabajando juntas.
- ¿Cómo se ve el ciclo de vida de un proyecto de desarrollo integrado?
- ¿Por qué tanta gente en Quora hace preguntas sobre unirse a Microsoft y no a Apple a pesar de que los productos de Apple son superiores?
- ¿Por qué la industria del software empresarial considera la nube como el futuro, cuando ha sido la norma durante bastante tiempo?
- ¿Cómo se crea un software de simulación de ingeniería como Ansys o COMSOL Multiphysics?
- Quiero crear una API REST y usarla para mi aplicación móvil (recuperar datos simples). ¿Qué lenguaje y marco sería la mejor opción?
El mensaje básico es: Python es un lenguaje muy agradable para comenzar, pero no se limite a un lenguaje de programación. Me preocupa que haya preguntado si Python es un buen lenguaje para aprender algoritmos, estructuras de datos e ingeniería de software, como si fuera a usar un idioma para aprender todas esas cosas a la profundidad que las estudie. En su lugar, apunta a aprender más idiomas a medida que progreses.