Tuve mi primer examen de programación recientemente ... y bueno, prácticamente lo dejé caer. No fue genial en absoluto. Solo tengo la culpa de mí mismo, ya que fuera del tiempo de la universidad, prácticamente no hice nada.
Ahora tengo otro próximo cerca del horario de verano y no estoy permitiendo que esto vuelva a suceder. Durante un par de semanas he estado leyendo, leyendo y leyendo un poco más. Sigo repasando las cosas más antiguas que me perdí y las cosas más nuevas que estamos haciendo. Entonces, obviamente, puedo notar una gran diferencia en mi comprensión del idioma. Sin embargo, eso es todo. Puedo leer el código y ahora tengo una idea de lo que está sucediendo en el código ... pero cuando se trata de escribir el código yo mismo, no tengo ni idea. Es como si nunca supiera qué enfoque tomar y nunca puedo comprender completamente las preguntas.
He leído bastante (he estado haciendo alrededor de 5-6 horas durante el último mes) cada día ... Pero cuando abro mi IDE siempre me siento condenado, es realmente desmotivador. Especialmente porque tengo conocimiento de nodos, listas, listas de matrices, interfaces, etc., pero además de leerlos en una página sobre eso. Puedo señalar exactamente todo lo que está sucediendo en un programa, así que anotar un código de ejemplo me parece bien ... pero escribir mi propio código es otra historia ...
fuente
Respuestas:
Aprende a escribir programas escribiendo programas.
Pero tienes que empezar de a poco, hombre.
A partir de ahí, comienza a construir ...
y entonces...
... y así. Una vez que comprenda los conceptos básicos de cómo funcionan los objetos, será mucho más fácil escribir programas más grandes.
fuente
Gran pregunta! Es importante darse cuenta de que tiene múltiples curvas de aprendizaje para escalar. Solo para que no pienses que solo estás aprendiendo un lenguaje de programación. Estás haciendo un poco más que eso.
Estás aprendiendo sobre ...
Sospecho que es el punto tres donde estás luchando. Estás aprendiendo a decir cosas en código (sintaxis) pero realmente nos preguntas qué debería decir en código. ¿Hay una manera correcta y una manera incorrecta de hacer las cosas?
Te sugiero que asumas un desafío. Eche un vistazo a lo siguiente como ejercicio.
http://en.wikipedia.org/wiki/Eight_queens_puzzle
Ahora este es un desafío difícil. Tienes que colocar ocho reinas en un tablero de ajedrez para que cada una de las reinas esté a salvo la una de la otra.
Entonces, como aprendiz, esto puede ser un gran alcance, sin embargo, puede ver este problema y utilizarlo para aprender a escribir código.
Aquí hay una estrategia para probar ...
Replantee el problema para que sea mucho más simple que el problema declarado a resolver . Olvídate de las ocho reinas. Concéntrate en solo uno. Aprenda a escribir el código para representar un tablero de ajedrez en la memoria, coloque una sola reina en ese tablero y luego muéstresela al usuario en la pantalla con solo texto.
Una vez que hayas hecho una puñalada en el Paso 1. Coloca dos reinas para que ambas estén seguras.
Finalmente, intente colocar más de 2 reinas en el tablero para que estén a salvo.
Los pasos anteriores son un giro en una estrategia de diseño llamada Refinamiento gradual. Es un poco de la vieja escuela en términos de diseño, pero te llevará de una pantalla en blanco a algún código interesante en muy poco tiempo.
Existen otras estrategias de diseño e implementación: diseño guiado por pruebas, diseño orientado a objetos y patrones de diseño, por nombrar algunos.
Con el tiempo agregará estas estrategias al arsenal y las usará cuando sea necesario. Cuantas más estrategias de diseño estudies y practiques, más fácil será.
Que la fuente te acompañe.
fuente
Un prólogo rápido
Aprender haciendo: conocimiento vs know-how
Hay una gran diferencia entre conocimiento y know-how. Es un error común que los nuevos alumnos piensen que debido a que pueden "entender" un programa mientras lo leen, realmente entienden el razonamiento para que el programa se escriba de la manera en que está.
Y la única forma de llegar a esa segunda parte es practicando. Siéntate, abre un editor de texto, una línea de comando y ponte manos a la obra.
Programación en lo pequeño
Es probable (y esperado) que en esta etapa su capacidad de comprender cómo interactúan entre sí varios componentes de software complejos sea limitada. Y en realidad es algo bueno, ya que te obliga a comenzar desde lo básico. No salte el arma y muévase al ritmo correcto: comience con ejercicios pequeños para tareas pequeñas.
Para ser honesto, nunca he estado convencido de que comenzar a aprender programación con Java es el camino a seguir (solía enseñar programación para vivir en la universidad, y todavía hago clases particulares ocasionalmente). Es en sí mismo demasiado complejo para comenzar, y la mayoría de los libros de Java parecerán bastante desalentadores. Sin embargo, seguramente se puede hacer (al menos para algunas áreas de ese conocimiento global que esperamos de los programadores), siempre y cuando se limite a aprender paso a paso.
Libros
Como está configurado en Java, y si necesita un libro decente de Java, le recomiendo:
Solo menciono esto, ya que no sé lo que usas en clase. Hay muchos otros libros. Algunos son buenos. Algunos paralizarán a los estudiantes durante años.
Su proceso de estudio
El flujo de trabajo básico
A partir de ahora, te aconsejo que sigas este proceso de 2 pasos para todos los ejercicios y ejemplos de código que has visto en clase:
En caso de fallo
Si falla y siente que necesita echar un vistazo al libro, es probable que su fracaso sea:
Es probable que la primera causa sea la que enfrenta con más frecuencia. El segundo es anecdótico. Ambos se abordan mediante la práctica recurrente.
Cada vez que no pueda implementar uno de estos primeros ejemplos, mire el libro nuevamente y luego vuelva a cerrarlo. No codifique mientras mira el libro. Incluso te aconsejo que elimines toda tu solución y comiences de nuevo. La repetición es una parte molesta pero importante del proceso de aprendizaje.
No te lo tomes a la ligera. Cada vez que sientas la necesidad de decirte "sí, está bien, lo sé " o "estoy 90% allí, es casi tan bueno como lo he hecho" y quieres pasar a otra sección, luchar contra esa necesidad y comenzar de nuevo. Es muy difícil tener la honestidad de admitir que no entendiste completamente un concepto.
Nota al margen: considero que es un gran mal servicio que la mayoría de los programas escolares ahora intenten "iniciar" los cursos de programación simplificando demasiado las cosas y proporcionando herramientas demasiado avanzadas para los estudiantes: el objetivo no es hacer que su vida sea miserable o que usted también aprenda de memoria cosas que más adelante en su carrera serán automatizadas por sus herramientas y que a veces apenas recordará. Es para enseñarte todas las partes que flotan.
En caso de éxito: ¡vaya más allá!
Si logra implementar su ejercicio, no necesariamente salte directamente al siguiente. Intenta ver qué puedes hacer para mejorar eso. ¿Se puede cambiar la salida que se solicitó? Añadir una pequeña característica? ¿Una opción? Intenta hacerlo, ya que ahora estás en esa zona divertida donde pasaste la dificultad principal, y estos pequeños requisitos autoimpuestos son más propensos a mantener tu ánimo un poco.
Sin embargo, no vaya demasiado lejos: no pasa de imprimir el alfabeto y revertirlo para que aparezca de repente en una diagonal en la pantalla con un degradado de colores. Da pequeños pasos. El aprendizaje es un proceso largo e iterativo, y debe abordar los problemas con niveles crecientes de dificultad (por ejemplo, vea cómo pienso generalmente en explicar la recursividad ).
Es solo aprendizaje: una comparación
Su problema en realidad no está relacionado con la programación en absoluto. Es el mismo problema que miles de personas encuentran cuando intentan aprender matemáticas.
Si les da un problema, no ven cómo trabajar para llegar a la solución. Sin embargo, si escribe la solución para ellos, la mayoría lo entenderá y pensará "¡maldición, eso fue muy simple!". Sin embargo, les dará un problema similar con diferentes medidas e hipótesis y no podrán resolverlo: no entendieron la lógica detrás de esto, y necesitan práctica para poder hacerlo ellos mismos.
Tenga en cuenta que este es un problema común con las matemáticas, pero en mi opinión, lo ve en toneladas de otros campos donde se requiere cierta lógica: solfeo de aprendizaje, gramática del lenguaje, física, etc. Y no se trata de una habilidad "natural". para entender estas cosas: todo se reduce a la práctica (ya sea en esa área o en otras que llevan al individuo a comprender los conceptos en este campo más fácilmente).
No hay razón para que no puedas aprender a escribir código. Solo tienes que seguir intentándolo hasta llegar a ese "¡ah AH!" / Eureka momento. Luego pase al siguiente problema, más difícil.
Estos también pueden ayudar (más adelante):
fuente
Sé que esta no es la respuesta que querrás escuchar, pero: ¡escribe más código!
Más específicamente diseccione el código que usted entiende. A menudo me ayuda a "traducirlo" al inglés regular (ya que soy un principiante relativo).
No tenga miedo de hacer una lluvia de ideas sobre su idea de escribir primero un fragmento de código (es decir, "Quiero declarar una variable aquí, iterar a través de este segmento, etc.") y ENTONCES buscar pieza por pieza cómo hacer estos diversos segmentos.
Recuerde que la codificación es menos como un ejercicio de memorización y como encontrar una manera de construir algo a partir de bloques de construcción. Al igual que aprender un idioma extranjero real, la comprensión es lo primero, esta es una buena señal de que está en camino.
Solo tenga fe en que cuanto más escriba y lea el código, más sentido tendrá.
fuente
Como otros han dicho, este es un caso en el que debes practicar, practicar, practicar.
Escriba un montón de pequeños programas que resuelvan un solo problema.
A veces, la parte más difícil es crear algo que valga la pena programar. Si puede, trate de trabajar en un tema con el que cree que está luchando, como clases, herencia, etc. Algunas ideas fuera de mi cabeza:
GetArea
. Ahora, haga que las clases Triángulo y Rectángulo hereden de Polígono, y asegúrese de que implementen GetArea. Siga haciendo esto para polígonos de orden superior (pentágono, hexágono, etc.).* El propósito del código golf es realizar la tarea proporcionada utilizando la menor cantidad de caracteres, bytes o alguna otra métrica indicada en la pregunta. Si lee algunas de las respuestas, apreciará rápidamente las formas inteligentes en que las personas resuelven estos problemas. ¡No se concentre en resolver el problema en la menor cantidad de bytes! Las personas que publican para codificar golf son programadores muy experimentados. Pero, algunas de las preguntas ofrecen tareas fáciles en sí mismas.
Algunos ejemplos divertidos de códigos de golf:
Estructura básica para resolver un problema:
Muchos de estos le dan una buena idea de cómo debería ser una función. Dado X, hacer Y, y el resultado debería ser Z:
Para aprender los conceptos básicos y familiarizarse con un idioma, la plantilla anterior es suficiente. Una plantilla más orientada a objetos sería:
Si ayuda, escríbalo también en papel. Hable usted mismo a través del proceso de cómo usted , como ser humano, resolvería este problema. Ejemplo: dados los números i, j y k, muéstrelos en orden descendente. Como persona, es fácil de resolver. La parte difícil es traducir sus ideas en instrucciones línea por línea para que una computadora pueda resolverlo.
Intenta proponer tus propias ideas también. Puede ser difícil, pero incluso los programas más simples pueden enseñarte algo que no sabías. El objetivo es profundizar en lo básico, hasta que se conviertan en una segunda naturaleza.
fuente
No llegará a ninguna parte simplemente leyendo el código; Necesitas estar escribiendo código. Solo escribe el código. No te preocupes si el código que escribes es basura; todos han escrito código basura. Algunas personas viven de ello. Nadie comienza a escribir un buen código y creo que, mientras aprendemos, es casi necesario escribir un código malo porque solo entonces la diferencia entre el código bueno y el malo se vuelve realmente evidente.
Es difícil apreciar la diferencia entre el código bueno y el malo al leer dos bloques de código que hacen lo mismo, pero cuando has escrito un guión y obtienes a alguien con conocimiento para revisarlo y proporcionar comentarios, la diferencia a menudo se vuelve mucho más evidente porque puedes aplicarlo directamente a lo que sabes.
La programación no es algo que se pueda aprender memorizando de memoria; No es como sus tablas de tiempos o fechas en la historia. La programación es una habilidad práctica que requiere práctica constante para mantenerse alerta. Aprender a programar sin escribir código es como aprender a nadar leyendo un libro.
fuente
Esta pregunta ya tiene algunas respuestas realmente buenas, pero hay algunas ideas que aún no he visto.
Aprender un lenguaje de programación es muy parecido a aprender un lenguaje 'real': siempre es mucho más fácil leer que escribir, ya sea una sola oración, un artículo científico o un libro. Al leer, se puede descubrir mucho solo desde el contexto, entendiendo el texto o el código a medida que lo lee. Cuando vea una palabra que no conoce, quizás conozca otra palabra con la misma raíz; cuando ve un método, el nombre del método le da una buena idea de lo que hace. Al escribir, debe recordar no solo la sintaxis, sino también las palabras reales que debe usar. Y es lo mismo para la programación.
Como otros han dicho, no se puede aprender a escribir programas simplemente leyendo programas.
Empieza pequeño. Busque un tutorial de Java y haga todas las unidades, una tras otra. Y cuando tenga la confianza suficiente, elija un pequeño proyecto para probar sus habilidades, tal vez algún juego simple que conozca bien y que no requiera demasiada interacción con la GUI. Cuando haya decidido, no solo abra su Eclipse y mire fijamente la 'página en blanco'. Crea un guión gráfico. No tiene que dibujar diagramas UML elaborados, solo piense en cómo se pueden resolver ciertos aspectos del programa, cómo se desarrolla la historia o su argumento, por así decirlo. Y cuando escriba el código, comience con un borrador. Usualmente escribo muchos comentarios, describiendo lo que debe hacer el programa, en qué orden, y luego empiezo a completar el código real del programa.
fuente
Como dicen otros, solo necesita practicar escribir código. Para que eso sea satisfactorio, debe desafiarse a sí mismo con la resolución de algún tipo de problema, ya sea imprimir mensajes predefinidos, hacer una calculadora interactiva simple o resolver alguna tarea específica.
Si le falta inspiración, el Proyecto Euler tiene una gran cantidad de ejercicios de matemática / programación de dificultad creciente. Le dan objetivos claros y desafiantes para lograr, y deberían ayudarlo a sentirse más cómodo diseñando programas.
fuente
Solo pensé que hablaría sobre este tema porque realmente golpea cerca de casa.
Solo necesita comenzar a codificar. No me malinterpretes, la lectura es excelente, pero lo que realmente te da que el conocimiento de codificación de trabajo es en realidad construir algo. Aprendí más de una sola colocación de verano que el año anterior al leer sobre ella.
También debo agregar que no deberías comenzar a codificar a ciegas . Haz un proyecto para ti. Necesitas algún tipo de dirección para ponerte y saber lo que quieres hacer. Te sorprenderá ver cuánto aprenderás rápidamente. Si solo abre un IDE y comienza a hacer ejemplos sencillos de hello world, esa sensación de desmotivación se infiltrará rápidamente en usted. Encuentra algo con un poco de profundidad y antes de que te des cuenta, estarás expandiéndolo.
fuente