¿Por qué no logro aprender un lenguaje de programación?

Llego de donde vienes. Estoy en el mismo barco desde una perspectiva diferente.

Probablemente soy uno de los mejores en la industria de BI, en términos de arquitectura, diseño, codificación (ETL, DB) y, lo que es más importante, en la enseñanza de personas. Estoy tratando de aprender Play framework (Java), y conozco Java. ¡Es un paaaain! Pagué por las clases de Udemy, miré videos de YouTube, leí artículos, etc., y nada explica nada de manera clara y completa.

Todos tienen la actitud de “aprender intentando”, lo que puede funcionar para ellos, pero no para mí. Cada vez que coloco una línea de código, recibo un error diferente del que tenían los videos, los tutoriales nunca explican lo suficiente como para decirle cómo funciona el backend, por lo que no tengo idea de cómo resolver estos problemas. Pasé horas descubriendo que Play Treat

función a
}
y
funciona un
{
}
diferente (el segundo es un error).

Lo que me di cuenta a lo largo de los años de enseñar a la gente es que los mejores programadores son generalmente los peores maestros. Incluso si reflexionan sobre sus lecciones y métodos de enseñanza y explican las cosas claramente, SIEMPRE pasarán por alto algo pequeño que dan por sentado que los nuevos usuarios no sabrían. Ellos están demasiado avanzados.

El mayor problema es que están tratando de apresurarte para que salga algo como “hola mundo”. Entiendo, es genial apresurarse para ver resultados … pero me hace preguntarme ¿cómo se muestra “hola mundo”? ¿Qué pasa con una variable? ¿Concatenación? No, esa es la lección 35 …

Puedo enseñar a alguien que no tiene idea de lo que es una base de datos, leer 200 líneas de sql, sé que hay una mejor manera de ayudar a la gente a entender. Simplemente no está sucediendo en un solo lugar. Miré 3 videos en Play para entender (todavía solo la mitad de lo que quería saber) cómo funciona la configuración básica. Además de eso, las variables tienen un nombre horrible que se supone que muestra abstracción pero es confuso; por ejemplo, el nombre del proyecto es foo, models foo, view foo, lista de foos, por lo que está enlazando un foo con un foo y obteniendo eso en un foos … junto con intellisense y el software distingue automáticamente cuando se supone un modelo o una vista para ser usado, no hay ambigüedad para el compilador pero estoy completamente confundido en este punto.

Así es como es el mundo de la programación en este momento. Las personas que son realmente buenos programadores piensan que saben más, así que la forma en que enseñan es la forma en que debe aprender. Después de todo, ellos son el maestro, tú eres el aprendiz.

Si alguien sabe de mejores fuentes, hágamelo saber !!!

De lo que puedo reunir, lo que no puedes entender no es aprender un lenguaje de programación. Es aprender a programar.

Para ser honesto, si usted mismo puede seguir las instrucciones de otra persona, puede programarse. Déjame citarme.

Si puede beber agua de una botella de agua, puede escribir programas de computadora.

Vamos a ver cómo beber agua de una botella de agua.

1. Recoge una botella de agua vacía.
2. Abra la parte superior del tornillo, debe mover la parte superior hasta que esté completamente apagada.
3. Abra el grifo, si el suministro de agua todavía está encendido, luego llene su botella de agua. Si no es así, entonces tienes que encontrar un toque diferente.
4. Después de llenar la botella, cierre el grifo.
5. Poner la botella en tu boca y beber.

Ahora, esto es muy similar a un programa de computadora.

(1) es la inicialización de variables, asignando memoria, etc.
(2) es lo que llamas un bucle. Hacer algo continuamente hasta que se cumpla una condición.
(3) es el flujo de control (si / else) si una condición se cumple, hacer algo, si no hace otra cosa.
(4) está liberando la memoria que asignó.
(5) Pasar la salida del programa al sistema operativo. ya sea a través de la salida estándar, o devolviendo un valor.

Y para algunos conceptos avanzados, estoy citando a otra persona (no recuerdo quién, lo siento)

Sabes, cuando amas a una chica, reserva un lugar para ella en tu corazón. No importa lo que haga esa chica, no importa de qué color se tiñe el pelo, no importa cuánto tiempo lleve los talones, siempre la reconocerás por ese lugar especial que tiene en tu corazón.
Eso es un puntero.

De lo que escribí anteriormente, solo depende de la forma en que piensas las cosas.
El lenguaje de programación es igual que otro lenguaje, para hacer que una computadora entienda lo que quieres que haga y cómo debería hacerlo.
Por lo tanto, echar un vistazo a las cosas desde una perspectiva diferente. Aprende un lenguaje de programación como un lenguaje regular (oh, la ironía punny). Como usaste el inglés para transmitirnos tu pregunta.

