¿Cómo aprendo un nuevo idioma rápidamente, dado que conozco varios otros? [cerrado]

14

Un tipo de pregunta que sigue apareciendo en Programmers.SE es cómo aprender un idioma específico, dado que conoce varios otros (generalmente a través de mucha experiencia o educación).

En algunos casos, sin embargo, uno podría necesitar ponerse al día rápidamente para un trabajo o para el desarrollo personal, o incluso para ver una nueva plataforma.

En su experiencia, ¿qué estrategias generales ha utilizado para aprender un nuevo idioma rápidamente? ¿Hay aspectos específicos de un idioma en el que intentas enfocarte cuando comienzas en frío? ¿Qué tipos de recursos encuentra útiles en este proceso?

revs usuario8
fuente
66
Yo diría que solo hazlo. La documentación oficial y Google son los únicos recursos que necesitará.
Fosco
@Rein Algunas de las respuestas se superponen, pero el objetivo de esta pregunta es desarrollar una respuesta canónica para aprender un idioma (cualquier idioma) de la manera más rápida y eficiente posible. La otra pregunta es una mezcla de recomendaciones de libros, respuestas similares a las que se dan aquí, y consejos generales sobre el aprendizaje no apresurado (leer justo antes de acostarse, leer las especificaciones del idioma, tomarse semanas para familiarizarse en un nivel básico con algunos diferentes idiomas).
No estoy seguro de cuán útil es la pregunta que se hace. Si conozco varios lenguajes de programación, probablemente haya aprendido a aprender un nuevo lenguaje, y probablemente de manera eficiente. Si no lo hago, ¿cómo me voy a beneficiar de esta pregunta?
David Thornley
1
@David Conozco media docena de idiomas, pero los aprendí generalmente después de tomar clases en ellos o después de varios meses de trabajo. Pero si tengo que aprender un idioma rápidamente para un nuevo trabajo, por otro lado, eso no me ayuda. No dudo que las personas que han aprendido varios idiomas hayan elegido formas de aprenderlos rápidamente: eso sería lo que espero que contengan las respuestas.
@ Mark Trapp: Gracias, eso me aclara las cosas.
David Thornley

Respuestas:

18

He descubierto que la mejor manera de aprender un nuevo idioma es hacerlo, no solo leer. Entonces, cuando quiero (o necesito) aprender un nuevo idioma, generalmente leo algunos capítulos de un libro de referencia sobre sintaxis, pero luego me sumerjo y creo algo, en lugar de leer y leer libro tras libro.

Descubrí que a medida que surgen problemas y preguntas, se encuentran respuestas (a menudo en Internet). También creo que esta es la razón por la cual la capacitación en el trabajo es tan valiosa, porque usted está produciendo un producto de trabajo la mayor parte del tiempo, incluso si es una versión borrador, y entonces está aprendiendo haciendo.

Animo a las personas a que piensen en lo que les interesa y se sumerjan directamente en escribir código o crear formularios, etc.

Más adelante, después de haber creado proyecto tras proyecto, un buen libro de referencia le enseñará los detalles finos que, en este punto, puede comprender más fácilmente.

Además, los proyectos generalmente comienzan más pequeños y crecen en complejidad, desde la simple aplicación "Hello World" hasta un proyecto pequeño y poco útil, hasta una aplicación completa. En términos de los aspectos del lenguaje en los que me centro, depende del uso aplicado del lenguaje: nunca aprendo cada API o marco para comenzar (como con .NET, por ejemplo). Eso llevaría demasiado tiempo. Aprendo la sintaxis central, luego me ramifico desde allí, investigando cada extensión según sea necesario. Con un lenguaje menos modular, como CSS o XSLT, simplemente aprendo primero las construcciones más populares y agrego otras según sea necesario.

jqueryrocks
fuente
Cuando dices "solo hazlo", ¿hay aspectos específicos del lenguaje en los que te enfocas cuando te sumerges para asegurarte de que lo captas de la manera más eficiente posible? ¿O simplemente sigue haciendo proyectos de muestra al azar hasta que hace "clic"?
Bueno, los proyectos generalmente comienzan más pequeños y crecen en complejidad, desde la simple aplicación "Hello World" hasta un proyecto pequeño y poco útil, hasta una aplicación completa. En términos de los aspectos del lenguaje en los que me centro, depende del uso aplicado del lenguaje: nunca aprendo cada API o marco para comenzar (como con .NET, por ejemplo). Eso llevaría demasiado tiempo. Aprendo la sintaxis central, luego me ramifico desde allí, investigando cada extensión según sea necesario. Con un lenguaje menos modular, como CSS o XSLT, simplemente aprendo primero las construcciones más populares y agrego otras según sea necesario.
jqueryrocks
2
¿Puedes agregar eso a tu respuesta? Esa es una gran información.
5

