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


97

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?


66
programmers.stackexchange.com/questions/118338/… Quizás te interese la respuesta que le di a gere.
deadalnix

3
Si puede ver un nuevo lenguaje con nuevos conceptos y no desea comprenderlos, muchos lugares no lo contratarán (de hecho, se hacen muchas preguntas de entrevista para determinar específicamente cosas como esta)
Bill K

3
Preguntaré por qué no debería aprender un nuevo idioma.
usuario

2
@ZacharyK incluso si el trabajo era para un desarrollador de Java, y el candidato era superduper en Java. Suena como si te estuvieras disparando en el pie.
NimChimpsky

2
Hay muchos tipos de Super Java por ahí. Estoy tan interesado en lo que sabrá en 6 meses como lo que sabe ahora. (Por supuesto, parece que paso todo mi tiempo en Erlang, CoffeeScript y PHP)
Zachary K

Respuestas:


178

Del Programador pragmático , Consejo # 8 "Invierta regularmente en su cartera de conocimientos":

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

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.


Excelente punto Este pensamiento es lo que me llevó a probar RavenDB en un proyecto, y aprendí mucho después de años de estar atrapado en una rutina de SQL Server.
Bob Horn

52
Pensé que era cuando todo lo que tienes es un martillo, todo parece tu pulgar
Zachary K

2
Estoy completamente de acuerdo. También agregaría que aprender otro idioma te ayuda a comprender mejor los aspectos de los idiomas que antes creías conocer. También ayuda a distinguir cuáles son los conceptos / patrones / limitaciones fundamentales de la programación "real", y cuáles son simplemente artefactos de su conjunto de herramientas en particular. Por ejemplo, si todos los idiomas que conoces están tipados débilmente, es posible que nunca sepas que existe una escritura fuerte, ¡y nunca te preguntarás por qué! En consecuencia, sus productos pueden sufrir rendimiento o seguridad, a pesar de que pueden sobresalir en el tiempo de comercialización ;-).
JJC

3
El programador pragmático es uno de los mejores libros de programación que he leído. ¡Realmente bueno!
Soner Gönül

Realmente estoy de acuerdo con "Se trata de pensar de diferentes maneras fuera de sus patrones de pensamiento normales". Cuando aprendí Python, obtuve el nuevo mundo de una forma de pensar.
Yoo Matsuo

80

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


3
+1 Javascript puede ser funcional, pero ciertamente parece que al OP le faltan algunos paradigmas de su caja de herramientas. Y una mayor experiencia con lenguajes funcionales dará una visión más profunda con sus lenguajes existentes, por ejemplo, con plantillas C ++
jk.

+1 para Mantenerlo fresco, realmente se siente bien trabajando en algo diferente
Mona

Me gustaría señalar que las optimizaciones de llamada de cola no tienen nada que ver con si un lenguaje es (puro) funcional o no, los lenguajes imperativos compilados para ejecutarse bajo el tiempo de ejecución de .NET de 64 bits obtienen la optimización de llamada de cola gratis, por ejemplo .
Blindy

1
LOL, sí, eso no es lo que hace que Erlang sea un lenguaje funcional puro, pero es un cambio total de perspectiva. En los idiomas imperativos, se nos recomienda evitar la recursividad para todos los casos, excepto los más triviales, y la recursividad de los lenguajes funcionales es una forma de vida. La coincidencia de patrones en lugar de if / else o switch / case también es bastante genial.
Michael Brown

2
¡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). Este es uno de los argumentos más fuertes para aprender un lenguaje funcional que he visto. Nunca pensé que podría ser tan eficiente.
Olegs Jeremejevs

37

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.


22
+1. "No vale la pena conocer un lenguaje que no afecta la forma en que piensas sobre la programación". - Alan Perlis
ruakh

2
Rechazo la premisa de que "Pensamos con palabras", ya que niega la posibilidad de que cualquiera (o cualquier cosa) sin palabras pueda pensar. Pero las palabras son extremadamente útiles para etiquetar conceptos (y ayudar a distinguirlos). Nos mayoría hacemos nuestro pensamiento superior con (mucho la participación de) las palabras porque es eficiente. Lo cual es una afirmación más equívoca, pero pienso más cerca de la verdad. Curiosamente, no puedo rechazar el uso de palabras sin usar palabras ...
Donal Fellows

