Estoy aprendiendo nuevos idiomas a medida que avanzo, escribo código para programas muy básicos en varios idiomas y voy a clases. He leído libros, artículos, lecciones, videos, lo que sea, sin embargo, parece que no puedo entender algunas cosas.
Por ejemplo, nunca entendí los punteros: en qué son buenos. (NO ES PARTE DE LA PREGUNTA: no es necesario volver a etiquetar con "Punteros" ...)
Sin embargo, mi pregunta no es qué hacen los punteros, sino cómo puedo entender cosas así. Si, después de leer un libro o un artículo sobre cierta parte de la programación, y no entiendo, ¿qué hago? Escribir código en una determinada característica de programación seguramente ayuda, sin embargo, en realidad no ayuda a comprender tanto. La parte teórica es importante en la comprensión.
fuente
Computer Architecture 101
curso sería de gran ayuda para comprender los punteros. ...Y todo lo demás.Respuestas:
Si tiene problemas para comprender un concepto abstracto, simplemente baje un nivel. Si no puede obtener los punteros en C, baje al nivel de ensamblaje. ¿Aún tienes problemas? Obtenga más información sobre el hardware, hasta las puertas lógicas.
fuente
MIX
y otras arquitecturas de juguetes similares alrededor. Para una parte de hardware es lo mismo: hay muchos núcleos de CPU de juguete simples para estudiar.Ciclo de vida de aprendizaje incremental corto
Pasos Adicionales
Para usar con precaución.
man -k
, por ejemploapropos
, etc.)Estos son más astutos, ya que necesita reevaluarse para asegurarse de que lo hizo bien. La tutoría directa por parte de una persona bien informada suele ser mejor, seguida, por supuesto, de su propia validación del conocimiento adquirido al volver a implementar lo que acaba de aprender (y luego intentar llevarlo un paso más allá y aprender un concepto de nivel superior construido en la parte superior de ese, por ejemplo, listas enlazadas para sus punteros).
Créditos: Nupul (para diagramación)
fuente
En mi experiencia, se trata de aportes y comentarios. Desea recibir aportes en todas las formas que pueda, y comentarios sobre sus errores lo más rápido posible.
En mi experiencia, mi título de CS fue muy seco, muy formal y absolutamente inútil para enseñar cualquier tipo de programación. Asistí a dos o tres conferencias a la semana y si no lo entiendes, eso es todo: el profesor tiene otra clase para enseñar y no puede quedarse para ayudarte. Y, lo más probable es que un chico lo entienda de cierta manera, y lo enseñe de cierta manera y eso es todo, así que si no piensas como él, nunca lo entenderás. Lo que es peor es que, dado que probablemente comprende mil millones de otros conceptos relacionados, es probable que lo enmarque en términos de esos otros conceptos, que bien pueden pasar por alto o simplemente ni siquiera en el material del curso.
Fui a Stack Overflow y pregunté en el canal de chat de C ++ y obtuve cinco explicaciones diferentes en cinco minutos. Todos fueron diseñados específicamente para mí y el problema exacto que tuve, por lo que no es de extrañar que uno de ellos me golpeó en el hogar y lo entendí. La velocidad a la que puede aprender de recibir comentarios en vivo de múltiples expertos es muy superior a lo que puede obtener de una fuente de papel seco.
Así que, idealmente, tómate un descanso y luego encontrarás un grupo pequeño o mediano de personas con ideas afines que no tienen nada mejor que hacer y chatear con ellos en vivo. Por cierto, Stack Overflow es un excelente lugar para obtener este tipo de comentarios personales de alta calidad y alta velocidad.
fuente
En ningún orden, los libros, los amigos y la lectura de códigos bien documentados son buenas fuentes. La práctica es la única forma de aprender: intente escribir pequeñas pruebas unitarias. Por ejemplo, para los punteros, escriba código que trate con cadenas: invierta una cadena, invierta cada palabra en una cadena, pruebe palíndromo, reemplace una letra con un número ...
Haga preguntas sobre stackexchange ...;>
fuente
¡La práctica hace la perfección! (bien mejor de todos modos). Sigue intentándolo e intenta utilizar tantas fuentes y sentidos diferentes como puedas:
Fuentes: libros, Internet, grupos de usuarios, amigos, video aprendizaje, uso de sitios que le permiten probar un pequeño 'bit' de código como jsfiddle (principalmente html),
Rubular (expresiones Ruby),
SQlzoo para probar sql,
jslint para javascript,
code pad para muchos idiomas
Para recordar cosas abstractas, considere la mneomía: ¡los médicos las usan!
Considérate un aprendiz de por vida, mantente humilde y podrás llegar lejos.
fuente
Tienes que cambiar tu enfoque por un tiempo, no 5 min. o 5 horas ... quiero decir algo así como 1 día sin mirar ese código ... solo relájate ... ve a leer algo diferente ...
Si tiene que entenderlo ahora ... solicite ayuda de amigos o aquí =)
fuente
Lo que todos los demás en TI hacen.
Utilizo un motor de búsqueda para buscar los conceptos relacionados que no entiendo hasta que pueda volver a visitar el tema que inicialmente quería entender.
Es probable que tampoco comprenda completamente la pila, el montón, las variables automáticas, el proceso de compilación de C ++, el ensamblaje, la memoria administrada frente a la memoria no administrada.
Más claridad sobre estos y otros conceptos relacionados con el puntero probablemente aclararía todo.
fuente
No hay una forma rápida y segura de entender un tema. Su éxito depende de cuánto contexto traiga consigo en sus estudios. Tendrá mucha suerte de encontrar a alguien que le explique las cosas teniendo en cuenta su punto de vista. Al igual que las máquinas de Turing, cualquiera puede aprender lo que otros saben, y es solo una cuestión de persistencia y aceptación que la frustración es natural.
Recuerdo la inmensa dificultad que tuve con los punteros. No fue hasta que un tipo muy paciente me lo explicó como si fuera un completo idiota que lo entendí. Eso es a veces lo que se necesita.
fuente
Este es un problema común en el aprendizaje y la enseñanza. Y como otros han dicho, no hay una forma segura de evitar esto. Es una verdad fundamental que todos aprendemos de manera diferente ya que nuestros cerebros están conectados de manera diferente en formas sutiles pero cruciales.
El aprendizaje genera nuevas conexiones neuronales. Sin entrar demasiado en la neurociencia (de la que no sé casi nada), generar nuevas conexiones requiere diferentes tipos de exposición a un concepto para diferentes personas. Pruebe muchos ángulos diferentes, lea / escuche / vea diferentes explicaciones. ¡Práctica!
Si eso no funciona, deje de lado el problema: puede que simplemente le falte otra parte del rompecabezas que, una vez adquirido, hace que el problema original parezca obvio.
¿Conoces estos aha! momentos? Esto es cuando su cerebro acaba de hacer una nueva conexión. Así es como sucede el aprendizaje.
Por cierto, cualquier buen maestro lo sabe. Las pautas para la redacción técnica a menudo establecen que cada concepto debe explicarse al menos dos veces, usando diferentes palabras (y quizás con algún texto entre ellas). Si prestas atención, podrás ver que todos los buenos escritores científicos siguen esta regla.
Por desgracia, demasiados maestros lo ignoran y explican las cosas solo una vez. E incluso si logran encontrar una explicación elegante con una gran metáfora, esto simplemente no es suficiente.
fuente
Lea cualquier documentación relevante y Google sus dudas.
Intente escribir ejemplos de código, vea lo que hacen.
Intente ejecutar código en depuración y mírelo paso a paso.
Si aún no comprende un determinado comportamiento, pregúntele a alguien, ya sea en persona o en un sitio web como este. Si probaste todo lo anterior, deberías tener todos los elementos para componer una buena pregunta. No seas tímido :)
Creo que es más o menos lo que hacen los demás.
fuente
Sigue investigando y aprendiendo. He tenido el mismo problema con varios otros aspectos de la programación. Pero hablar con otros y leer artículos eventualmente conduce a un momento de "AHA". En general, es otra publicación de blog o respuesta SO que presenta la información que puedo seguir.
Básicamente, sigue buscando y sé paciente para la comprensión que vendrá.
fuente