¿Cómo has tenido la oportunidad de aprender varios idiomas? [cerrado]

9

Leí Un programador debería concentrarse en al menos cuántos idiomas? , y descubrí que no sé idiomas en los números 2 y 3 de la primera respuesta. Quiero aprender más idiomas para aumentar mis conocimientos y habilidades de programación. Sin embargo, generalmente en las empresas usan un marco fijo e idiomas y los cambios rara vez. Así que no estoy seguro si puedo tener la oportunidad de aprender esos idiomas y creo que sería lo mismo para otros programadores.

Sin embargo, he visto muchos desarrolladores que conocen varios idiomas aquí. ¿Cómo tienes la oportunidad de aprender muchos idiomas?

Actualizar

Creo que hay muchas personas que se sienten incómodas porque parece que no quiero estudiar en mi tiempo libre. En realidad, eso no es cierto. :) Soy un programador entusiasta y es por eso que publiqué este tipo de preguntas aquí. Estudio en mi tiempo libre, pero pensé que no sería suficiente ser hábil en los idiomas. De todos modos, gracias por todas las respuestas!

Sanghyun Lee
fuente
77
Simplemente, aprende cosas nuevas en tu tiempo libre.
Jonas
1
Amigo, esa respuesta ha sido publicada por un programador de 39 años. Creo que es una buena lista, pero no te mates por eso.
Trabajo
77
No tienes "oportunidades". Usted hace posibilidades. Si quieres aprender más idiomas, entonces sal y hazlo. No esperes a que te llegue alguna responsabilidad mítica del trabajo.
Joel Etherton

Respuestas:

10

Creo que la mejor manera de aprender un idioma es usarlo inmediatamente para hacer algo útil o que necesites .

Por ejemplo, me encontré en la necesidad de automatizar muchas operaciones que tenía que hacer manualmente cada vez. Tareas repetitivas, creación de archivos y carpetas, etc., así que simplemente elegí un lenguaje de script para hacer una herramienta útil. Fui por Perl y comencé a aprender la sintaxis y las funciones que necesitaba para crear mi script, gracias a los tutoriales y libros en línea.

En un par de días tuve mi herramienta en funcionamiento, luego en mi tiempo libre seguí aprendiendo cosas nuevas sobre el lenguaje y agregando más funcionalidades.


Otra gran opción que viene a la mente es: si no encuentra un idioma que le guste o cree que no se ajusta completamente a sus necesidades, aún puede crear su propio idioma .

Lo estoy haciendo ahora con Perl, elegí una sintaxis que me ayudaría a resolver mejor mis problemas específicos (ya que está escribiendo su propio idioma, es posible que desee elegir la sintaxis correcta para el trabajo, la que mejor describe y resuelve sus problemas de dominio específicos).

¿El resultado? El desarrollo ahora es mucho más rápido y el código en sí es mucho más descriptivo porque es un lenguaje específico de dominio. Hace unas semanas hice una pregunta relacionada con este tema con muchos enlaces útiles.

Puede usar cualquier lenguaje de secuencias de comandos para crear uno nuevo, incluso con PHP.

Jose Faeti
fuente
No sabía que podía crear mi propio idioma con Perl. ¿Podría elaborarlo o darme alguna referencia?
Sanghyun Lee
Pedí esto aquí . Básicamente, debe crear un script que comprenda (analice) sus entradas y realice diferentes tareas según lo que escriba. Puede ser simplemente un conjunto de funciones o una sintaxis de lenguaje completamente nueva. Entonces puede automatizarlo todo si es necesario. No solo con Perl, puede usar cualquier lenguaje de script para crear uno nuevo.
Jose Faeti
8

Este tipo de preguntas siempre me desconciertan. He usado 7 idiomas profesionalmente, he escrito código en alrededor de 5 idiomas más en entornos académicos y de pasatiempos, y puedo leer el código en quizás una docena de idiomas más. Ni una sola vez aprendí un idioma por el simple hecho de hacerlo. Siempre hay un objetivo concreto e inmediato en mente. Por ejemplo, este fin de semana aprendí suficientes bibliotecas de Android para comenzar a trabajar en una aplicación para mi familia. Si tuviéramos iPhones, habría aprendido Objective-C.

Mi sensación es que conocer varios idiomas es un síntoma de ser un programador experto, o al menos entusiasta, no una causa de ello. Si no puede pensar en una razón convincente para aprender un nuevo idioma, no sé cuánto le beneficiaría.

Karl Bielefeldt
fuente
3

La mejor manera de aprender un nuevo idioma cuando tienes un problema que resolver. En lugar de simplemente usar lo que le resulta cómodo, dedique un tiempo a analizar qué herramientas (lenguajes, marcos, bibliotecas) podrían ser útiles para ayudarlo a resolver el problema. Si tienes tiempo para aprender la nueva herramienta, anímate. Es posible que no pueda hacer esto en el trabajo, cuando tiene presiones de horario y limitaciones tecnológicas impulsadas por factores externos, pero no hay ninguna razón por la que no pueda adoptar este enfoque para proyectos personales.

Thomas Owens
fuente
2

Solo tienes que hacer el tiempo para hacerlo. Mira el libro "Siete idiomas en siete semanas" de Prags. Te dará una introducción a siete idiomas muy interesantes y desde allí puedes ir a todo tipo de lugares.

Zachary K
fuente
1

