Como estudiante de ingeniería y programador aficionado con varios años de experiencia, ¿es más beneficioso concentrar todo mi esfuerzo en dominar un lenguaje de programación (es decir, Python o JavaScript) o dividir mi tiempo y esfuerzo para aumentar la familiaridad con varios idiomas?

Los conceptos son generalmente más importantes que los idiomas. Aconsejaría a la mayoría de las personas que encuentren un idioma que tenga bibliotecas excelentes y maduras para lo que sea que les interese, ya sea gráficos por computadora, electrónica / computación integrada, matemáticas / estadísticas, etc., y que se enfoquen en dominar este idioma, dominar esas bibliotecas y, sobre todo sobre el aprendizaje de los conceptos más importantes de la programación de computadoras (especialmente estructuras de datos, algoritmos y algunas ideas sobre cómo organizar programas más grandes) y de su campo de interés. Para alguien más interesado en escribir software útil para una aplicación particular, que en la programación por el bien de la programación, podría ser suficiente.

En general, es beneficioso aprender cómo los idiomas pueden diferir, y es beneficioso aprender los conceptos básicos de algunos idiomas diferentes, pero pasar mucho tiempo aprendiendo diferentes sintaxis y conocer diferentes bibliotecas estándar de cada idioma es en gran medida una distracción. Por lo tanto, me acercaría a conocer más sobre los lenguajes de programación, si lo desea, tomando un curso de encuesta universitaria o leyendo un libro de lenguajes de programación general como “Pragmática del lenguaje de programación”, “Esencial de los lenguajes de programación” o “Estructura e interpretación de Programas de computador”. Puede tener la sensación de que muchos lenguajes de programación diferentes permanecen en Python o Scheme y experimentan con sus propios intérpretes o compiladores. De esta manera, aprenderá los conceptos sin abarrotar su cabeza con detalles innecesarios de sintaxis y bibliotecas que probablemente no serán útiles al final.

Como estudiante, debes enfocarte en aprender un idioma bastante moderno realmente bien. Claro, es valioso conocer a otros también, pero primero necesita adquirir un conocimiento profundo.

Digo ‘bastante moderno’ para evitar excluir Java, que aún puede ser una mejor opción que Python, aunque veo que Python está reemplazando Java en algunos planes de estudios de informática en algunas universidades.

Si ya está buscando anuncios de trabajo, habrá notado que muchos de ellos exigen altos niveles de experiencia en algunos lenguajes y tecnologías silenciosos: Java, C / C ++, JavaScript, PHP, Python, Ruby … Pero la realidad es que usted progresará más rápido para aprenderlos todos si primero aprende uno de los idiomas más fundamentales primero. Recomendaría Java sobre los demás por varias razones, tales como: 1) muchas bibliotecas buenas ya disponibles para él 2) un enfoque más moderno para OOP que C ++, 3) la mayoría de la literatura sobre “Patrones de diseño” se expresa en Java o un lenguaje de patrones más similar a Java que a C ++ o Python …

Deberías aprender un par, uno realmente bueno, y algunos con suficiente experiencia para que hayas escrito un modesto programa no trivial en cada uno. (Al igual que el resto de nosotros, probablemente no pueda permitirse, en cuanto al tiempo, hacer más que esto).
Como estudiante, esperaría que pudieras tomar una clase sobre lenguajes de programación, y lo haría absolutamente por la exposición.

Como política general, recomendaría aprender C ++, Scheme y Prolog, porque sus conceptos y capacidades de programación son muy diferentes. Con estos antecedentes, será difícil sorprenderlo con “otro idioma más”.

Como “estudiante de ingeniería”, probablemente debería aprender un idioma relevante para su disciplina de ingeniería. Si va a convertirse en un ingeniero de cualquier tipo y espera trabajar en sistemas integrados, C ++ le servirá bien. Si espera diseñar circuitos digitales, considere VHDL o Verilog. Si va a convertirse en un EE que diseña circuitos analógicos, debería considerar aprender a usar los lenguajes de simulación como Spice. Si usted es un ingeniero civil o ME, consideraría aprender a usar MATLAB y / o Mathematica.

Es mucho mejor trabajar en varios lenguajes de programación. Descubrirá rápidamente que el idioma real no importa y que al hacer varios idiomas diferentes, obtendrá una buena comprensión de los conceptos que son importantes.

Los lenguajes de computadora no son como los lenguajes humanos. Cualquier programador competente de C ++ debería poder escribir Java decente con aproximadamente una semana de aprendizaje y viceversa.

Hola…
Creo que antes de ir a un lenguaje específico deberías entender la base … Quiero decir, aquí está el algoritmo, la estructura de datos, la POO, etc.
En mi opinión, todo lenguaje de programación es solo una herramienta. Si ya tenemos una base sólida, creo que dominar cualquier lenguaje de programación será más fácil. En caso de cuántos idiomas necesita realmente para dominarlo, depende de en qué campo desea trabajar.

Por ejemplo, si desea trabajar como programador web, por supuesto, necesita dominar más de un idioma, como php, javascript, asp .net y podría ser jsp (este es un ejemplo común de todos modos).

Pero en general (en mi humilde opinión) creo que realmente está bien dominar 1 idioma con varios idiomas con suficiente experiencia (saber cómo usar). Si realmente domina 1 idioma y tiene experiencia en varios otros, el empleador podría pensar que usted es uno de los mejores programadores en ese idioma y que también tiene una mentalidad abierta a otro idioma.
¡Buena suerte! 🙂

Si desea tener demanda como desarrollador de software, estoy de acuerdo con las otras respuestas sobre el aprendizaje de varios idiomas para adaptarse al trabajo.

Si quieres seguir siendo un aficionado, elige uno que pueda hacer todo lo que necesites y aprende bien. Aprenderá sus fortalezas y deficiencias.
Si eres un aficionado casual, eso puede ser todo lo que necesitas.

Si eres más duro, entonces * naturalmente * eventualmente captarás sugerencias (de la comunidad de tu idioma) sobre otros idiomas y plataformas que podrían ser buenos “próximos pasos”.

Para agregar a la respuesta de Jaroslaw, creo que es más importante aprender cómo los lenguajes de programación encajan en el sistema en su conjunto. Los lenguajes de programación son herramientas para resolver problemas y, como con todas las herramientas, algunos son mejores para hacer ciertas cosas que otros.