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?
Respuestas:
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.
fuente
Esto funciona para mi:
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.
fuente
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.
fuente
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.
fuente
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.
fuente
¡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):
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 .
fuente
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.
fuente
Como sugerencia específica para usar el idioma:
Corregir errores
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é.
fuente