Solo comienza a usarlo. Obviamente, construir un sistema de producción desde cero en un idioma al que nunca haya estado expuesto es una mala idea, pero aquí hay algunas sugerencias:

  • Aprende en tu propio tiempo. Elija un proyecto que le parezca interesante, en el que esté seguro de poder terminarlo por su cuenta. Es mejor hacer una lectura introductoria sobre su nuevo idioma para juzgar si es adecuado: cada idioma tiene fortalezas y debilidades, y es mejor comenzar con un problema en el que el idioma fue diseñado para sobresalir.
  • Comience a realizar tareas de mantenimiento en un proyecto existente. De esta manera, puede aprender una gran parte del lenguaje sin siquiera leer la documentación: se puede inferir mucho del código de ejemplo, y para las partes en las que necesita leer la documentación, será mucho más claro porque ha visto el código ya. También es más fácil buscar "qué hace este código" que "cómo puedo escribir código que haga X".
  • Use su nuevo lenguaje para las herramientas pequeñas y los ayudantes que necesita: scripts de shell, código desechable para tareas específicas, cálculos rápidos (por ejemplo, los intérpretes interactivos de muchos lenguajes dinámicos - python, lisp, haskell, etc. - son excelentes calculadoras). Sin embargo, no todos los idiomas son adecuados para esto.
tdammers
fuente
1

Elija algo relativamente pequeño que haya hecho en un idioma y desarrolle un reemplazo directo en otro idioma. Haz esto solo para desafiarte a ti mismo. Para completarlo, aprenderá mucho sobre el otro idioma.

Justo en la última semana, decidí aprender y volver a escribir un back-end de servicio web en NodeJS (anteriormente un servicio JSP). Solo me llevó alrededor de un día hacer que el servicio básico funcionara, y unos días más tarde Extendí su infraestructura, manejo de errores, registro y agregué monitoreo en vivo. Ahora es superior al original. Si la gerencia lo acepta o no es irrelevante, ya que aprendí algo y estoy muy feliz con eso.

Fosco
fuente
1
  • Considero que una fracción de mi trabajo es "investigación". En 1998, la investigación significó corregir errores Y2K. La investigación del mes pasado significó aprender Subversion. He estado investigando durante 40 años. Cuando enumero los idiomas, debo enumerarlos en orden alfabético.

  • Cuando aprendo un idioma, leo el manual de referencia de principio a fin. Entonces lo uso por unos meses. Luego leí el manual de referencia nuevamente. La segunda lectura revela muchos trucos e implicaciones que me perdí la primera vez.

  • La investigación práctica cubre lenguajes normales, como C # y Pascal. La investigación avanzada cubre lenguajes extraños, como LISP y FORTH. Probablemente nunca usará LISP profesionalmente, pero aprenderlo amplía considerablemente su mente.

  • Por supuesto, en mi entorno, no me pagan por el tiempo, me pagan por la entrega. Si puedo dar a luz en dos semanas, usando seis horas al día, puedo usar las otras tres para investigación. Si lleva doce horas al día, bueno, entonces no hay investigación.

  • Toda investigación, por supuesto, debería tener alguna utilidad potencial para el que me paga. Las pequeñas utilidades son buenas; la próxima vez que desee procesar su código fuente C, pruébelo en Python. (No, no conozco Python, pero he oído que es bueno para la manipulación de cadenas).

Andy Canfield
fuente
0

A veces las oportunidades provienen de tu empleo. Por lo general, hay uno de los tres impulsores para este tipo de oportunidad.

  1. Es una tecnología completamente nueva. Por ejemplo, muchas compañías pagaron la capacitación de C # para sus desarrolladores en los primeros dos o tres años después del lanzamiento de .NET.

  2. Es facil de aprender. Por ejemplo, en una tienda de Linux, encontrará que necesita escribir scripts .bash. Si ha estado utilizando sesiones de terminal, etc., y hay otros desarrolladores que tienen experiencia en escribirlas, debería poder adquirir esta habilidad, aunque solo sea para automatizar algunas de sus propias tareas.

  3. Es una habilidad técnica poco utilizada, y su empresa no quiere pasar por el tiempo y los gastos de encontrar un consultor para hacer el trabajo. Por ejemplo, aprendí a escribir XSLT porque necesitábamos una manera fácil de transformar algunos archivos XML (log) para mostrar.

Otras oportunidades que necesita hacer fuera del trabajo. Elija con cuidado: ¿qué tecnologías considera útiles en el futuro? En estos casos, debe dedicar tiempo y esfuerzo a aprender y aplicar la tecnología. Esto debería ser parte de un plan general de carrera, y es posible que deba pagar las clases. (Tuve suerte: cuando aprendí Java, lo enseñaban por la noche en un colegio comunitario local).

Jay Elston
fuente
0

Respondiendo a su pregunta, desde mi propia experiencia (soy bastante nuevo en la industria, así que no mucho) aprendo nuevos idiomas haciendo una investigación para ver qué idioma se adapta mejor a mis necesidades. En la universidad, tenía un proyecto de criptografía que requería el uso de enteros grandes. Se estaba volviendo bastante complicado en C ++, así que recurrí a Java ya que proporcionaba la clase BigInteger. En mi trabajo actual, pude ver que las secuencias de comandos de shell no podían resolver completamente mi problema sin volverse demasiado complejo, así que aprendí Perl. Aprender sobre la marcha es mi consejo como requisito único. Por supuesto, si te encuentras aburrido, hay todo un mundo de idiomas para explorar.

Abhishek Anand
fuente