Si piensas en las cosas de esta manera, te llegará de forma natural. Al igual que el inglés, o cualquier lengua materna que tengas ahora.

Saludos.

Has dicho lo que has leído, pero no has dicho lo que has escrito. El hecho es que la programación se aprende escribiendo programas. En cada idioma hay un núcleo sobre el que tienes que leer. Pero eso es solo una pequeña fracción del total de lo que hay que leer, especialmente en idiomas modernos y bien diseñados. Una vez que haya dominado ese núcleo, que solo debería tomar días, el resto del idioma son manuales de referencia, no de aprendizaje. Así que necesitas escribir. Mientras escribes, encontrarás cosas que no puedes hacer. Sabrá, a partir de la forma del idioma, que hay una solución al problema, y ​​usará sus libros y motores de búsqueda para encontrarlo (y volverá infinitamente a StackOverflow). Pero el punto es que una vez que has leído el núcleo, aprendes haciendo.

Python es particularmente fácil de esta manera. ¿Qué tan grande es el mayor programa de Python que has escrito? Escrito, no se hace un ejercicio. OK, ahora escribe la mitad de grande otra vez. Si no puede, vuelva y explique su problema. Pero aprende haciendo.

La informática / ingeniería nunca se entenderá por completo de una sola vez, eso es parte de la razón por la que es una tarea tan divertida (ya menudo rentable). Hay, literalmente, tantos lenguajes de programación y tantos modelos de implementación y plataformas que no sería posible saberlo todo. Pero, muchos idiomas comparten varios conceptos básicos, tenga en cuenta que no todos los conceptos existen en todos los idiomas y plataformas. Los fundamentos comunes son en su mayoría algorítmicos, pero incluso a nivel de lenguaje, existen conceptos compartidos como punteros a funciones, descriptores de archivos, herencia y asignación de memoria estática y dinámica. El truco es entender el superconjunto común de todas estas cosas y luego, a medida que adopta un lenguaje o un proyecto, aprenda cómo (y si) implementa estos componentes centrales. Ese es el truco para la informática. No sude la sintaxis (en la mayoría de los casos) ya que probablemente será diferente de un idioma a otro, no sude el lenguaje ensamblador (hasta que sea necesario o esté realmente interesado).

Aprende el superconjunto común de cada idioma a medida que lo abordas y comprendes que muchos otros idiomas pueden o no implementar alguna característica similar. Eventualmente, comenzarás a reconocer patrones (casi todo es una referencia en Java, pero eso no es cierto para todo en C ++). Las clases no existen en todos los idiomas, pero se pueden emular con algún efecto. La variedad es la especia de la vida y la programación es una albóndiga picante.

La mejor manera es NUNCA a tu manera … lo que significa hacer todo solo a tu propio ritmo … eso me recuerda a mí mismo … ¡guitarrista autodidacta!

¿Por qué? Porque aprendes lo que sea sin la técnica adecuada, y parece que es genial, porque al principio aprendes bastante rápido si tienes interés.

¿Qué pasa después? Te quedas atascado! Y lo peor es que, hagas lo que hagas, no funciona más (o eso parece). ¡La frustración te supera y te deja odiándolo! ¡Y el 85% de esos eho experimentan que el endupista se retira!

No renuncié (la guitarra), pero ahora he tenido que empezar a volver a aprender todo, y aunque es bastante aburrido tener que pasar muchas horas al día durante semanas o meses, en cosas que ya puedo, tengo que Revisar todo de nuevo, deshacer los malos hábitos para que un día pueda continuar aprendiendo esas cosas “de la manera correcta” que ya debería haber aprendido años atrás, pero nunca pude porque no tenía la técnica adecuada.

Oh … ¡y este re-aprendizaje debe ser supervisado! … así que necesitas un profesor … o algún buen amigo que sea mucho mejor que tú.

Así que prácticamente, creo que es lo mismo con cualquier cosa! ¡Y especialmente con la codificación! aunque nadie aprende a codificar sin ningún tipo de recurso (libro, internet, etc.) … ¡así que no es tan malo como aprendí la guitarra! (Cuando Internet aún no estaba disponible!)