@DonalFellows: Creo que tenemos algunos "procesos mentales" que no se pueden expresar con palabras. Pero no los llamo "pensamientos", sino "sentimientos", "reflejos", "intuiciones", etc. Creo que un pensamiento apropiado debe ser expresable en términos de algún tipo de lenguaje. Entonces, para mí, algo que no tiene un lenguaje puede vivir, procesar, reaccionar, sentir ... pero no pensar. Pero esta es una creencia, basada en la intuición, no una evidencia real. Y también un poco fuera de tema, realmente :)
egarcia

Absolutamente de acuerdo, aprender idiomas solo porque son el nuevo lenguaje de programación genial no tiene sentido. Debe atenerse a otros muy diferentes e intentar no cubrir demasiados. Ser bueno en algo tomará una cantidad considerable de tiempo (probablemente más de 10 años), no importa si está tocando un instrumento musical, cocinando o programando.
Señor Smith

2
@evilcandybag: De hecho, puedo demostrar una fuente: sciencemag.org/content/306/5695/496 , sciencemag.org/content/suppl/2004/10/15/1094492.DC1/… (PDF).
ruakh

26

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


2
+1! Un ejercicio que estoy haciendo en este momento es implementar el mismo algoritmo (clasificación de fusión) en diferentes idiomas: esto realmente me da una idea de cuántas maneras hay de expresar el mismo cálculo. Ya tengo las versiones C, C ++, Pascal, Java, Scala y Haskell en ejecución. Python, Ruby, Modula2, Scheme están en camino. ¡Creo que puedes aprender mucho mirando diferentes lenguajes de programación! Y al hacer una cosa en un idioma, puedo obtener muchas ideas sobre cómo implementarlo de una mejor manera en otro idioma.
Giorgio

3
Me gusta esto, excepto por cómo describe a Haskell. Todavía puede escribir código incorrecto que compila. (La corrección de tipo no es el único requisito para la corrección general). La razón para aprender Haskell es que es notoriamente muy cercano a las matemáticas y tiene un modelo de evaluación vago; eso debería sacudir las nociones de la mayoría de los programadores sobre de qué trata la programación.
Donal Fellows

Creo que debería intentarlo con Prolog. Cuando lo aprendí por primera vez, me sorprendí. Cómo puedes hacer cosas solo escribiendo pocos caracteres.
usuario

3
@DonalFellows en mi experiencia si obtienes los tipos correctos en Haskell, el resto del programa tiende a escribirse solo.
tobyodavies

1
"Ruby, un lenguaje OO divertido y débilmente escrito": ¿Está Ruby realmente mal escrito o más bien dinámico?
Giorgio

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?

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.

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

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 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 es diferente. Muéstreme qué tendría que cambiar en su programa para que funcione con el nuevo formato de datos.

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)


66
Si bien tus intenciones eran buenas, si yo fuera ese estudiante, simplemente pensaría que la única razón por la que tu aplicación se cambió fácilmente fue porque sabías de los eventuales cambios en los requisitos. Si el programa se escribiera en C con el mismo conocimiento, también habría que hacer cambios mínimos allí.
hspain

Tenía un compañero de trabajo con una actitud similar: "C y PHP me hacen ganar dinero. ¿Por qué debería perder el tiempo aprendiendo otro idioma?" Ya no trabaja allí.
greyfade

3
¡Todos los requisitos cambian tarde o temprano! Ese es un poco el punto.
Zachary K

@hspain: en realidad, debido a todo el punto del ejercicio, es que Cobol trata las especificaciones de E / S como una parte de primer orden de un programa, en lugar de algo que ocurre de manera laissez-faire en función de la forma en que escribió y ordenó su Declaraciones de E / S en C. Y para hacer eco del comentario de Zachary K, el hecho es que los requisitos cambian. - Sí, podría estructurar un programa en C de tal manera que sea menos frágil cuando cambien los requisitos de E / S, pero eso implica pensar en el programa de una manera completamente diferente de lo que normalmente hace cuando escribe un programa en C.
Zeke Hansell

No sabía eso sobre cobol en realidad. Algún día tendré que ir a echar un vistazo
Zachary K

12

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

  1. Aumente el tamaño de la 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 opció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 script le abre otras posibilidades, 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 quiere desarrollar para iOS, aprender este lenguaje es casi obligatorio.
  3. Aprenda nuevos paradigmas: ciertos idiomas pueden tener un mejor acceso a paradigmas más nuevos. Usando C como ejemplo, podría ser difícil desarrollar servicios web en ANSI C. estándar. Sin embargo, aprender a desarrollar en .NET, Java, PHP u otros lenguajes nuevos podría acelerar el desarrollo de servicios web.

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.


11

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.


8

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.


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


