¿Cómo aprenden las personas múltiples lenguajes de programación?

El aprendizaje de lenguajes de programación se puede comparar con el aprendizaje de lenguajes naturales, pero solo hasta cierto punto. Los lenguajes naturales tienen una estructura que evolucionó durante miles de años para tratar con * todos * los aspectos de la vida, no solo diciéndole a la computadora qué hacer. Su estructura no es necesariamente regular en absoluto, y las discusiones sobre semántica y dialecto son infinitas.

Tienes razón en que todavía es una gran cantidad de trabajo aprender múltiples lenguajes de programación. Sin embargo, los conceptos centrales son a menudo los mismos. Si aprendes bien Python, estarás expuesto a la mayoría de ellos. Otros lenguajes de programación también los tendrán, pero generalmente menos.

De hecho, solo conocerá pocos idiomas lo suficientemente bien como para que pueda hacer un trabajo serio con ellos. Esfuércese por aprender al menos un idioma muy bien, pero mantenga una mente abierta hacia los demás e intente al menos leerlos. Leer el código de otros es (muy de cerca) solo después de la práctica de programación real.

Para facilitar el aprendizaje de múltiples lenguajes de programación, puedo dar dos consejos:

  • Elija sus batallas y aprenda lenguajes de programación, marcos y bibliotecas que sean lo más diferentes posible entre sí. Cada uno de ellos tiene un propósito, de lo contrario, nadie gastaría tiempo y esfuerzo en crearlos. Ejemplos: Lisp, Haskell (lenguajes funcionales), C, quizás Pascal (procedimiento, gestión de memoria manual), SQL y Prolog (base de datos y programación lógica). Ensamblaje MIPS, Brainfuck y otros lenguajes esotéricos (poco uso práctico, pero instructivo). Cada uno de ellos le mostrará el espacio de diseño y le hará reconocer de qué se trata realmente la programación.
  • Implemente un intérprete y un compilador para un lenguaje de juguete usted mismo. También te enseñará mucho sobre programación en general.

¡Siempre tenga en cuenta que los lenguajes de programación están ahí para comunicarse también con sus compañeros programadores que podrían leer su código!

En primer lugar, no es necesario aprender muchos idiomas y responder a su pregunta sobre cómo uno aprende varios idiomas, en mi experiencia personal, “centrándose en una cosa a la vez y trabajando duro durante un par de años”. Comencé a codificar hace 11 años durante mis días escolares y una cosa que puedo decirte que no hagas es intentar aprender todo de una vez. Si desea explorar diferentes idiomas, debe darles tiempo a cada uno de ellos. Intentar hacer dos o tres proyectos en ellos puede ser pequeño, pero al menos aprenderás algo. Puede explorar proyectos de código abierto para esto.
Creo que uno no debe tratar de agrupar todos y cada uno de los temas en un idioma, pero en lo que sea que esté trabajando, trata de obtener el tema central con una buena cantidad de práctica, lo que no significa asaltarlo.

Volviendo a su pregunta de cuándo se puede decir que ha aprendido un idioma y sobre muchas funciones. Creo que uno no debería pensar en aprender cada parte de un idioma o todas las funciones disponibles en una biblioteca. Por el contrario, uno debe dominar la capacidad de pensamiento en un idioma en particular. Intente obtener el tema central del idioma, ya que los diferentes idiomas están diseñados para adaptarse a diferentes escenarios de casos de uso y, a menudo, siguen obteniendo nuevas incorporaciones. “Practicar mucho” y “atenerse a una cosa a la vez”, estos han sido mi motivación durante varios años y me han ayudado mucho.

Llegando a su pregunta de mala interpretación. Está bien malinterpretar algo en general, pero intente obtener comentarios sobre ellos. Intenta corregirlos y no vuelvas a cometer el mismo error. Pero definitivamente no es bueno pensar que eres tonto en comparación con alguien. No te compares con nadie más. Trate de descubrir las áreas en las que debe trabajar y trabaje duro en ellas. No estás malinterpretando estos. Incluso hice lo mismo pero aprendí pocas cosas durante un período de tiempo y practiqué. Intenta ver códigos escritos por otros. El código abierto es una opción donde puedes hacerlo.

La codificación no es algo imposible. Intente hacer una pequeña lista de temas que desea cubrir diariamente y termínelos. Practíquelos mucho y experimente con ellos. Intente resolver problemas, para los cuales puede codificar en sitios web de programación; elige uno bueno y comienza a enviar tus códigos. Esto lo ayudará a descubrir qué y cómo codificar y cómo agrupar segmentos de código para resolver un problema.

Espero que estos ayuden.

El primero lo hace mucho más fácil. Una vez que conoce bien Python, los conceptos básicos: flujo de control, bucles, recursión, funciones de llamada, etc. son de segunda naturaleza. Cambie a C y las cosas básicas son solo algunos cambios menores en la sintaxis (aunque las cosas avanzadas requieren algo de aprendizaje, consejos y demás). Combine los dos –C para la sintaxis, Python para OOP– y ya casi conoce los conceptos básicos de C ++. Aprende todo eso y Java no es nada nuevo.

