¿Es demasiado pronto para aprender un nuevo idioma? [cerrado]

11

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?

Anticipación
fuente
66
Si entiendes la programación en general, aprender nuevos idiomas debería ayudarte a convertirte en un mejor programador. Si eres nuevo en la programación y no has comprendido cosas como el control de flujo, los tipos de datos, las funciones / métodos, etc., entonces esperaría para aprender otros idiomas.
The Muffin Man
Me siento bastante cómodo en C ++ con todo lo que mencionaste.
Anticipación
1
Pondré su pregunta en perspectiva. En los primeros 6 meses de estar en una universidad, ya me habían presentado 5 lenguajes de programación diferentes. Ensamblaje (olvido la plataforma exacta de Moto que era), C, C ++, Visual Basic 6 y Java. Más tarde pasé a aprender Basic, C #, Visual Basic .NET, x86 Assembly. Después de la universidad, he aprendido al menos 5 lenguajes de programación adicionales en los primeros 2 años.
Ramhound
2
Si puede realizar varias tareas a la vez, priorizar y tener un enfoque disciplinado para el aprendizaje, entonces siga adelante y aprenda un segundo idioma. Por lo general, es mejor enfocarse y dominar el primer idioma. Sin embargo, también es importante aprender varios paradigmas de programación. Lea la sección de programación de los siguientes enlaces para ver lo que quiero decir: Lo que todo experto en informática debe saber y la Matriz de competencias del programador
Anthony

Respuestas:

8

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:

  • Hola mundo (Texto en pantalla)
  • Hola mundo escrito en un archivo (te enseña los conceptos básicos sobre E / S de archivo para ese idioma, y ​​muy a menudo también otros tipos de E / S)
  • Hacer algunos cálculos estándar con diferentes bases (10, hexadecimal, octal), tanto enteros como de coma flotante. (te enseña sobre truncamiento y notación de números)
  • Intente usar alguna biblioteca gráfica para mostrar hola mundo en un diálogo elegante. (le enseña a usar bibliotecas y código externo)
En ningún
fuente
Las observaciones finales en el último párrafo son excelentes. Si bien no estoy del todo listo para las aplicaciones completas en C ++, agradezco su argumento sobre la ampliación del alcance de lo que estoy familiarizado, incluso si es solo superficial.
Anticipación
6

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:

Las herramientas que utilizamos tienen una influencia profunda y tortuosa en nuestros hábitos de pensamiento y, por lo tanto, en nuestras habilidades de pensamiento.

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:

Por contribuciones fundamentales a la programación como un gran desafío intelectual; por insistencia elocuente y demostración práctica de que los programas deben estar compuestos correctamente, no solo depurados en la corrección; para iluminar la percepción de problemas en los fundamentos del diseño del programa.

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.

DesarrolladorDon
fuente
"Comencé con BASIC y he quedado marcado de por vida", ¿no es eso algo que refuta tu punto? Si te hubieran presentado otros lenguajes de programación desde el principio, ¿BASIC no habría tenido un impacto tan fuerte?
tdammers
Supongo que necesitaba un emoticón. Si ayuda, he eliminado esa oración.
DesarrolladorDon
3

¿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.

Joachim Sauer
fuente
2

¿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.

nischayn22
fuente
ProjectEuler.net se ve increíble! Gracias por la recomendación.
Anticipación
2

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.

Karl Bielefeldt
fuente
Si como estudiante no puede recordar las diferencias entre la sintaxis entre idiomas, tiene un problema. No siempre tendrá un compilador para verificar su sintaxis, hay algunas situaciones muy reales en este campo, donde debe poder recuperar la sintaxis en el acto.
Ramhound
No digo que sea imposible de recordar, solo que hace que sea mucho más difícil para un principiante. Las grandes diferencias sintácticas son bastante fáciles, pero los profesores pueden ser molestosamente quisquillosos con respecto a detalles como 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 .
Karl Bielefeldt