Soy bastante competente con Java, C / C ++, JavaScript / jQuery y bastante bueno en Objective-C. Soy bastante productivo con los lenguajes y sus correspondientes marcos y también produzco sistemas de nivel empresarial (y también de pequeña escala) con suficiente facilidad mientras mantengo el código "limpio" y mantenible (sí, puedo leer mi propio código después de las seis meses :)
A menos que lo ordene la plataforma (iPhone, iPad, etc.) o la organización del cliente / implementación, ¿por qué debería aprender un nuevo lenguaje de programación? Solo por diversión"? ¿Y qué hacer con esa diversión si no voy a hacer nada que valga la pena?
Muchos de mis compañeros están listos para zambullirse para aprender el "próximo nuevo lenguaje / cosa" y generalmente es Python, Ruby o PHP (solo nombrando algunos populares). Ahora, solo conocer el idioma en sí mismo es inútil en mi humilde opinión. También necesita conocer los marcos, aprender su uso / API, así como 'buenas prácticas de implementación', etc.
Entonces, desde un sentido "económico", ¿hay algún beneficio en aprender un nuevo lenguaje de programación? Si el lenguaje se aprende de manera rápida y sucia, probablemente también se usará para la creación de prototipos / implementación rápida y sucia, pero no veo ESO como una inversión justificable de tiempo / esfuerzo.
Entonces, ¿POR QUÉ debería (o cualquier otra persona) aprender un nuevo lenguaje de programación que no sea "es divertido, así que probémoslo", si la inversión de tiempo puede no valer la pena a largo plazo?
Respuestas:
Del Programador pragmático , Consejo # 8 "Invierta regularmente en su cartera de conocimientos":
No se trata de la próxima "cosa nueva". Se trata de pensar de diferentes maneras fuera de sus patrones de pensamiento normales.
Hay un dicho, "Cuando eres un martillo, todo parece un clavo". Quizás haya una mejor manera de resolver un problema utilizando alguna otra tecnología. Si no explora, es posible que no sepa que estaba disponible.
fuente
¿Por qué la gente sube al monte? ¿Everest? ¿O correr 100 millas en 24 horas ? ¿Por qué emprendemos algún desafío? Porque está ahí. No veo nada malo con "Ars gratia artis". Llega un punto en el que aprender por aprender se convierte en su propia recompensa. Pero si desea 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 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 cómo se transfirió Java Hibernate a C # (junto con innumerables 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 correcto Todos los lenguajes que mencionó son híbridos OO / de procedimiento (o puramente de procedimiento en el caso de C). Prueba tu suerte en un lenguaje funcional o dos. ¡Intente implementar factorial en Erlang usando recursividad y observe cómo su mandíbula cae al suelo cuando 20000! regresa en 5 segundos (sin desbordamiento de pila en el sitio). Luego, observe el poder de escalar su aplicación para procesar números y analizar protocolos con menos código y en menos tiempo del que llevaría obtener dos instancias de una JVM hablando a través de RMI o SOAP. Aprender otros idiomas / marcos que están destinados a resolver problemas específicos le dará más herramientas.
Conozca gente nueva / expanda su red Bucear en un nuevo idioma lo expone a una nueva comunidad. Conocer gente nueva es algo bueno para tu carrera y personalmente.
Nuevas oportunidades Conocer un nuevo idioma solo puede aumentar sus posibilidades de obtener ese trabajo con ese arranque en caliente. "Hombre, este trabajo sería perfecto si conociera a Ruby". Además, puede disfrutar el idioma lo suficiente como para decidir cambiar de ruta.
Manténgalo fresco Trabajar con lo mismo día tras día se vuelve tedioso. Usar un idioma diferente puede darte un descanso de la rutina diaria y permitirte llegar al día siguiente renovado.
Porque está allí Aprende un nuevo idioma porque quieres.
fuente
Pensamos con palabras. El lenguaje que utilizamos influye en la forma en que lo hacemos. Hay un caso interesante sobre el idioma pirahã : las personas que hablan ese idioma no pueden manejarlo como algo aparentemente "simple" o "intuitivo" como números porque el idioma en el que han sido criados no tiene palabras para "cantidades específicas" (ni siquiera "uno" " Y muchos").
Con los lenguajes de programación es lo mismo. Un nuevo lenguaje de programación puede "abrir" su mente a algunos aspectos de la programación.
Dado su historial de programación actual, le recomiendo que aprenda un lenguaje funcional, como Erlang o Scala. Finalmente, Clojure es un lenguaje muy sólido también.
Si quieres sentirte un poco más en casa primero, prueba con un lenguaje de script potente como Python o Ruby.
fuente
No solo quieres aprender nuevos idiomas, sino también idiomas diferentes de los que ya conoces. Si sabes que Java learning C # no te desafiará realmente, son bastante similares. Idealmente, debe elegir un idioma que sea muy diferente de lo que sabe. Si conoces Java, JavaScript y Objective-C, quieres algo muy diferente
Como:
Ruby un divertido OO Lenguaje débilmente escrito
Prolog Un lenguaje de programación lógico muy diferente
Concurrencia de Erlang y tolerancia a fallas muy bien
Scheme Go lee SICP y alcanza la iluminación
Haskell Uno de los sistemas de tipos más potentes del mundo si compila probablemente funcionará, también evitará que cometa 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á.
fuente
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?
Su pregunta me parece mucho la actitud de un estudiante que tuve una vez. Un año o dos antes de Y2K estaba enseñando una clase de Cobol (como optativa), a pedido del Director de Servicios de Carrera de la universidad donde estaba enseñando en ese momento. Tenía tantas empresas que se acercaban a él con oportunidades de trabajo para los programadores de Cobol que pensó que perjudicaríamos a nuestros estudiantes al no darles la oportunidad de aprender la habilidad y aumentar 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 el hombro.
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 ocupaba cada campo en una línea, qué campo vino primero, segundo, tercero, etc. .)
Debía escribir su programa en C, lo cual hizo, y me mostró su programa. Al mismo tiempo, le mostré mi versión Cobol del programa.
Luego le lancé una bola curva:
Se tomó un día para hacer una nueva versión del programa que funcionara con el nuevo formato de datos. Implicaba 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 imagen para reflejar el nuevo formato de datos.
No estoy seguro de que haya entendido completamente la lección de ese ejercicio, pero al menos dejó de quejarse por el resto del semestre.
Entonces, en respuesta a su pregunta: debe aprender nuevos idiomas porque quiere APRENDER. Y si no quieres aprender, más poder para ti ... (No estoy seguro de contratarte con esa actitud)
fuente
Hay varias razones por las cuales aprender un nuevo idioma puede valer una inversión de tiempo:
Aprender nuevos idiomas puede proporcionar beneficios inmediatos, como ya lo ha notado, 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 vale más tiempo de entrenamiento.
fuente
En una palabra: comerciabilidad .
Abre sus perspectivas de empleo cuando puede demostrar que tiene la capacidad de adaptarse y aprender cosas nuevas. Claro, puede seguir escribiendo aplicaciones usando el único idioma en el que se ha vuelto muy competente, pero lo que sucede cuando aprende 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 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 pasar fácilmente a otra cosa porque siempre son vistos 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 un producto. Claro, lo sabrás como nadie más, pero eso no te ayudará cuando te traten como si estuvieras encerrado 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. Trabaja en muchos proyectos diferentes en muchos idiomas diferentes, y preferiblemente en al menos 2 o más plataformas, y mantente comercializable por más que solo ser lo que eres hoy.
Por supuesto, hay muchas otras razones para aprender un nuevo idioma, a veces incluso por el placer de hacerlo. Abre su mente a otras posibilidades, por lo que cuando su jefe se le acerca y le dice "podemos hacer algo", puede decir Sí con una variedad de herramientas disponibles para usted.
fuente
En este punto de tu carrera, debes aprender nuevos idiomas si crees que te harán un mejor programador.
La mayoría de los lenguajes enumerados (Java / C / C ++ / Javascript / Objective-C) son OO / imperativos convencionales. Aprender otro lenguaje OO / imperativo probablemente no te enseñará mucho más sobre ese 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 estoy inclinado a ser escéptico sobre las afirmaciones de aumentos de productividad por orden de magnitud. Sin embargo, puede valer la pena echarle un vistazo al lenguaje de alta productividad de vez en cuando para ver si te gusta.
La mejor razón para aprender un nuevo idioma es aprender habilidades de aplicabilidad 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 te romperá el cerebro y mejorará tu mente, mientras que aprender la arquitectura de la máquina mejorará tus habilidades de depuración y optimización, incluso si nunca escribes otra línea de ensamblaje.
fuente
Cada uno de nosotros decide en qué queremos trabajar, así que ...
Si no quieres aprender PHP, nadie te está obligando y hay un montón de áreas donde puedes programar sin saber siquiera cómo deletrear PHP.
Mucha gente mira el mercado laboral para ver dónde están las áreas calientes y saltar sobre esas tecnologías. Mucha gente aprende un idioma y lo sigue y 20 años después se convierten en ingenieros de mantenimiento heredados. Y luego tienes muchas personas que se encuentran entre estos dos extremos.
Al final, todo se trata de dónde quieres estar.
fuente
El mejor argumento que conozco es que amplía su perspectiva sobre cuántas maneras diferentes se puede resolver un problema, o se puede expresar cierta lógica. Conocer bien Java y C ++ le ofrece una buena visión de los dominios nativo y VM, pero hay muchos más "grados de libertad" para explorar.
Tengo unos 15 años de experiencia en C ++, 5 en Java. Aprendí y dejé muchos lenguajes (PHP, Pascal, ensamblaje para varios procesadores diferentes, entre otros) y puedo decir con seguridad que incluso aquellos que ya no uso dejaron una marca significativa en cómo pienso sobre un problema. . Además: incluso si desea seguir, por ejemplo, Java, para un proyecto determinado, tendrá que 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. Sin duda, también dejó una huella 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 Java.
Dicho esto, no creo que debas aprender muchos idiomas diferentes todo el tiempo, solo por el simple hecho de hacerlo. Toma un tiempo considerable, y los "alojamientos" que tendrás que tener en mente para que coexistan con los demás que ya conoces también toman 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 el futuro cercano.
fuente
La gente aprende nuevos idiomas para ...
Confianza = Código impresionante!
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):
fuente
Estoy de acuerdo con la mayoría de las respuestas publicadas ya. Para agregarlos, consulte las estadísticas tomadas en la Encuesta de usuarios de desbordamiento de pila de 2011. Hubo una correlación muy alta entre el número 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.
http://blog.stackoverflow.com/2012/02/survey-results/
fuente
Alfred North Whitehead escribió un gran ensayo llamado " La importancia de la buena notación "
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 de C. Sin embargo, es mucho más fácil y rápido escribir código OO en Java, C ++ o C # porque tienen presentes primitivas de lenguaje que admiten OO más fácilmente.
Todas las razones para aprender nuevos idiomas dados hasta ahora 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.
fuente
La mayoría o todas las respuestas anteriores están relacionadas con la profesión. Programación. Quiero recordar que antes de ser programadores, somos seres humanos.
Una buena razón por la cual no aprender un nuevo lenguaje de programación, en su caso, es dejarse descansar o hacer otras cosas además de la programación.
Desde mi experiencia, trabajando en agricultura y madera, pensé mucho en la programación, más que en aprender un nuevo idioma. es decir, para ser un buen programador, primero debes 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 puede ser totalmente errónea, incluso si es un experto.
Muchos conceptos en la programación provienen directamente de la vida diaria: simplicidad, mantenimiento, práctica, útil, rápida, y a veces lenta , modularidad, etc. son todos los conceptos que utiliza un carpintero, por ejemplo.
Lo creas o no: personalmente he aprendido mucho sobre conceptos de programación, tomando unas largas vacaciones para recoger naranjas. El concepto principal que aprendí de él fue: la simplicidad. De trabajar como constructor he aprendido otro concepto: construir la base lo mejor posible, si quieres que las paredes se mantengan derechas.
Finalmente, la respuesta a su pregunta podría ser: tomarse unas vacaciones, unirse a una clase de taekwondo o cuidar el jardín; entonces su pregunta ya no le molestará.
fuente
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 el aprendizaje de un nuevo idioma generalmente le presentará al menos uno o dos, lo que lo hará más experimentado y capaz como programador. Algunos pueden cambiar su mundo de programación al revés. Pero cuando aprende un nuevo lenguaje que presenta paradigmas que ya conoce, ya los conoce y está acostumbrado a ellos.
fuente
Como la mayoría de ellos ya están escritos, tengo un buen conocimiento práctico sobre C. Recientemente, estaba trabajando en algún problema para el que necesitaba verificar los resultados; Fue matemático. Entonces, ¿cuál es la forma más rápida de obtener la respuesta? Me dio una patada para comprobar el lenguaje de programación más rápido que se aprende.
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 colapso.
Es importante solo hasta cierto punto que necesita saber un nuevo idioma que facilitará su trabajo / problema en la actualidad.
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 n soluciones.
fuente
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 está justificado". El resultado final es cientos de idiomas diferentes, donde es imposible que alguien entienda todo el código fuente, y donde los programadores necesitan perder aproximadamente un cuarto de su tiempo para ser 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 "seguro" de alto nivel (por ejemplo, Java) y un lenguaje de secuencias de comandos. También habría un gran martillo para destruir la "Torre del lenguaje de programación de Babel" creada por personas que no entienden las virtudes de la estandarización y el costo del "abandono" y la capacitación constante en la industria de TI en su conjunto.
Desde un sentido '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 para cualquier cosa te hace parte del problema.
fuente