¿Vale la pena ser políglota de lenguajes informáticos? [cerrado]

14

A menudo se puede escuchar que los programadores deben aprender muchos idiomas diferentes para mejorar ellos mismos. Todavía voy a la escuela y no tengo una gran experiencia en programación (un poco más de un año). Pero la noble intención de mejorar las habilidades de programación se convirtió en algún tipo de TOC: siento que no me calmaré hasta que aprenda todos los lenguajes de programación relativamente conocidos.

Y aquí es pregunta en sí misma: Will lenguajes de programación de ser políglota en realidad le ayudan (y yo no habitual media "programador debe conocer al menos todos los paradigmas", me refiero a realmente todos los idiomas que normalmente oyen acerca)? ¿Alguien tiene una experiencia similar? ¿Ayuda con el trabajo / habilidades / carrera? ¿Con qué frecuencia puede aplicar esas habilidades?

Anton Barkovsky
fuente
3
Creo que cuando la gente sugiere a otros que aprendan nuevos idiomas, se trata menos de aprender idiomas y más de aprender nuevos paradigmas. Mis dos lenguajes principales son Python y C ++, aprender Haskell ha sido una gran experiencia para mí, porque me obliga a pensar de una manera diferente de lo que lo haría de otra manera.
Vitor Py
44
Conocer todos los paradigmas principales realmente ayuda mucho . Estar expuesto al menos un poco a todos los lenguajes interesantes podría ayudar un poco si está diseñando sus propios idiomas (y tan pronto como ingrese al paradigma de la programación orientada al lenguaje, es probable que lo haga).
SK-logic
44
"No vale la pena conocer un lenguaje que no afecte su forma de pensar sobre la programación". (Alan Perlis) Amén.
2
@Job, conocer 10 lenguajes de programación requiere solo una pequeña fracción del esfuerzo requerido para aprender los conceptos básicos de un solo idioma hablado.
SK-logic
2
@ SK-logic depende. Apuesto a que puedo enseñarle a un niño de 6 años a hablar español más rápido de lo que puedo enseñarle python.
Raynos

Respuestas:

10

"El programador debe conocer al menos todos los paradigmas"

Eso ayuda

Me refiero a todos los idiomas que sueles escuchar

Eso no ayuda. Aunque una vez que conoces todos los paradigmas, puedes aprender un idioma a la semana.

Simplemente es más óptimo pasar una semana aprendiendo ese idioma cuando lo necesitas .

Un buen programador es un programador perezoso.

Nota al margen:

Aprender idiomas comunes / populares no es tan útil como aprender "todos los paradigmas". El primero no cubre al segundo. Por ejemplo, aprender Self es increíblemente útil para comprender la OO prototípica. No es un lenguaje común ni popular, pero es mucho más útil que aprender Python cuando ya conoces Ruby.

Diseño de lenguaje:

Saber la mayoría de los idiomas es útil si escribe / diseña un nuevo idioma. Por lo tanto, hay un caso de uso sólido para él, pero es bastante nicho.

Lo que te recomiendo que hagas en su lugar:

Leer código Completa 2 al menos 3 veces

Los idiomas van y vienen de izquierda a derecha dependiendo de "lo que es popular". La tecnología se vuelve obsoleta después de meses o años, dependiendo de cómo sea la curva tecnológica. (La web desprecia la tecnología a un ritmo de cada 6 meses).

La técnica de programación y la teoría de la informática siempre se mantienen igual.

Raynos
fuente
Pero hay muchas características menores interesantes en los idiomas e incluso aprender un nuevo idioma de un paradigma ya conocido puede sorprenderle (por ejemplo, para mí fue Smalltalk)
Anton Barkovsky
@AntoBarkowski es una declaración falsa, no compare SmallTalk con otros lenguajes OO. Java / C ++ / C # / etc. no son idiomas reales de OO. Por supuesto que vale la pena aprender SmallTalk, pero no es el mismo paradigma;)
Raynos
66
La gente sigue diciendo "puedes aprender un idioma a la semana", pero eso no es cierto. Claro, podrá escribir código sintácticamente correcto en ese idioma, pero hay más que eso. Por ejemplo, C # y Java son muy similares sintácticamente y son ambos lenguajes OO. Sin embargo, escribir código Java en C # no te convierte en un programador de C #.
R0MANARMY
3
@ R0MANARMY "<buenos programadores> pueden aprender un idioma en una semana". Un lenguaje no incluye bibliotecas, marcos y API. Sin embargo, mi definición de buenos programadores puede ser muy alta.
Raynos
1
@ R0MANARMY, ¿cuál de esos pequeños fragmentos semánticos sin importancia que ha mencionado puede tomar más de una hora en comprender?
SK-logic
4

No se trata de saber codificar en una multitud de idiomas, se trata, como usted dice, de los paradigmas. Cuantas más opciones conozca, mejor. Saber varios idiomas ciertamente ayuda, pero si sigues aprendiendo los mismos tipos de idiomas, rápidamente llegarás a un callejón sin salida.

La clave es saber qué idioma / sistema es mejor para implementar una parte de su proyecto. Incluso si ha decidido un idioma principal (como la mayoría de los proyectos), todavía tendrá todo tipo de herramientas, scripts, automatización y soporte de compilación que deben escribirse. Por lo general, una variedad de otros idiomas o herramientas son mejores para esto que su idioma principal.

Solo para aclarar, me parece una tontería intentar aprender todos los idiomas que realmente escuchas: hay cientos de estos y, a menudo, son solo pequeñas variaciones en otros idiomas.

