(¿Por qué) debo aprender un nuevo lenguaje de programación? [cerrado]

97

Soy bastante competente con Java, C / C ++, JavaScript / jQuery y decentemente bueno en Objective-C. También soy bastante productivo con los lenguajes y sus marcos correspondientes, y produzco sistemas a nivel empresarial (y también a pequeña escala) con suficiente facilidad a la vez que mantengo el código 'limpio' y mantenible (sí, puedo leer mi propio código después de seis meses :)

A menos que sea requerido por la plataforma (iPhone, iPad, etc.) o por el cliente / organización de implementación, solo "¿por qué" debería aprender un nuevo lenguaje de programación? Solo por diversión"? ¿Y qué hago con esa diversión si no voy a hacer nada que valga la pena?

Muchos de mis compañeros están listos para sumergirse y aprender "la próxima nueva cosa / idioma" y generalmente es Python, Ruby o PHP (solo nombrando algunos populares). Ahora, solo saber el idioma por sí mismo es inútil en mi humilde opinión. También debe conocer los marcos, aprender su uso / API, así como las "buenas prácticas de implementación", etc.

Desde el punto de vista económico, ¿hay algún beneficio en aprender un nuevo lenguaje de programación? Si el lenguaje se aprende de forma rápida y sucia, probablemente también se usará para la creación / creación de prototipos rápida y sucia, pero no veo que ESTO sea una inversión de tiempo / esfuerzo justificable.

Entonces, ¿POR QUÉ debería yo (o cualquiera) aprender un nuevo lenguaje de programación que no sea "es divertido, así que probémoslo", si la inversión de tiempo no vale la pena a largo plazo?

    
pregunta PhD 22.02.2012 - 20:32

17 respuestas

178

De The Pragmatic Programmer , Consejo # 8 "Invierta regularmente en su cartera de conocimientos":

  

Aprenda al menos un nuevo idioma cada año. Idiomas diferentes   Resuelve los mismos problemas de diferentes maneras. Al aprender varios diferentes   enfoques, usted puede ayudar a ampliar su pensamiento y evitar   quedando atrapado en una rutina. Además, aprender muchos idiomas es mucho   Ahora es más fácil, gracias a la gran cantidad de software disponible gratuitamente en el   Internet

No se trata de la próxima "cosa nueva". Se trata de pensar de diferentes maneras fuera de tus patrones de pensamiento normales.

Hay un dicho: "Cuando eres un martillo, todo parece un clavo". Tal vez haya una mejor manera de resolver un problema usando otra tecnología. Si no explora, es posible que no sepa que estaba disponible.

    
respondido por el jmq 21.02.2012 - 20:55
80

¿Por qué la gente sube al monte? ¿Everest? O ejecute ¿100 millas en 24 horas ? ¿Por qué emprendemos cualquier reto? Porque está ahí. No veo nada malo con "Ars gratia artis". Llega un momento en el que aprender por aprender se convierte en su propia recompensa. Pero si quieres razones más poderosas para aprender un nuevo idioma, aquí hay algunas:

Nuevas formas de resolver problemas Aprender un nuevo idioma, realmente tomarse el tiempo para sumergirse, le da la oportunidad de programar nuevamente como un novato. Esa nueva perspectiva puede enseñarle técnicas que podrían trasladarse a un idioma antiguo. Piense en la influencia que Ruby on Rails tuvo en ASP.NET MVC o en cómo Java Hibernate fue portado a C # (junto con muchos otros marcos que influyen en el desarrollo de .NET). La exposición a diferentes idiomas puede enseñarle nuevas formas de abordar los problemas.

La herramienta adecuada para el trabajo adecuado Todos los idiomas que mencionó son OO / híbridos procesales (o puramente procedimentales en el caso de C). Pruebe su mano en un lenguaje funcional o dos. ¡Intente implementar factorial en Erlang usando la recursión y observe cómo su mandíbula golpea el piso cuando 20000! devuelve en 5 segundos (sin desbordamiento de pila en el sitio). Luego observe el poder de escalar su aplicación para analizar números y analizar protocolos con menos código y en menos tiempo de lo que se necesitaría para que dos instancias de una JVM hablaran a través de RMI o SOAP. Aprender otros idiomas / marcos de trabajo diseñados para resolver problemas específicos le brindará más herramientas.

