Contexto personal: he estado aprendiendo C ++ formalmente los últimos 6 meses en la universidad. Antes de esto, incursioné en JavaScript durante un año. Ahora estoy considerando aprender Python durante un mes fuera de la escuela.
Al dividir mi enfoque temprano en el proceso de aprendizaje, ¿estoy degradando la eficiencia de mi aprendizaje? ¿Debo pasar el mes libre continuando en C ++? ¿O nunca es demasiado temprano para aprender un nuevo idioma?
programming-languages
learning
efficiency
Anticipación
fuente
fuente
Respuestas:
Mi experiencia con Python se limita a algunos códigos de reproducción solo un poco más complejos que hello world, por lo que esta no será una respuesta muy profunda para Python específicamente, pero puedo decirte esto:
Las diferencias entre los idiomas están en detalles como la sintaxis y ciertos detalles del lenguaje serán diferentes (como las diferentes formas en que se manejan los errores, las capacidades de E / S y cómo los compiladores convierten su entrada en algo ejecutable), pero C ++ y Python ofrecen lo mismo paradigmas, por lo que la resolución de problemas se puede hacer de la misma manera con ambos idiomas. Tanto C ++ como Python son Imperativos y Orientados a Objetos, por lo que probablemente aprenderá Python bastante rápido si se siente cómodo con C ++ una vez que haya dominado la nueva sintaxis utilizando técnicas de resolución de problemas que ha aprendido con C ++. Si lo desea, también puede usar Python para la programación funcional, pero nunca he tocado esa parte, por lo que no puedo decirle mucho al respecto.
¿Es muy temprano? Realmente no puedo contar tu historia en un sí o no definitivo. ¿Ya tiene la confianza suficiente para escribir aplicaciones completas (GUI) con C ++? (es decir, usar bibliotecas, características de lenguaje más complejas como genéricos y / o plantillas, etc.) Creo que aprender un nuevo paradigma de lenguaje es mucho más difícil que aprender un nuevo idioma en la misma familia de paradigmas. Cuando salgas al nuevo territorio paradigmático, tendrás que pasar mucho más tiempo para tener una buena idea de cómo resolver problemas con ese paradigma. Entre los lenguajes OO hay diferencias en cuanto a cómo se trata la herencia y cómo se pasan los datos en la memoria cuando pasa un parámetro / argumento a una función que afecta el rendimiento. Pero para comenzar, estos son generalmente de menor importancia al principio.
Supongo que si tiene la confianza suficiente con C ++ para hacer algo más que hola mundo de una manera elegante, está bien para el lanzamiento. Aprender muchos idiomas superficialmente lo ayudará a comprender ejemplos de código independientemente del idioma utilizado, pero crear su propio código requiere un poco más de comprensión de cómo funcionan los idiomas y cómo difieren entre sí.
PD: Cuando quiero aprender a usar un nuevo idioma de manera superficial, generalmente intentaré lo siguiente para tener una idea de la sintaxis del lenguaje y el funcionamiento superficial:
fuente
Bueno, por supuesto que lo es.
No hay dudas al respecto, a veces es demasiado pronto para aprender un nuevo lenguaje de programación.
El caso más simple es si sale un lenguaje el-stinko y antes de que alguien señale su inadecuación, al aprenderlo dañas tu cerebro. Una pareja que viene a la mente incluye BASIC, FORTH y APL.
Para un caso más complicado, uno de los grandes científicos de la computación ha descrito este problema, que muy brevemente es que la práctica hace permanente, y hay muchas disciplinas que deben aprenderse antes de aprender los lenguajes de computación para que el lenguaje no distorsione la comprensión más fundamental. . En sus palabras:
El oponente de simplemente sumergirse en la programación se llama Edsger Dijkstra y tuvo una carrera muy distinguida. Fue galardonado con el Premio ACM Turing con la siguiente cita:
El artículo donde critica el aprendizaje prematuro de lenguajes de programación es:
"Sobre la crueldad de la enseñanza de ciencias de la computación" http://www.cs.utexas.edu/users/EWD/ewd10xx/EWD1036.PDF
Además, por favor no me llames, solo soy el mensajero.
fuente
¿Es demasiado pronto para aprender un nuevo idioma?
Yo diría que sí. Si todavía está pensando en el concepto de que la computadora realmente podría hacer lo que le dice, entonces aprender un segundo idioma probablemente lo confundirá.
Pero si ya pasó el punto en el que se da cuenta de que la computadora hace exactamente lo que le dice, no importa cuán estúpido sea, entonces es probable que tenga una comprensión lo suficientemente razonable de su primer idioma que mirar un segundo (y un tercero !) el lenguaje no rompe tu enfoque.
fuente
¿No puedes hacer las dos cosas? Haría un proyecto en C ++ y aprendería partes de Python (solo porque es increíble), podrías resolver problemas en ProjectEuler.net usando Python
En general, creo que es una mala idea aprender un idioma, dejarlo y comenzar a aprender uno nuevo. Uno debe ser flexible trabajando con diferentes paradigmas en las primeras etapas. Pero eso es justo lo que pienso.
fuente
Para un programador en ejercicio, diría sin reservas que aprender un nuevo idioma casi nunca es una mala idea. Para un estudiante universitario, le recomendaría un poco de precaución, dependiendo de las clases que se aproximen. La razón es que, en un examen escolar, con frecuencia debe recitar detalles del idioma sin el beneficio de un entorno de compilación / ejecución que señalará fácilmente sus errores.
Especialmente cuando solo tienes unos pocos meses de experiencia, es muy fácil mezclar los detalles en tu mente. Si te importan tus calificaciones y estás tomando una clase con exámenes como ese, sería cuidadoso. En el mundo real, eso no es una preocupación.
editar : Originalmente dije sintaxis, pero los detalles no sintácticos son igual de importantes para los profesores, y hay muchos más de esos.
fuente
append()
vs.push_back()
para una lista, que es algo que incluso los programadores experimentados tienen que buscar si no han usado una determinada característica en un idioma determinado durante un tiempo. Ser capaz de recordar la sintaxis en el acto sin duda ayuda, pero para la gran mayoría de los trabajos nunca es necesario .