Aprender sus lenguajes imperativos estándar con sintaxis tipo C (por lo tanto, la mayoría de los que usamos hoy en día) es como aprender varios dialectos del mismo idioma: difieren en los detalles pero son básicamente los mismos. Todos (que yo sé) luchan con ese primer idioma y brisa a través del resto (aparte de las partes avanzadas).

Al principio también tuve problemas con Python, pero ahora (después de aproximadamente un año y medio), tengo una sólida comprensión (creo) de Python y C, puedo escribir código de trabajo en Go, D, Rust y JavaScript, y puedo más o menos entender Haskell, Java, C ++, bash y Dart.

Tenga en cuenta que las personas tienen muchas más dificultades para cambiar entre paradigmas, de ahí la reputación de dificultad de la programación funcional. No es más difícil, solo una forma diferente de hacer las cosas; Me imagino que alguien cuyo primer idioma fue Haskell tendría pocas dificultades para hacer la transición dentro de ese campo, pero podría tener dificultades al cambiar a Java. O cuando comienzas a usar Rust con su compilador extrañamente estricto, es una transición difícil, aunque la sintaxis no es particularmente única.

Después de cierto punto, los idiomas se vuelven mucho menos importantes. Estás tratando de resolver un problema y sabes que tienes datos estructurados, subrutinas, bucles y condiciones … en alguna parte. Tal vez necesite actualizar su memoria de la sintaxis, pero no es algo en lo que se detenga, porque de nuevo, solo hay un puñado de cosas en el idioma que le interesan, y sabe que es casi seguro que están allí.

Sin embargo, las bibliotecas estándar y la cadena de herramientas del lenguaje es otra historia. Esos pueden estar en todo el mapa. Es una cuestión de experiencia y familiaridad, nada más.

Aprender idiomas de codificación es muy parecido a aprender idiomas hablados. Hay grupos En las lenguas habladas, tenemos lenguas románicas, lenguas germánicas, lenguas eslavas, etc. Estas son familias, y todas las lenguas dentro de una familia son similares. Esto significa que si hablas español, tendrás mucha mejor suerte aprendiendo italiano que aprendiendo alemán. Eso no significa que tendrá un dominio total del idioma, pero dada alguna idea de las diferencias básicas, probablemente pueda obtenerlo día a día. Si sabes latín y alemán … tienes la base para una gran cantidad de retoños.

Los lenguajes de codificación son muy parecidos, pero las familias son un poco extrañas y se dividen de diferentes maneras. Hay generaciones (1º a 4º). En los idiomas de primera generación, estamos hablando con la máquina. Es necesaria una comprensión específica de cómo funciona cada máquina. Para cuando lleguemos a los idiomas de cuarta generación, no importa para qué máquina estamos programando … simplemente escribimos / usamos una función que hace lo que queremos, y funciona en todas las máquinas.

Estos idiomas se desglosan aún más. Tenemos lenguajes que requieren un uso específico de sintaxis (como la familia C), y aquellos que son mucho más fluidos (como Perl). Tenemos idiomas diseñados más para bases de datos e idiomas diseñados más para gráficos de juegos.

Aprender idiomas de codificación es como aprender idiomas hablados. Si habla C, tendrá mucha mejor suerte aprendiendo idiomas basados ​​en C. Si conoce dBase, tendrá mucha suerte en la comprensión de otros lenguajes de bases de datos. Si conoce C y dBase y SQL, está en posición de aprender una gran variedad de lenguajes que surgirán en los próximos años.

Al hablar, sabemos que queremos saber dónde está el banco. Solo necesitamos encontrar la combinación correcta de sonidos para producir la pregunta y comprender la respuesta. Al programar, sabemos que queremos pedirle al usuario dos números, sumarlos y darle la respuesta al usuario. Solo necesitamos encontrar la combinación correcta de código para hacer esto. Sabemos que PODEMOS, está en el cómo. Todos los lenguajes basados ​​en C tendrán una función similar. Todos los lenguajes dBase tendrán una función similar (que puede o no ser como los lenguajes C), e incluso SQL tendrá un medio para hacerlo. Será más fácil en algunos idiomas que en otros.

¿Cuándo eres fluido? ¿Eres fluido en el idioma que hablas? Sí, porque puedes pasar tu día normal y no tener que buscar frases. Sin embargo, hay veces que tiene que buscar una palabra en su idioma nativo, o se encuentra con una palabra / frase que transmite mejor su significado. La codificación es de la misma manera. Cuando puede escribir la mayor parte de un programa sin tener que buscar la sintaxis, es “fluido”. Las cosas que sabes, sabes. Eso es lo que usas todos los días. Las cosas que no sabes, miras hacia arriba. A veces encuentras una forma diferente de hacer algo que has estado haciendo durante mucho tiempo.