Conoce gente nueva / amplía tu red Bucear en un nuevo idioma te expone a una nueva comunidad. Conocer gente nueva es algo bueno para tu carrera y personalmente.

Nuevas oportunidades Saber un nuevo idioma solo puede aumentar sus posibilidades de conseguir ese trabajo con ese arranque en caliente. "Hombre, este trabajo sería perfecto si conociera a Ruby". Además, es posible que disfrutes del idioma lo suficiente como para que decidas cambiar de ruta.

Mantenlo actualizado Trabajar con lo mismo día a día se vuelve tedioso. El uso de un idioma diferente puede proporcionarle un descanso de la rutina diaria y permitirle volver al día siguiente.

Porque está ahí Aprende un nuevo idioma porque deseas hacerlo.

    
respondido por el Michael Brown 21.02.2012 - 19:01
37

Pensamos con palabras. El lenguaje que usamos influye en la forma en que lo hacemos. Hay un caso interesante sobre idioma pirahã : las personas que hablan ese idioma no pueden interpretarlo como algo aparentemente "simple". o "intuitivo" como números porque el lenguaje en el que se han criado no tiene palabras para "cantidades específicas" (ni siquiera "uno" y "muchos").

Con lenguajes de programación es lo mismo. Un nuevo lenguaje de programación puede "abrir" su mente a algunos aspectos de la programación.

Teniendo en cuenta su experiencia en programación actual, le recomiendo que aprenda un lenguaje funcional, como Erlang o Scala. Finalmente, Clojure también es un lenguaje muy sólido.

Si quieres sentirte un poco más en casa primero, prueba un poderoso lenguaje de scripting como Python o Ruby.

    
respondido por el egarcia 22.02.2012 - 11:11
26

No solo desea aprender nuevos idiomas, sino también idiomas diferentes a los que ya conoce. Si sabe que el aprendizaje de Java C # no lo desafiará realmente, son bastante similares. Lo ideal es que elijas un idioma que sea muy diferente al que conoces. Si sabes java, JavaScript y Objective-C, quieres algo muy diferente

Por ejemplo:

Ruby es un lenguaje OO divertido y mal escrito

Prólogo Un lenguaje de programación lógico muy diferente

Erlang Concurrencia y tolerancia a fallos muy bien

Esquema Ve a leer el SICP y alcanza la iluminación

Haskell Uno de los sistemas tipográficos más poderosos del mundo, si compila, probablemente funcionará, también evitará que cometas todo tipo de errores extraños y mucho más.

O simplemente elija Siete idiomas en siete semanas, lo que hará lo que el título dice que hará.

    
respondido por el Zachary K 22.02.2012 - 12:01
15

Su pregunta es tan importante que me ruega que haga la siguiente pregunta:

Si eres programador de profesión, ¿por qué no querrías aprender algo nuevo para agregar a tu experiencia profesional?

Tu pregunta me suena muy parecida a la actitud de un estudiante que una vez tuve. Un año o dos antes del Y2K, estaba enseñando una clase de Cobol (como optativa), a petición del Director de Servicios de Carreras de la universidad en la que estaba enseñando en ese momento. Tuvo tantas compañías que se acercaron a él con oportunidades de trabajo para programadores de Cobol que pensó que estaríamos perjudicando a nuestros estudiantes al no darles la oportunidad de aprender la habilidad y agregar a su conjunto de habilidades.

Tuve un estudiante que tomó la clase como su última clase electiva para graduarse . También estaba trabajando como programador en C en ese momento. Tomó la clase Cobol porque no tenía otras opciones y quería el título. Así que llegó a la clase con un chip en su hombro.

  

Ya sé C, y lo uso profesionalmente, así que no sé por qué alguien querría o incluso necesitara aprender Cobol en el mundo.

