¿Cómo trato con la necesidad de conocer múltiples lenguajes de programación? [cerrado]

25

Soy un programador relativamente joven. Tengo 23 años y he estado programando profesionalmente durante unos 5 años.

Como la mayoría de los programadores comencé con C, aprendí algo de ensamblaje x86 por diversión y luego encontré C ++, que resultó ser mi mayor pasión en el mundo de la programación. La programación con C y C ++ lo obliga a aprender API, libs y frameworks específicos de la plataforma; todo esto requiere un estudio y experimentación constantes. Después de un tiempo, tuve que pasar a Java y C # ya que la demanda en mi región es básicamente para estos lenguajes. Con estos idiomas ingresé al mundo del desarrollo web y luego tuve que aprender javascript. Desarrollar para .NET Framework fue emocionante al principio, pero constantemente sentía que Microsoft me estaba atando (y, por supuesto, .NET Framework me estaba alejando de Linux). Para el desarrollo de escritorio pude hacer casi todo lo que hice con .NET usando C ++ con Qt, pero para el desarrollo web tuve que buscar una alternativa. Rápidamente encontré Django y luego procedí a aprender Python para poder usar Django. Hoy en día estoy aprendiendo el desarrollo de iOS con Objective-C.

Hasta ahora, era bastante fácil aprender todos estos lenguajes (C ++ me entrenó bien), pero me preocupa que algún día no pueda seguirlos a todos. Solo para aclarar. Los únicos lenguajes que aprendí porque tenía que hacerlo eran C # y Java. Aprendí todos los demás por diversión, porque me encanta programar y aprender cosas nuevas. También me gusta mantener mis habilidades agudas en el desarrollo de escritorio, web y móvil.

Mi pregunta es: ¿cómo realizar un seguimiento de múltiples lenguajes de programación? (Quiero decir, realizar un seguimiento de los cambios en estos idiomas y mantener sus habilidades agudas) y: ¿Existe tal cosa como suficientes lenguajes de programación?

Rafael
fuente
20
¿Cómo te atreves a pensar en no aprender más idiomas?
Mateen Ulhaq
99
"Cada vez que aprendo algo nuevo, saca algunas cosas viejas de mi cerebro. Como esa vez, tomé un curso de vinificación en casa y olvidé cómo conducir".
Dean Harding
1
La programación no se trata de dominar la sintaxis del lenguaje X, la programación se trata de aprender a programar. Aprenda a elegir el idioma correcto para el trabajo correcto y luego, una vez que elija dicho idioma, aprenda la API y la sintaxis y luego haga lo que hace en cualquier otro idioma ... ¡PROGRAMA!
Chris
66
algunos idiomas que nunca olvidará; otros que esperas olvidar
Steven A. Lowe
3
Estás principalmente en OOP. Debe explorar otros lenguajes paradigmáticos como el lenguaje funcional Haskell y luego pensar en realizar un seguimiento.
Vigneshwaran

Respuestas:

27

Personalmente, creo que "hacer un seguimiento" de los idiomas es una pérdida de tiempo. Siempre es bueno aprender nuevos lenguajes populares, pero una vez que tenga un lenguaje popular y bien establecido como C ++, Python, etc., no debe preocuparse. Si eres un buen programador, el idioma es solo un conjunto de palabras clave.

Solo hay muchos paradigmas sustanciales por ahí; tal vez los perros viejos no puedan aprender nuevos trucos, pero realmente no hay muchos trucos nuevos. Si le preocupa que su lenguaje funcional / orientado a objetos / impulsado por eventos / lo que sea no dure, aprenda otro paradigma; pero no te preocupes demasiado por la elección exacta del idioma.

¿Y qué pasa si olvida una o dos palabras clave después de haber estado fuera de un idioma por un tiempo? Por eso tenemos Google.