Así que mi recomendación para ti y para todos los demás es obtener un par de buenos libros sobre los conceptos básicos (html, css y javascript), e incluso si lo sabes (o crees que sí), sigue el orden correcto y escribe todos los ejemplos ( ¡No digas! ¡No estoy haciendo esta mierda “Hola mundo”! ¡Solo hazlo!

¡Recomiendo a cualquiera que quiera aprender o “re-aprender” estos libros!

HTML y CSS y JAVASCIPT & JQUERY

o aquí para el combo = Combo Jon Duckett

Cuando hayas terminado, crea un par de sitios (aplicaciones) utilizando lo que acabas de aprender (o volver a aprender), ¡aunque sea fácil!

Entonces y solo entonces, eliges tu próximo lenguaje: RoR, Py, C ++, etc.

Consigue un “buen” libro y síguelo.

Por bueno me refiero a uno que tiene muy buenas críticas! Como los que he vinculado.

Después de pasar por esto, es hora de ver si has aprendido algo o al menos de una manera diferente, o algo así …

Ahora bien, si todavía hay algo que sientes que no parece correcto, y te sientes atascado de nuevo, ve a buscar un profesor (localmente o en línea a través de Skype) o un desarrollador amigo, y preséntale tus dudas y problemas (si aún hay alguno)

Entonces, ¡así es como lo haces !, y aunque parezca horrible pasar por todo de nuevo, no te preocupes, no te tomará el tiempo necesario para alguien que nunca ha tenido códigos antes before

¡Diría que es un mes o dos si de repente encuentras muchas cosas que realmente no sabías!

¿No sería genial si te despidiera? Yo le daría una oportunidad!

-SEGUNDO-

¿Qué estás tratando de crear con tu lenguaje de programación?

La única razón para aprender a programar es escribir programas. Si en realidad NO QUIERES escribir un programa, si no tienes un programa que QUIERAS escribir, encontrarás la motivación muy difícil de sostener.

La forma de aprender a programar es decidir si quieres hacer algo y luego tratar de hacerlo. El problema con muchos cursos y concursos en línea es que promueven esta idea de “vencer” a los idiomas. O coleccionando algoritmos como pokemon. Eso es bastante aburrido.

La programación se trata de hacer programas. Que se trata de hacer que tu computadora haga algo que quieres que haga. (Porque es genial o útil. Aunque cool es mejor que útil cuando estás aprendiendo). Encuentra algo que quieras hacer y aprende lo que necesitas para hacerlo. Así lo ha hecho CADA programador exitoso.

Estoy de acuerdo con William Frantz. Da un paso atrás y aprende los fundamentos. Recomiendo ir a través de los ejercicios en Computer Science Unplugged. Es una clase de informática gratuita que no utiliza las computadoras para enseñar informática básica. Está diseñado para niños, pero es excelente para todas las edades. (No dejes que la ilustración amigable para los niños te aleje). Cada uno de los 18 ejercicios debería durar unos 30 minutos, pero como ya tienes un poco de conocimiento de programación, probablemente tomará menos, especialmente los primeros.

(No tengo conexión con CSUnplugged, pero la he usado bastante. Es gratis y no requiere ningún tipo de registro. Solo descargue y use).

Bueno, primero que nada, espero que entiendan que aprender un lenguaje de programación NO es lo mismo que aprender a programar . Necesita conocer los conceptos básicos de programación, de estructuras de datos y algoritmos. Necesitas saber resolver problemas de programación .

Aprender un lenguaje de programación es simplemente una cuestión de usar el lenguaje de forma continua para escribir software. Comienza con las funciones más simples del idioma y, a medida que te adentras en el idioma, obtendrás las funciones más avanzadas.

Todos los lenguajes de procedimiento, como Java, Python, JavaScript, C #, C / C ++, PHP, Ruby, etc., tienen los mismos elementos básicos como condicionales, bucles, funciones, matrices, estructuras (registros), etc. Solo necesita acostumbrarse a las variaciones ligeramente diferentes en la sintaxis mediante la práctica de software de escritura .

Donde el nuevo idioma puede ser sustancialmente diferente, como los lenguajes funcionales como Lisp y Erlang, es posible que se enfrente a un obstáculo mayor, pero nuevamente se trata de usar las características básicas del lenguaje durante mucha práctica. Me temo que no hay atajos. Solo aprenderá un lenguaje de programación (o aprenderá a programar, para el caso) mediante la práctica, la escritura de software.

Si ha tenido problemas con la programación en el pasado, quizás necesite una base más fundamental para comenzar. Tal vez simplemente no tiene sentido porque es demasiado abstracto. ¿Has intentado estudiar arquitectura de computadores, circuitos digitales o lenguaje ensamblador? Eso podría ayudar a construir una base más sólida para entender los principios de orden superior.

Aprender un lenguaje de programación no tiene NADA que ver con aprender idiomas humanos. EN ABSOLUTO.

Si fallaste en Python, hay algunas formas de comenzar. Aunque puedes probar el curso CodeCademy para este idioma, al menos aprenderás los conceptos básicos de ese idioma.

estás en la misma situación que yo, pero creo que solo te quedas con uno y paciencia. Programe diariamente para hacer el programa, no solo lea el libro, solo hágalo aunque no esté de buen humor. Buena suerte para seguir viaje.