Así que lo desafié con la tarea de escribir un programa para leer datos de un archivo que tenía un formato específico para cada registro de entrada (es decir, cuántos caracteres tomó cada campo en una línea, qué campo vino primero, segundo, tercero, etc.)

Tenía que escribir su programa en C, lo que hizo, y me mostró su programa. Al mismo tiempo, le mostré mi versión Cobol del programa.

Luego le lancé una bola curva:

  

Se supone que el usuario final está obteniendo datos de otro lugar. Son los mismos campos en cada registro, pero el orden y el número de caracteres por campo son diferentes. Muéstrame lo que deberías cambiar en tu programa para que funcione con el nuevo formato de datos.

Se tomó un día para crear una nueva versión del programa que funcionó con el nuevo formato de datos. Implica cambiar al menos 20 o 30 líneas de código y modificar varias funciones y módulos.

Luego le mostré los cambios que necesitaba hacer en mi programa Cobol. Modifiqué la cláusula de la imagen para reflejar el nuevo formato de datos.

No estoy seguro de que entendiera completamente la lección de ese ejercicio, pero al menos dejó de quejarse por el resto del semestre.

Entonces, en respuesta a tu pregunta: Debes aprender nuevos idiomas porque quieres APRENDER. Y si no quieres aprender, más poder para ti ... (no estoy seguro de que te contrataría con esa actitud)

    
respondido por el Zeke Hansell 21.02.2012 - 20:21
12

Hay varias razones por las que aprender un nuevo idioma puede valer una inversión de tiempo:

  1. Aumente el tamaño de su caja de herramientas: aprender un nuevo idioma puede proporcionar caminos adicionales para resolver problemas técnicos. La posibilidad de nuevas herramientas podría proporcionar una mejor elección de idioma / plataforma para resolver ciertos problemas que las herramientas / idiomas que uno conocía anteriormente. Un ejemplo simplista podría ser el de un programador que solo conoce C. Aprender un lenguaje de scripting abre otras posibilidades para él / ella: en términos de implementación, configuración del entorno, etc.
  2. Obtenga acceso a una nueva plataforma, un excelente ejemplo podría ser el Objetivo C: si uno desea desarrollar para iOS, aprender este idioma es casi obligatorio.
  3. Aprenda nuevos paradigmas: ciertos idiomas podrían tener mejor acceso a nuevos paradigmas. Usando C como ejemplo, puede ser difícil desarrollar servicios web en ANSI estándar C. Sin embargo, aprender a desarrollar en .NET, Java, PHP u otros lenguajes nuevos puede acelerar el desarrollo de servicios web.

Aprender nuevos idiomas puede proporcionar beneficios inmediatos, como ya se ha señalado, en soluciones "rápidas y sucias". Sin embargo, estas soluciones inmediatas podrían llevar a un programador a investigar y profundizar en la arquitectura asociada con el nuevo lenguaje para "aprenderlo" correctamente. Uno puede ver estos ejercicios de aprendizaje rápido como una inversión en la investigación de si un nuevo idioma merece más tiempo de capacitación.

    
respondido por el JW8 21.02.2012 - 18:38
11

En una palabra: Comercialización .

Abre sus perspectivas de empleo cuando puede demostrar que tiene la capacidad de adaptarse y aprender cosas nuevas. Claro, puede seguir escribiendo aplicaciones utilizando el idioma en el que se ha vuelto muy competente, pero lo que sucede cuando se entera de que su idioma favorito de elección se vuelve irrelevante para la industria en la que ha estado trabajando. De hecho, recuerdo un momento en el que usamos Para escribir nuestros propios servicios web desde cero en C o C ++, hoy en día utilizamos herramientas que hacen todo el "webbiness" subyacente para nosotros (Think Rails, etc ...).

El punto es que terminas como esos actores que hacen una serie de televisión, y luego no puedes moverte fácilmente a nada más porque siempre se los ve como su personaje original. "¡¿Quién en la Tierra quiere que el capitán Kirk sea Indiana Jones? !!". Lo mismo con los programadores que solo han usado el único producto. Claro, lo sabrás como nadie más, pero eso no te ayudará cuando te traten como si hubieras sido boxeado como un Fortran que no puede seguir trabajando con C #.