Así como conocer el concepto que desea transmitir en lenguaje hablado es la base de TODO el lenguaje hablado, LOGIC es la base de todo el código de programación. Una vez que sepa QUÉ quiere hacer y cómo pasar lógicamente de A a B, el resto es sintaxis. Algunos buscarán, otros simplemente “conocerán” como si supieran su idioma hablado.

Te sugiero que domines la LÓGICA. Luego, eliges un par de idiomas que te ayudarán durante el día (base de datos, Internet, tal vez gráficos) y los aprendes. PRACTICAR estos. Si no los usa, los perderá. Sin embargo, incluso perdido, haberlos conocido te da una base para aprender de nuevo.

No soy un experto y no estudié (no) CS, pero aprendo sobre programación casi todos los días desde alrededor de 2010. Cuando comencé a aprender me sentí similar a ti y aunque tuve un curso de introducción en Java en No aprendí mucho de la escuela secundaria, lo que honestamente es mi culpa, porque en ese momento no estaba realmente interesado.

Comencé a desarrollar un interés en la programación y soy mayormente autodidacta y hasta ese día he escrito programas y código en python, javascript, c #, java, php y C ++ muy básico. En mi experiencia, muchas cosas permanecen igual y se repiten, y a menudo es una cuestión de sintaxis y tal vez diferentes ‘verbos’ para cada idioma similar a otros idiomas. Pero los conceptos subyacentes permanecen igual.

Pero como he dicho: no estudié CS, no me llamaría un experto ya que todavía estoy aprendiendo, pero pensé que tal vez mi perspectiva agrega algo todavía 🙂

Sé siete idiomas de codificación. primero aprendes a pensar como un codificador cuando abordas un problema, a esto se refiere Steve Jobs cuando dice que todos deberían aprender a codificar, porque te enseña a pensar. Comienza a ver cómo mirar el mundo como una serie de bucles anidados, selectores de casos, variables y secuencias. Obtener esa perspectiva le permitirá profundizar en cualquier lenguaje de codificación o CMS.

Los codificadores por naturaleza son creativos, pero también “flojos” en el hecho de que usamos regularmente bibliotecas de códigos para obtener nuestra sintaxis correcta. hubo un momento en el que enviabas tu código a un compilador y tomabas a veces toda la noche renderizarlo y si tenías un error de sintaxis, ¡estabas jodido y tenías que hacerlo de nuevo por un estúpido punto y coma fuera de lugar!

Hoy en día, puede renderizar sobre la marcha y los errores de sintaxis no son un revés. la fluidez proviene del uso, es así de simple. practica haciendo más y más y tu fluidez aparecerá como resultado.

Solo requiere práctica y, dado que la sintaxis es similar, tiendo a recordar principalmente las molestas diferencias más que cualquier otra cosa. Además, si pasas suficiente tiempo en un idioma, olvidas mucho del que usaste hace 5 años … pero no es tan difícil volver a entrar como cuando empezaste, si eso tiene sentido: horas frente a días o semanas. En los 15 años que llevo programando, he usado C ++, C, C #, Java, Perl, Python, JavaScript, PHP y varios lenguajes de secuencias de comandos. Principalmente he usado C # en los últimos 5 años, por lo que si tengo que usar los otros, una búsqueda rápida en Google o un vistazo al código antiguo ayuda a activar la memoria. Perl tardaría un poco más en volver a saltar que cualquiera de los otros (diferencias de sintaxis), con C en segundo lugar.

La mayoría de los idiomas tienen conceptos básicos bastante iguales si ignoras el azúcar sintáctico.
Swiching entre java, c #, c ++, c generalmente va relativamente suave.
Obviamente, programar en cada uno de estos durante algunos años tiende a hacer que sea más fácil \ U0001f60a

Entonces, como con todas las artes, la práctica hace la perfección …

Diría que está malinterpretando lo que es saber codificar. Estoy seguro de que no eres tonto, simplemente no lo entiendes todavía, lo cual es perfectamente normal.

Sí, hay millones de combinaciones posibles de funciones y sintaxis, pero si comprende cómo funciona cada función y qué hace, entonces será obvio cómo construir esas combinaciones. No se trata de conocer todas las combinaciones, se trata de saber cómo construir cualquier combinación que desee intuitivamente.

No sé a dónde van todos los caminos en Australia, pero si me das una ubicación, probablemente pueda llegar allí usando mapas, mi TomTom e instinto general (es decir, sé que ese lugar está en la costa, así que lo haré cabeza de esa manera). No se trata de saberlo todo, se trata de saber cómo resolverlo cuando sea necesario.

Una vez que comprenda ese concepto en Python, descubrirá que aprender otro idioma es 100 veces más fácil de lo que creía.

Hay algunos idiomas especializados, pero para la mayoría de los idiomas, uno puede ejecutar un código que traduce un idioma a otro, al igual que Google y Siri, etc.puede traducir idiomas por usted. Por lo tanto, esto no es un gran problema para un principiante, en mi opinión.