Esto funciona para mi:

  1. Lee sobre ello.
  2. Úsalo.
  3. GOTO 1.

Para leer el paso, trato de elegir "la" referencia para el idioma. Por ejemplo, "El lenguaje de programación C". Necesita ser condensado, hasta el punto, y construir su conocimiento de manera incremental. Luego lo leí de principio a fin. Soy un lector rápido y no me detengo en esta primera lectura. Luego regresaré y me referiré a puntos específicos mientras trato de usar el lenguaje. En lo que probablemente pasaré más tiempo es en ejemplos de código dentro del libro.

Lo primero que necesita es la sintaxis. Sin saber si es BEGIN o {o sangrado de bloque, o cómo declara variables, no puede escribir nada. El autor generalmente presentará primero las partes más importantes o tendrá un tutorial que cubre el uso básico del lenguaje. Es difícil dar pautas más generales porque algunos idiomas son muy diferentes a otros. Lo siguiente es tener una idea general del idioma, cuál es la filosofía general, cómo aborda la resolución de problemas dentro del contexto del idioma.

Otra cosa a tener en cuenta es el concepto de "úsalo o piérdelo". Si no ha usado un idioma por un tiempo, le llevará algún tiempo volver a la velocidad (aunque ese tiempo se acortará con la experiencia). Una vez que obtenga la sintaxis del idioma, deberá aprender sobre bibliotecas, etc.

Entonces es un proceso iterativo. Profundizando en cada iteración. Sin fin. Incluso después de usar un idioma durante 20 años, todavía hay algo que aprender.

Guy Sirton
fuente
¿Puedes dar más detalles sobre lo que quieres decir con "leer sobre eso"? ¿En qué se enfoca específicamente cuando comienza a leer sobre un nuevo idioma que desea aprender?
@ Mark - mira mis ediciones ... ¿Es esto lo que estás buscando?
Guy Sirton
5

Toma un proyecto del mundo real

Desde mi punto de vista, es más fácil aprender algo cuando realmente necesitas aprenderlo. Para mí fue con JavaScript, donde lo arriesgué al aceptar un gran proyecto con un plazo de dos meses. Fui yo allí todos los días y todas las noches tratando de lograr resultados para este proyecto independiente, y por 1 mes y medio el proyecto estaba terminado.

También aprendí accidentalmente algo de SQL allí, luego terminé de aprenderlo en la universidad, y adivina qué, también me fue más fácil.

Si no quieres arriesgarte ...

La clave real del punto anterior es resolver problemas del mundo real ... pero trabajo mejor bajo estrés (me gusta el estrés, creo que es divertido y podría estar dañado, así que ...). Si no lo hace, simplemente busque un proyecto de código abierto que le interese y utilice el idioma que desea aprender e intente contribuir. Si su código apesta, puede recibir algunos comentarios dependiendo de la comunidad.

Lo más probable es que progreses solo estudiando el código.

Obtenga toda la referencia que pueda

Eso incluye varios libros, documentación oficial y toda la referencia que puede obtener. Las posibilidades son que, de esa manera, sabrás cómo hacer lo mismo de diferentes maneras.

Otras comunidades, como foros, listas de correo y aquí, también cuentan como referencia.

dukeofgaming
fuente
Yo agregaría "agarrar un problema difícil del mundo real". Elija algo que requiera que tenga el cuello profundo el primer día. Mi primer día con C # estaba descubriendo cómo cargar dlls dinámicamente, usar la reflexión para obtener las clases y, a partir de eso, una lista de métodos. Aprendí un montón de días, nunca antes había usado ninguna tecnología .net.
Bryan Oakley
2

Hay muchas maneras de aprender un nuevo idioma, pero no todas son igualmente eficientes. Encontré que estas tres pautas funcionan mejor para mí:

Haz un mapa de lo que no sabes

Averigüe, de antemano, lo que necesitará aprender. Encuentre una descripción general o una fuente de documentación general que describa el lenguaje en términos abstractos. A partir de eso, generalmente puede obtener una descripción bastante completa de lo que se trata el idioma. Use esa descripción general para resaltar áreas que no conoce, pero que se consideran fundamentales para el idioma. ¿Es la recursividad de cola un concepto que necesitas aprender para entender realmente el lenguaje? Tal vez necesites conocer tu expresión regular mucho mejor, ya que el lenguaje se especializa en la manipulación de cadenas. O, tal vez, realmente tenga que obtener su Álgebra, ya que muchos de los conceptos en el mapa del lenguaje directamente de conceptos algebraicos.

Obtenga buenos recursos para ayudarlo a aprender lo que no sabe

Es posible que desee obtener una buena referencia sobre fórmulas algebraicas, o tal vez simplemente desee comprar " Javascript, las partes buenas ". Para algunas curvas de aprendizaje, este trabajo ya se ha realizado parcialmente. Si está tratando de aprender C # de un fondo de Java (y viceversa), hay una gran cantidad de publicaciones de blog y sitios web que trazan las diferencias y contienen referencias / recursos para ayudarlo a aprender.

Asegúrese de que los recursos no sean solo referencias: asegúrese de que incluyan pruebas o ejercicios para ayudarlo a evaluar si ha aprendido un concepto correctamente. Leer sobre la recursividad de la cola es una cosa, repasar cómo se implementa en su idioma de elección es otra.

Construye algo real

Es casi imposible hacer cualquier tipo de aprendizaje real sin un objetivo tangible en mente. Esto es especialmente cierto en las artes aplicadas, que es el uso del lenguaje de programación. Asegúrese de tener un objetivo real al que apuntar: construir algo suele ser la mejor opción.

blueberryfields
fuente
1

Identificar los paradigmas de programación

Por lo general, identifico cuáles son los paradigmas principales para el lenguaje. Pienso en los problemas de manera diferente según el paradigma.

Identifica los modismos

Todos los idiomas tienen modismos. Los modismos varían en tamaño y alcance de cómo estructura el código, hasta fragmentos de código particulares. Siempre debes intentar usar idiomas idiomáticos.

Escribir código

Normalmente escribo un código funcional. Cualquier cosa, desde un Primes Sieve hasta aplicaciones web de juguete. Los problemas que elijo generalmente son específicos para lo que pretendo usar el lenguaje.

dietbuddha
fuente
1

¡Solo sumérgete!

Teniendo en cuenta que ya sabe cómo programar y conoce varios idiomas, excepto si ese idioma introduce un cambio de paradigma muy profundo, yo diría (al mismo tiempo):

  • encuentra un proyecto para mascotas que te lleve,
  • y en el programa lateral algunos acertijos

Aprender, practicar, aplicar (hasta que esté satisfecho)

Los clásicos 99 Prolog Puzzles (aquí, los 99 Puzzles en Scala ) o el Proyecto Euler suelen ser buenos lugares para buscar pequeños rompecabezas para volver a implementar. O merodear por StackOverflow y volver a escribir algunas respuestas agradables en su idioma de destino, tratando de no hacer una reescritura línea por línea, sino algo que capture la esencia de su nuevo idioma.

Aprenda con los rompecabezas, lea blogs y ensayos para obtener una comprensión más profunda del idioma y tener una idea de las herramientas y las guerras santas de su nueva comunidad, y escriba su proyecto de prueba para aplicar sus nuevos conocimientos y habilidades y mira en qué baches te encuentras.

Hablando de comunidad ...

Comparte y exponte. (Sin embargo, no demasiado).

Tal vez también desee visitar un grupo de usuarios local, encontrar amigos para codificar (para obtener algunas críticas constructivas y no encerrarse en una mentalidad específica) y suscribirse a ese aterrador canal IRC o lista de correo donde dejan caer palabras extrañas sobre AST árboles y escribir diatribas filosóficas sobre cómo las mónadas no son mónadas y cómo una vez que conoces a una chica extraña no puedes volver .

revs haylem
fuente
0

Sé que esto suena tonto, pero comienza a codificar algo, incluso si es tonto, y usa mucho Google para las cosas que siguen este patrón:

¿Cómo hago [algo de un idioma] en [otro idioma]

Si las palabras son comunes, use literales entre comillas.

Es una pregunta bastante común que las únicas veces que ya no encuentro una respuesta es cuando encuentro una página que explica por qué no se puede hacer.

Cuenta
fuente
0

Como sugerencia específica para usar el idioma:

Corregir errores

  1. Encuentre un proyecto de código abierto interesante en el idioma de destino, preferiblemente uno con un rastreador de errores público, desarrollo moderadamente activo y un conjunto de pruebas decente.
  2. Elija un error para solucionarlo, preferiblemente uno que lo moleste cuando realmente use el programa.
  3. Descubre por qué el programa exhibe el comportamiento defectuoso.
  4. Escriba pruebas y código para solucionar el problema.
  5. Enviar un parche aguas arriba.
  6. Revise su parche hasta que los desarrolladores anteriores estén felices
  7. Regrese al paso 1 o 2.

Este proceso tiende a ser más satisfactorio que escribir otro programa de juguetes, pero mucho más fácil que comenzar su propio proyecto completo desde cero. Te expones a algunos de los modismos idiomáticos en su contexto natural y (con suerte) la idea de alguien de cómo se ve un buen código.

Por otro lado, también puede ser extremadamente frustrante, especialmente si elige un error desagradable o si los desarrolladores rechazan su parche sin explicar adecuadamente por qué.

eswald
fuente