Si desea poder mover trabajos fácilmente y mantener sus opciones abiertas, necesita ampliar su experiencia. Trabaje en muchos proyectos diferentes en muchos idiomas diferentes, y preferiblemente en al menos 2 o más plataformas, y manténgase en el mercado por más que solo ser lo que es hoy.

Por supuesto, hay muchas otras razones para aprender un nuevo idioma, a veces incluso por el gusto de hacerlo. Abre tu mente a otras posibilidades, por lo que cuando tu jefe se acerca a ti y dice "podemos hacer algo", puedes decir Sí con una selección de herramientas disponibles para ti.

    
respondido por el S.Robins 21.02.2012 - 21:50
8

En este punto de su carrera, debería aprender nuevos idiomas si cree que lo harán un mejor programador.

La mayoría de los lenguajes listados (Java / C / C ++ / Javascript / Objective-C) son OO / imperativo convencionales. Aprender otro OO / lenguaje imperativo probablemente no le enseñará mucho más sobre este tipo de programación. A menos que tenga un interés particular, no tiene sentido aprender el sabor del mes según las especificaciones.

También me inclino a ser escéptico acerca de las afirmaciones sobre los aumentos de productividad de orden de magnitud. Sin embargo, podría valer la pena revisar el ocasional lenguaje de alta productividad reputado, para ver si le gusta.

La mejor razón para aprender un nuevo idioma es aprender habilidades de aplicación general. Para eso, recomendaría una inmersión profunda en un lenguaje funcional (Haskell o uno de los Lisps) por un lado, y el código de ensamblaje y la arquitectura de sistemas (x86 o ARM) por el otro.

La programación funcional romperá tu cerebro y mejorará tu mente, mientras que la arquitectura de la máquina de aprendizaje mejorará tus capacidades de depuración y optimización, incluso si nunca escribes otra línea de ensamblaje.

    
respondido por el comingstorm 22.02.2012 - 00:14
6

Cada uno de nosotros decide en qué queremos trabajar, así que ...

  1. lo aprendes porque quieres
  2. lo aprendes porque lo necesitas para el trabajo que deseas

Si no quieres aprender PHP, nadie te está creando y hay un montón de áreas donde puedes programar sin siquiera saber cómo se escribe PHP.

Mucha gente mira el mercado laboral para ver dónde se encuentran las áreas de mayor actividad y aprovechar esas tecnologías. Mucha gente aprende un idioma y se apega a él, y 20 años después se convierten en antiguos ingenieros de mantenimiento. Y luego tienes un montón de gente que se encuentra entre estos dos extremos.

Al final, se trata de dónde quieres estar.

    
respondido por el DXM 21.02.2012 - 19:26
5

El mejor argumento que conozco es que amplía su perspectiva sobre la forma en que se puede resolver un problema o cómo se puede expresar alguna lógica. Conocer bien Java y C ++ le brinda una buena vista tanto de nativos como de amp; VM reinos, pero hay muchos más "grados de libertad" para explorar.

Tengo aproximadamente 15 años de experiencia en C ++, 5 en Java. Hay muchos idiomas que aprendí y dejé atrás (PHP, Pascal, ensamblaje para varios procesadores diferentes, entre otros) y puedo decir con seguridad que incluso aquellos que ya no uso dejan una marca significativa en cómo pienso sobre un problema . Además: incluso si desea mantener, por ejemplo, Java, para un proyecto determinado, deberá conocer la alternativa para presentar buenos argumentos en contra de sus defensores.

Aún así, aprendí Python este año, y me encantó la elegancia con la que se pueden hacer algunas cosas. Tanto que decidí convertir un puñado de servlets REST que había escrito, de Java a Python. Las ventajas en la mantenibilidad del código fueron bastante significativas. Por supuesto, también dejó una marca en mi forma de hacer las cosas, no solo porque ahora elegiré Python para algunas tareas, sino también porque puedo adoptar principios de diseño similares al codificar en C ++ y amp; Java.