Matthew Read
fuente
2
Simplemente no dejes que tu jefe vea. :) O un no programador. Pensarán que programar es tan fácil y por qué un programador recibiría un pago por un trabajo tan fácil.
Mateen Ulhaq
44
Creo que esto es cierto si te mantienes dentro de un paradigma específico. Por ejemplo, OO / Imperativo. Se descompone si observas un idioma que no es imprescindible.
Richard
@ Richard: que no quieres decir que OO implica necesariamente un imperativo, ¿verdad?
Frank Shearar
@Frank: Sí, en lugar de grupos de lenguajes muy utilizados (Java, C #, C ++) que son ambos ...
Richard
1
"(a) el lenguaje es solo un conjunto de palabras clave" - ​​No estoy de acuerdo. Cada plataforma tiene formas locales e idiomáticas de hacer las cosas. Ser un buen programador en la plataforma X implica mucho más que solo la sintaxis. Por ejemplo, un gran código JavaScript no sucederá si asumo que mi mentalidad .NET OO es todo lo que necesito.
Bevan
54

Me preocupa que algún día no pueda seguirles el rastro.

Después de 30 años, déjame decirte esto.

Sí, pierdes la noción.

¿Asi que?

Por eso escriben manuales de referencia.

S.Lott
fuente
14

El beneficio real de aprender varios idiomas es los diferentes paradigmas y modelos y formas de pensar que le conceden.

Su conocimiento de Java y su herencia única debería haber configurado su visión de C ++ y su herencia múltiple. Su conocimiento de Java y su GC debería haber configurado su visión de C ++ y su memoria administrada por el usuario. Su conocimiento de C ++ y sus plantillas debería haber configurado su visión de Java y sus genéricos. Todas estas relaciones funcionan en ambos sentidos, por supuesto.

Si nunca ha escrito en un lenguaje funcional, no apreciará lo que la <algorithm>biblioteca de C ++ está tratando de hacer y lo que falta al no tener funciones de ciudadano de primera clase (al menos antes de C ++ 11). Si nunca ha escrito en un lenguaje de escritura dinámica, no se dará cuenta de los límites de lo que la escritura estática puede y no puede hacer por usted. Si nunca ha escrito en un idioma sin estado mutable, no comprenderá las sanciones que el estado mutable le impone.

Aprender otros idiomas es bueno, porque te hace comprender mejor tus idiomas existentes. A este respecto, no necesita preocuparse por mantenerse actualizado, porque los conceptos de un idioma no tienden a cambiar rápidamente, o en absoluto.

Philip Potter
fuente
8
+1 No se trata solo de aprender varios idiomas (aprender idiomas es la parte fácil). Aprender diferentes paradigmas es lo importante. Personalmente, creo que a nivel universitario los estudiantes deberían estar expuestos a estos paradigmas diferentes, es un triste estado de cosas cuando hay tantas universidades "McJava (tm)" en estos días (Tenga en cuenta que no digo que Java sea malo por decir, lea el contexto completo por favor). :(
Darknight
8

Mi pregunta es: ¿cómo realizar un seguimiento de múltiples lenguajes de programación? (Quiero decir, realizar un seguimiento de los cambios en estos idiomas y mantener sus habilidades afiladas)

Escribir código Si desea mantenerse al día con las actualizaciones del idioma, simplemente siga escribiendo código.

¿Existe tal cosa como suficientes lenguajes de programación?

Aprender más de un idioma te ayuda a obtener una perspectiva de otros idiomas que de otro modo no obtendrías. Aprender muchos idiomas le brinda una perspectiva general de gran alcance sobre la computación en general.

Pero es imposible aprender todos los idiomas, y no todos los idiomas tienen valor, ni para usted ni para su trabajo. No vale la pena aprender los lenguajes esotéricos, excepto por su valor intelectual inherente, porque no tienen un uso práctico real.

Entonces no, no hay tal cosa como "suficiente". Pero ciertamente existe algo así como "no vale la pena".

Greyfade
fuente
4

Solo preocúpese por mantenerse al día con los idiomas que cree que usará o que está usando actualmente. Aprender nuevos idiomas es útil, pero no hay razón para aprender sobre cambios más pequeños en un idioma si nunca termina usándolo de nuevo.

jzd
fuente
4

Nunca dejes de aprender; pero date cuenta de que nunca sabes todo sobre todo. Siempre tendrás algunos entornos donde eres más fluido. No te preocupes, solo sigue divirtiéndote.

Javier
fuente
Es cierto, nunca dejes de aprender sino FOCUS. Aprender todo es como correr como un pollo sin cabeza, y al final eres bueno en NADA.
Slawek
@Slawek: "al final eres bueno en NADA exactamente". Casi. Una versión mejor podría ser: al final, las cosas en las que era bueno han sido reemplazadas por una nueva tecnología sobre la que no tiene idea.
S.Lott
3

Tiene suficientes lenguajes de programación cuando siente que ha terminado. Saber varios idiomas es genial, pero no sé si saber 12 cuando usas 2 en el trabajo proporciona más que un beneficio contextual. No hay nada de malo en saber más idiomas, pero el resto del tiempo probablemente sea mejor mejorar su conocimiento dentro de los idiomas y disciplinas que más necesita usar. Al igual que los idiomas hablados, desea ser más competente en los que proporcionan valor en su vida.

Puedo recordar a varios programadores que se jactaban de que sabían varios idiomas pero que escribían el mismo código en cada uno, y eso no es necesariamente algo bueno.

Además, a medida que creces, el tiempo te ayudará a decidirte (tengo mucho menos tiempo para estudiar de forma paralela que antes de casarme, tener hijos, ser escritor independiente, comenzar a lidiar con problemas de carrera y mi memoria comenzó a ir hacia el sur.

Bernard Dy
fuente
3

He aprendido muchos idiomas en los últimos 25 años. Después de un tiempo, algunos se vuelven menos útiles y se olvidan (Perl). Ni siquiera hablemos del ensamblaje 6502, Apple BASIC, Lisp, Prolog, Pascal, SPAN, FORTRAN ...

Otros idiomas se desvanecieron, luego tuve que volver a aprender (Python) después de 10 años. No tenía sentido mantenerse al día con Python, no tarda mucho en ponerse al día: Google / SO es su amigo.

Al final, un lenguaje es solo una herramienta. Lo usas para el trabajo en cuestión. La habilidad es saber qué usar cuando. Para ser sincero, una vez que comencé a usar C ++, nunca quise volver a codificar en C. Cuando aprendí C #, nunca quise volver a hacer C ++.

Dave
fuente
3
Los informes de la muerte de Perl son muy exagerados.
Philip Potter
No es nada personal contra Perl. Solía ​​trabajar en Unix, por lo que Perl era mi arma preferida. Creé aplicaciones tecnológicas bastante grandes con él. Luego me mudé a Windows. Ahora, estoy de vuelta otra vez, pero la aplicación que estoy desarrollando está en Python, por lo que parece poco útil usar Perl y Python.
Dave
1

En mi opinión, la programación no se trata solo del lenguaje que está utilizando. La programación es una forma de pensar. Debes ser un buen analista para escribir un buen software, el lenguaje de programación solo te ayudará a construir tu software. Claro, cada idioma tiene sus defectos o ventajas, pero para construir un buen software hay que pensar como desarrollador. Las personas que no piensan como un desarrollador no crearán un excelente software, sin importar cuán bueno sea el lenguaje que estén usando.

Siempre hago la comparación con alguien que está construyendo una casa, a él no le importa su martillo, siempre que tenga uno puede construir la casa. Es posible que necesite familiarizarse con el martillo (por ejemplo, el peso), pero una vez que esté familiarizado con la herramienta, puede construir una casa fantástica. Acostumbrarse a la herramienta no es tan difícil ya que la mayoría de las "versiones" de la herramienta son bastante similares (esto se aplica a los martillos, pero también a los lenguajes de desarrollo).

Mientras estudiaba, solíamos usar Java (antes usaba ASP y VB5), pero después de graduarme (hace unos 5 ~ 6 años) aprendí a usar C # (y Javascript), un cambio de trabajo me "obligó" a ir a VB.NET, el siguiente trabajo me permitió usar los dos lenguajes .NET (lo cual hice) e incluso "permitió" dejarme usar Java nuevamente (para alguna herramienta heredada que estaban usando). Hoy en día estoy trabajando con X ++ (lenguaje de Microsoft Dynamics AX), pero todavía estoy desarrollando algo en .NET. Estos son solo el idioma con el que trabajo en mi trabajo diario, también me gusta investigar nuevos idiomas como F #, Ruby, etc. Aprender estos nuevos idiomas tomó solo un par de días (solo para entender la sintaxis) y el resto de las veces solo estás jugando con el idioma y aprenderás gradualmente.

Hay tantos idiomas, pero tiendo a enfocarme solo en idiomas que son realmente diferentes (como F #). Veo que aprender nuevos idiomas es interesante y divertido, así que por ahora estoy bien, aprender un nuevo idioma es bastante fácil (al menos si el pensamiento es el mismo, C #, VB, Java son ale iguales, pero por ejemplo F # es bastante diferente) y no me preocupo demasiado

Gertjan
fuente
1

Comencé mi carrera hace 5 años en vb6, pasé a php, luego a java y luego a .net. actualmente durante el último año trabajando en asp.net mvc2 y también estoy probando mvc3

el secreto es que uno nunca debe pasar de moda, no se puede dominar todo en el mundo, por lo que preocuparse por eso no es la opción

maz3tt
fuente
1

Creo que esta es una pregunta de carrera. Por lo tanto, debe tener en cuenta a las personas que lo contratan solo si conoce un conjunto específico de herramientas. Tal vez esto descalifique el trabajo, pero tal vez no. Así que aprende cosas nuevas superficialmente. Pero siga aprendiendo las cosas difíciles (matemáticas, nuevos paradigmas de programación) profundamente.

Adaptarse para usar nuevas herramientas es una compensación. La industria de TI está llena de exageraciones y debe defenderse de ellas. Esto comienza con la declaración: no, sigo usando mi antiguo editor (¿emacs?). Pero de vez en cuando tienes que aprender cosas nuevas. Realmente mejoran con los años (3-4). Si tienes la oportunidad de aprender cosas nuevas en el trabajo con un proyecto real a mano: no lo dudes, ¡será divertido! La mejor manera de discernir el bombo de la innovación real es mirar a las personas que lo usan. Eres mejor juzgando a las personas que la tecnología :)

fausto
fuente
1

Sugeriría aprender idiomas con diferentes paradigmas, como funcional, OO y lógico, porque son muy diferentes.

Sin embargo, no necesariamente sugeriría aprender 3 idiomas funcionales o 3 OO-Languages.

Si eres bueno recitando, tal vez. Pero me resulta difícil aprender cosas similares una y otra vez, lo que resulta ser casi lo mismo, pero no exactamente, especialmente las cosas de la biblioteca, como la pintura de ventanas, la invocación de bases de datos, las bibliotecas de colecciones, donde hay que recordar diferentes nombres y convenciones, pero que comportarse casi igual. ¿Fue paintRect (xstart, ystart, xend, yend) o (xstart, ystart, ancho, alto)? ¿Incluyendo 'fin' aquí, sin incluirlo allí?

Pero algunas personas no tienen dificultades para aprender estas cosas.

Por lo tanto, sugeriría aprender algunos idiomas, pero aprender algunos de ellos en profundidad podría enseñarle más que un idioma tras otro solo en la superficie. Tal vez no 2 idiomas por año, pero cada dos años un idioma.

usuario desconocido
fuente
0

Estoy como en el lado opuesto del espectro. Odio aprender varios idiomas, porque aprendes cosas simples y nunca eres bueno en problemas más profundos de esta manera. Al mismo tiempo, aprende malas prácticas de otros idiomas.

Alguna vez has visto a un desarrollador de Java incondicional codificando en C ++, es un desastre esperando explotar ...

El problema es que todos los idiomas tienen sus problemas donde la abstracción comienza a filtrarse o juega en tu contra. Puede aprender la sintaxis en 1 día, pero llevará 5 años saber cómo codificar de manera eficiente y sin errores. ¿Usas en () o []? ¿Por qué malloc hará que su largo proceso se quede sin memoria?

Y aprender paradigmas es también una propuesta interesante. Debido a que usar las pautas de Java en C, o las pautas de Perl en C #, probablemente se convierta en una increíble demostración de cómo escribir código ofuscado.

Aprender algunos idiomas nuevos puede ayudarte a ampliar tus horizontes, pero no deberían hacerte sentir más inteligente, deberían hacerte sentir más tonto con cada uno nuevo que aprendas.

Descifrador
fuente
0

Alguien más sugirió en alguna parte que "todos deberían saber 3 idiomas".

Tiendo a estar de acuerdo. Debe conocer un lenguaje compilado (C / C ++, C #, etc.), un lenguaje interpretado (Python, Ruby, etc.) y un lenguaje de procesamiento de texto (Perl, Awk, etc.). También creo que debería conocer un lenguaje de script de shell (Bash, en estos días o Windows Power Shell). El mismo consejo se aplica a los kits de herramientas y API.

La única forma de mantenerse al día con un lenguaje a medida que evoluciona es usarlo. Si mantiene su conjunto de herramientas de idiomas regulares limitado a unos pocos, será más fácil usarlos todos regularmente para resolver problemas, y así podrá mantenerse al día con los desarrollos de cada uno.

Por lo tanto, póngase al día con las tecnologías que utiliza a diario y quédese allí. No tiene nada de malo incursionar en otras áreas de interés cuando tiene tiempo. Por lo general, a un programador competente no le lleva mucho tiempo aprender una nueva tecnología, dada la motivación suficiente y el tiempo de bloqueo para sentarse con ella.

No hay necesidad de mantenerse al día con todas las tecnologías disponibles ... podrá girarlas hacia arriba y hacia abajo según sea necesario, manteniendo las que usa con más frecuencia como su enfoque.

Adam Hawes
fuente
-5

Chicos, de verdad, eso es triste. Sin especialización, "aprenderé todo". Lo siento con ese enfoque, lo sabrás todo, pero tus habilidades serán tan bajas que nadie te pagará bien.

Hubo una investigación que decía que necesitas 10 años de entrenamiento para ser "bueno" con cualquier cosa (programación, tocar la guitarra, bailar, etc.). Y eso es cierto, necesita de 5 a 10 años de escritura en C ++ / python / etc. para adquirir las habilidades necesarias para desarrollar un código comercial de buena calidad.

¿Y esa mierda sobre referencias de lenguaje? ¿Y dónde están los buenos hábitos de programación que son diferentes para cada lenguaje de programación? ¿En qué referencia encuentra buenas prácticas de administración de memoria y estructuras de datos para C o prácticas de seguridad del lado del servidor?

Escritorio, móvil, servidor (!!!): estos son entornos completamente diferentes. Tú decides si quieres "jugar" toda la vida o si te enfocas en una cosa y obtienes un trabajo decente. Probablemente la gente te dirá tonterías que debes saber todos los idiomas del mundo, porque están tratando de hacer lo mismo para mejorar sus trabajos de mierda. Pero adivina qué, nunca podrán hacer esto, incluso después de leer la "referencia" de Java, porque ¿de qué serán capaces entonces? Exactamente NADA.

Sí, aprende diseño gráfico, escritura de guiones y flash, ¡lo necesitarás! :) No sé exactamente qué está mal, pero si estás haciendo cliente, servidor y dispositivo móvil a la vez, ¡deja tu trabajo y no esperes hasta mañana porque debes hacerlo ahora!

Mi pregunta es: ¿cómo realizar un seguimiento de múltiples lenguajes de programación?

Su pregunta debe ser cómo no hacer un seguimiento de ellos. Mi consejo, deja Pokemon y sé bueno en algo que te guste.

Slawek
fuente
1
Sabes que tengo razón, ¿quién gana más? ¿Ingeniero senior de Java en IBM o "programmer-o-graphican-o-computerfixer-o" en alguna empresa local de desarrollo de sitios web? Bueno, conozco buenos gráficos que solo hacen gráficos y cobran $ 10,000 por un proyecto de pancarta "estúpido" ... y algunos tipos de "lo sé todo" que están haciendo algunos sitios web estúpidos para negocios locales estúpidos por $ 150 (que incluyen hacer gráficos), arreglando mientras tanto, computadoras, etc. Debido a que saben tan poco en tantas áreas que todo lo que realmente pueden hacer es instalar un tema de WordPress o verificar por qué msoffice no está funcionando.
Slawek
-1 por ser más una queja que una respuesta, y por confundir tu experiencia personal con el mundo. Me gustaría ver a qué "investigación" se refiere. La noción pop que circula en estos días es que se necesitan 10,000 horas de práctica activa para desarrollar experiencia en un campo. Esto fue popularizado por los escritos de Malcom Gladwell. Probablemente no sea malo como regla general, pero difícilmente sea una ley de la física. 10,000 horas son cinco años de 40 horas semanales, y por supuesto, muchos de nosotros dedicamos horas mucho más largas a las primeras etapas de nuestras carreras.
Charles E. Grant
No, ellos tienen una especialización. Su especialización es la programación. Los lenguajes de programación son simplemente herramientas del oficio para recoger cuando sea necesario y descartar cuando no sea necesario. La cosa de las 10.000 horas fue popularizada por el libro de Malcolm Gladwell. ¿Pero entendiste lo que estaba diciendo? Él decía que ser un genio musical, por ejemplo, tomó 10,000 horas. No estaba diciendo que se necesitaron 10,000 horas para tocar el piano.
Antonio2011a
Si nadie aprendiera más de un idioma, todos estaríamos programando en ensamblador. Hoy estoy usando Groovy, Java, Javascript, SQL, Ant y Selenium. No necesito 7 personas en mi equipo. Necesito personas que puedan adquirir una nueva tecnología y hacer que las cosas sucedan.
Kevin Cline