En su descripción, suena un poco demasiado en blanco y negro. Las "tolvas tecnológicas" y los ingenieros de mantenimiento heredados son los dos extremos en mi humilde opinión, con la mayoría de nosotros sentados en algún punto intermedio. Además, algunos "fanáticos de la tecnología" están demasiado locos por las últimas cosas brillantes como para aprender realmente cualquier tecnología correctamente (lo que llevaría más tiempo del que están dispuestos a invertir en una sola tecnología), por lo que es posible que nunca produzcan soluciones sólidas a largo plazo. a los problemas
Péter Török

1
@ PéterTörök: edité mi respuesta. Estaba señalando la escala, pero era demasiado vago para explicarlo todo. Tienes razón, es un espectro continuo.
DXM

5

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.


5

La gente aprende nuevos idiomas para ...

  • ampliar sus conocimientos Si sabe más, se siente mejor y tiene más confianza.
    Confianza = Código impresionante!
  • tener una caja de herramientas más grande. Digamos que tienes que hacer una aplicación. Si solo conoces Java, vas a hacer el programa en Java. Pero si conoce Java, Python, Scheme y Lisp, es probable que elija la mejor herramienta para el trabajo.
  • consigue un trabajo. Enfrentarlo. Si sabes más idiomas, tienes más oportunidades de trabajo. Eso se explica por sí mismo.
  • convertirse en un mejor programador versátil. Si conoce la sintaxis de Perl, sabe que puede volverse un poco loco. Al escribir programas largos en Perl, básicamente te ves obligado a seguir las mejores prácticas, o no serás un campista feliz. Como conoce las mejores prácticas de Perl, esto podría ayudarlo a escribir un 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):

Escribir código con frecuencia; Escribe bien el código; Escribir código en Scheme, PHP, Java, Python, Lisp, Perl, C, C ++, C #, Visual Basic, Ruby ...


1
@Nupul: O al menos creo que la cita es así ...
Dinámico

5

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/


4

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

Es interesante observar cuán importante para el desarrollo de la ciencia puede ser un símbolo de aspecto modesto. Puede representar la presentación enfática de una idea, a menudo una idea muy sutil, y por su existencia hace que sea fácil exhibir la relación de esta idea con todos los complejos trenes de ideas en los que ocurre.

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.


2

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


Si bien podría estar de acuerdo con usted, agregaría que después de tener todas estas buenas ideas sobre programación mientras realiza otras actividades, me gustaría aprender un lenguaje de programación en el que se implementen estas ideas. Por lo tanto, los dos aspectos de la OMI (tomar un descanso de la programación y aprender nuevos lenguajes de programación) no se excluyen (no deberían).
Giorgio

Es cierto que tomar un descanso de la programación y aprender nuevos lenguajes de programación no se excluyen (no deberían). Sin embargo, en el mundo muy rápido en el que vivimos, es importante recordar que el descanso puede ser más productivo que el movimiento. Puede ser un descanso para tomar café, o incluso un descanso de 1 año.
Shian

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


-3

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.


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


44
Suena como un ideal poco práctico. ¿Quién decidiría estos idiomas estándar y cómo decide que vale la pena cambiar un nuevo idioma? ¿Qué pasa con el riesgo de quedar atrapado en un idioma malo porque nadie está dispuesto a probar algo nuevo? Imagínese si hubiéramos hecho esto hace 10 años: ¡todos pueden usar C ++ y Java (o tal vez VB)!
Restablece a Mónica

3
Su concepto de "mundo ideal" suena sospechosamente como el de Mil novecientos ochenta y cuatro . En su Newspeak, las ideas revolucionarias como "programación funcional" y "inferencia de tipos" y "polimorfismo de primera clase" y "métodos múltiples" ni siquiera se podían pensar, porque no habría forma de expresarlas. Es cierto que Orwell no parece haber pensado en su idea de martillo, pero si lo hubiera hecho, estoy seguro de que habría encontrado su camino.
ruakh

2
Además de los puntos anteriores, muy poca de su "respuesta" es relevante para la pregunta real. Voto a favor.
usuario16764

3
En un mundo ideal, solo habría una respuesta a la pregunta de Nupal. Tener todas estas respuestas adicionales después de la primera por parte de personas que no entienden las virtudes de la estandarización solo causa confusión. No hay nada de malo en no estar de acuerdo con la respuesta en su propia mente, pero publicar una respuesta adicional lo hace parte del problema.
benzado

1
Restringirse a esos idiomas no evitaría ninguno de los problemas que mencionó. Tuve que volver a escribir la aplicación muchas veces más debido a los cambios en los marcos que a los idiomas.
Fabio Ceconello
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.