Dicho esto, no creo que debas aprender muchos idiomas diferentes todo el tiempo, solo por el bien de eso. Se requiere una cantidad considerable de tiempo, y los "alojamientos" que tendrá que hacer en su mente para que coexistan con los demás que ya conoce también requieren tiempo y esfuerzo. Solo decido aprender un idioma cuando tiene suficiente madurez, tiene una buena base de desarrolladores y ofrece resultados significativamente diferentes de los otros que conozco o planeo aprender. Cuando decidí aprender Python, por ejemplo, también consideré a Ruby y Perl, y luego los descarté, al menos en un futuro cercano.

    
respondido por el Fabio Ceconello 21.02.2012 - 19:48
5

La gente aprende nuevos idiomas para ...

  • amplíe sus conocimientos. Si sabe más, se sentirá mejor y tendrá más confianza.
    Confianza = ¡Código impresionante!
  • tiene una caja de herramientas más grande. Digamos que tienes que crear una aplicación. Si solo conoces Java, harás el programa en Java. Pero si conoces Java, Python, Scheme y Lisp, es probable que vayas a elegir la mejor herramienta para el trabajo.
  • consigue un trabajo. Acéptalo. Si sabes más idiomas, tienes más oportunidades de trabajo. Eso es bastante autoexplicativo.
  • conviértase en un mejor programador general. Si conoce la sintaxis de Perl, puede volverse un poco loco. Al escribir programas largos en Perl, básicamente estás obligado a seguir las mejores prácticas, o no serás un campista feliz. Ya que conoce las mejores prácticas de Perl, esto podría ayudarlo a escribir mejor código PHP (de una forma u otra).

Como puede ver, hay muchas razones para aprender un nuevo idioma. Mi consejo para usted (y mi única cita original que creo que es buena):

  

Escribe código frecuentemente; Escribe el código bien; Escriba código en Esquema, PHP, Java, Python, Lisp, Perl, C, C ++, C #, Visual Basic, Ruby ...

    
respondido por el Dynamic 21.02.2012 - 21:44
5

Estoy de acuerdo con la mayoría de las respuestas publicadas ya. Para adjuntar a estos, echa un vistazo a las estadísticas tomadas por la Encuesta de usuarios de desbordamiento de pila 2011. Hubo una correlación muy alta entre la cantidad de idiomas conocidos y el dinero ganado. Puede que no estén directamente vinculados entre sí, pero es algo en lo que pensar.

Las personas que tienden a aprender más idiomas tienden a ganar más dinero.

enlace

    
respondido por el hspain 21.02.2012 - 23:50
4

Alfred North Whitehead escribió un gran ensayo llamado " La importancia de la buena notación "

  

Es interesante notar lo importante que es para el desarrollo de la ciencia   Un símbolo de aspecto modesto puede ser. Puede estar parado para el enfático   presentación de una idea, a menudo una idea muy sutil, y por su   La existencia hace que sea fácil exhibir la relación de esta idea con todos los   Trenes complejos de ideas en las que se produce.

Un lenguaje de programación es una forma de notación. Puedo codificar OO en C; de hecho, así es como Stroustrup comenzó con C ++, como una serie de macros de precompilador C. Sin embargo, es mucho más fácil y rápido escribir código OO en Java, C ++ o C # porque tienen primitivos de lenguaje presentes que admiten OO más fácilmente.

Todas las razones para aprender nuevos idiomas son válidas, pero creo que la mejor razón para aprender un nuevo idioma es que una nueva notación puede permitirle pensar de una manera nueva que puede ayudarlo a resolver nuevos problemas.

    
respondido por el Onorio Catenacci 21.02.2012 - 21:38
2

La mayoría o todas las respuestas anteriores están relacionadas con la profesión. Programación. Quiero recordar que antes de que seamos programadores, somos seres humanos.

Una buena razón por la que no aprende un nuevo lenguaje de programación, en tu caso, es dejarte descansar o hacer otras cosas además de la programación.