edA-qa mort-ora-y
fuente
3

En mi humilde opinión, no lo hace. Primero porque no puedes aprender un idioma en menos de un año. Se necesitan 2 días para poder escribir código en él, pero se necesita mucha experiencia para escribir código fluido y bien formado para el idioma dado. Por qué GC funciona como lo hace, dónde asignar memoria, qué construcciones son más rápidas, cómo concatenar correctamente las cadenas, cuáles son los rincones peligrosos del lenguaje, etc.

Escribo código Java / .NET terrible como desarrollador de C ++, ya que muchos desarrolladores de Java escriben código C ++ terrible.

La mejor parte de aprender otros idiomas es que aprendes nuevos paradigmas y quizás tengas una mejor herramienta para algún problema concreto. Diga: necesita una aplicación GUI muy rápida y no pública, .NET es irremplazable allí.

Pero aprender un lenguaje para no usar estructuras en .NET, o no filtrar todos los objetos en C ++, lleva mucho tiempo. Creo que es mejor gastarlo en aprender principios de diseño, plataformas y el idioma que elija.

Pero esta es solo mi opinión.

Descifrador
fuente
2
"porque no puedes aprender un idioma en menos de un año" Falso. No confundas aprender un idioma con aprender los marcos populares que expone. Agregue también "técnicas de programación generales" a la lista al final.
Raynos 01 de
@Raynos: supuse que a eso se refería.
Steven Jeuris
1
Mi forma favorita de jugar con un nuevo idioma es implementar un compilador para un subconjunto decente. En total, se necesitan de 2 a 4 horas para comprender el idioma y poder identificar y robarle las mejores características. No casi un año, ni siquiera un día.
SK-logic
1
Bueno, si te unías a un gran proyecto de C ++ y llegaste a una entrevista con palabras como "He estado programando en Java durante 10 años, pero pasé los últimos 6 meses en C ++, así que conozco el lenguaje". Dudo que obtenga un puesto de alto rendimiento altamente remunerado para ese trabajo. Entonces, no, sigo pensando que no puedes aprender un idioma en un mes más o menos.
Codificador
2
@Coder, si se uniera a un gran proyecto de C ++ y llegara a una entrevista con palabras como "He estado programando en 20 idiomas durante 10 años, incluido C ++", probablemente obtendría un trabajo.
SK-logic
2

No es práctico conocerlos , pero puede ser muy útil saber sobre ellos. Lo que quiero decir con eso es que cuando tienes un nuevo problema, puedes decir: "Recuerdo vagamente que [otro idioma] tenía una forma superior de resolver problemas como este. Debería buscarlo".

Karl Bielefeldt
fuente
Creo que los podcasts como SE Radio son buenos para eso. A menudo son del tamaño adecuado para escuchar en un viaje al trabajo y puedes aprender mucho de esa manera. Pero es de la forma Por qué es <X> Interesante.
Zachary K
1

Ayudaría más a su carrera al desarrollar el conocimiento del dominio y luego aprender muchos lenguajes de programación. Sin mencionar que necesitará aprender herramientas adicionales para eso, como cómo usar un generador de perfiles en su idioma, lo mismo para el depurador, el mejor marco de GUI y cómo programar rápidamente con él, qué bibliotecas de terceros comunes existen con compensaciones y modismos específicos del lenguaje.

También es más sabio aprender a hacer más cosas en lugar de muchas formas de hacer lo mismo.

Peter Smith
fuente
1

He trabajado en varios sistemas donde los componentes se escribieron en varios idiomas (el peor infractor me exigió que entregara código escrito en Ada 83, C, Fortran 77, SQL y DCL, mientras que mi último trabajo me exigió entregar código C ++ y Java ) Entonces, sí, hay casos del mundo real en los que necesitas conocer varios idiomas lo suficientemente bien como para ser productivo en ellos (productivo = competente; no vas a ser un experto profundo en C ++ y Java y ... a menos que eres un bicho raro).

Más allá de eso, el punto de tomarse el tiempo para aprender varios idiomas es ayudar a separar los conceptos de la implementación . Para mí, OOP no comenzó a tener sentido hasta que trabajé con múltiples OOPL. Además, en algún momento de su carrera, tendrá que cambiar de marcha rápidamente y comenzar a trabajar en algo totalmente nuevo y desconocido; tomarse un tiempo para extenderse más allá de lo que necesita saber ayudará a facilitar esa transición cuando suceda.

John Bode
fuente
1

Creo que sería mejor aprender algunos idiomas diferentes y luego al menos uno en profundidad antes de embarcarse en la necesidad de aprender todos los idiomas posibles. Una vez que tenga una cantidad mínima de amplitud, la profundidad se vuelve realmente importante para su progreso como desarrollador. Habría visto a alguien con profundidad en uno o dos idiomas y un puñado de un par de personas más que alguien con un puñado de todo. Obtener profundidad es como aprender otro paradigma, cambiará su forma de pensar sobre la programación y abrirá puertas a proyectos realmente complejos y emocionantes.

HLGEM
fuente
0

Es como aprender a hablar muchos idiomas. Aprenderlos a todos hasta el punto de ser útiles es casi imposible. Apéguese a los que probablemente usará y estará mejor. Podría aprender C ++, C # y Java bastante bien, pero tratar de exprimir Perl, Python, VB (no VB.NET), Ruby y JavaScript a un nivel profesional al mismo tiempo es una tontería. No hay suficientes horas en el día para mantener sus habilidades en todos ellos a la vez.

Christopher Bibbs
fuente