Desde mi experiencia, trabajando en la agricultura y trabajando con la madera, pensé mucho sobre la programación, más que aprender un nuevo idioma. es decir, para ser un buen programador, primero debe ser un buen ser humano. Si no tiene mucha experiencia en la vida, además de la programación, su idea sobre la programación podría ser totalmente errónea, incluso si es un experto.

Muchos conceptos en programación provienen directamente de la vida diaria: simplicidad, mantenimiento, práctico, útil, rápido y, a veces, lento , modularidad, etc .; son todos los conceptos que utiliza un carpintero, por ejemplo.

Créalo o no: personalmente he aprendido mucho sobre conceptos de programación, al tomar unas largas vacaciones para recoger naranjas. El concepto principal que aprendí de él fue la simplicidad. Desde que trabajé como constructor, aprendí otro concepto: construir la base lo mejor posible, si quieres que las paredes se mantengan rectas.

Finalmente, la respuesta a tu pregunta podría ser: tomar unas vacaciones, unirte a una clase de taekwondo o cuidar el jardín. Entonces, tu pregunta ya no te molestará.

    
respondido por el Shian 25.02.2013 - 10:50
-2

El valor de aprender un nuevo lenguaje de programación es, aproximadamente, el recíproco de la cantidad de lenguajes de programación que ya conoce.

Esto se debe a que hay un número finito de paradigmas y aprender un nuevo idioma por lo general le presentará al menos uno o dos, lo que lo hace más experimentado y capaz como programador. Algunos pueden dar vuelta su mundo de programación al revés. Pero cuando aprendes un nuevo idioma que incluye paradigmas que ya conoces, ya los conoces y estás acostumbrado a ellos.

    
respondido por el David Kendal 21.02.2012 - 22:14
-3

Como la mayoría de ellos ya escribieron, tengo un buen conocimiento práctico sobre C. Recientemente, estaba trabajando en un problema por el cual necesitaba verificar los resultados; era matemático Entonces, ¿cuál es la forma más rápida de obtener la respuesta? Me dio un puntapié para revisar el lenguaje de programación más rápido para aprender.

Y descubrí que bc , un lenguaje de calculadora de precisión arbitraria, la utilidad casi disponible en todas las plataformas Unix.

No pensé en Python, Perl ni nada, pero descubrí que esto resolvió mis problemas en un instante. Lo comprobé en el factorial (20000) que sugirió uno de los amigos, y dio resultados en un instante sin ningún tipo de bloqueo.

Es importante solo hasta cierto punto que necesite conocer un nuevo idioma que facilite su trabajo / problema en este momento.

Definitivamente, si escribo esto en mi currículum, supongo que a nadie le importa, pero desde mi perspectiva resuelve mi problema antes de atacarlo en mi idioma favorito, 'C'.

Y también si es necesario aprender un nuevo idioma, tendrá la oportunidad con diferentes problemas y muchas soluciones.

    
respondido por el czar x 22.02.2012 - 20:38
-8

Cualquiera puede crear un nuevo idioma; pero nadie parece entender que "mejor" rara vez es lo mismo que "tanto mejor que el costo de la adopción realmente se justifica". El resultado final es cientos de idiomas diferentes, donde es imposible que alguien entienda todo el código fuente, y donde los programadores deben perder una cuarta parte de su tiempo siendo improductivos debido a las diferencias de idioma / marco / biblioteca.

En un mundo ideal, habría un lenguaje de programación de bajo nivel (por ejemplo, C), un lenguaje de programación de alto nivel "seguro" (por ejemplo, Java) y un lenguaje de scripting. También habría un gran trineo para destruir la "Torre de lenguaje de programación de Babel" creada por personas que no entienden las virtudes de la estandarización y el costo de la "pérdida de personal" y la capacitación constante en el I.T. la industria en su conjunto.

Desde el punto de vista 'macroeconómico', no hay nada de malo en aprender un nuevo lenguaje de programación como un pasatiempo, pero usar ese nuevo lenguaje de programación hace que seas parte del problema.

    
respondido por el Brendan 21.02.2012 - 19:26

Lea otras preguntas en las etiquetas