¿Por qué la programación es difícil para mí, pero fácil para algunos?

Cuando dices ‘tratando de aprender más’, ¿qué haces realmente?

Un juego de tetris es un lugar fabuloso para comenzar.

Su primera tarea es abrir una ventana de gráficos utilizando la biblioteca de gráficos de C ++ que tenga.

Luego, lea un poco los libros / manuales / documentación en línea para descubrir cómo dibujar un rectángulo pequeño.

Ahora agregue este nuevo código en su aplicación para dibujarlo en la parte superior de la pantalla, en el medio.

Claramente no se está moviendo.

Eso es lo siguiente.

¿Cómo lo harías bajar la pantalla? Necesitarías dibujarlo un poco más abajo. Necesitarías variar su altura.

Variar la altura … ¿suena eso como una variable? Lea sobre esos si es necesario.

Ahora, ¿cómo conseguimos que realmente se mueva?

Necesitamos un bucle. Así que podemos dibujarlo más de una vez.

En nuestro bucle, ¿qué tal si ajustamos la variable de altura para que nuestro rectángulo se mueva un píxel hacia abajo en la pantalla, cada paso del bucle?

¿Que ves? Probablemente dos cosas:

  • Fue demasiado rapido
  • Dejó un rastro

Por lo tanto, debemos reducir la velocidad del bucle para solucionar el primer problema (¿Cómo? Otro bucle dentro de nuestro bucle principal, solo para gastar el tiempo o ¿Hay alguna forma de esperar el tiempo que se nos proporciona?)

El rastro que podemos arreglar, al principio, borrando la pantalla antes de dibujar el rectángulo. Tendrá que leer los libros / manual / etc para averiguar cómo lo hace en su biblioteca de gráficos C ++.

Entonces, codifique un poco, piense en el siguiente problema a resolver, lea un poco, codifique un poco.

Si te sientas leyendo libros de programación, nunca aprenderás una sola cosa. Nada de eso tendrá sentido, y nunca aprenderá de sus “errores”, como nuestro recorrido por la pantalla.

¡Buena suerte! Suena un proyecto divertido, y uno que se sentirá genial cuando lo agrietes!

Fácil para algunas personas, porque lo han estado HACIENDO POR LARGO TIEMPO . Han jodido muchas cosas en el proceso y han aprendido de sus errores. Está bien cometer errores. No se espera que lo hagas bien la primera vez. Por favor, no seas un perfeccionista. Lo he sufrido durante mucho tiempo.

Si miras el código que escribiste hace un año y te sientes mal por eso, entonces deberías estar feliz. ¿Por qué? Significa que has mejorado y que conoces mejores formas de hacer lo mismo.

Entonces, cometa errores, aprenda de ellos, aprenda también de los errores de otros. Al principio, manténlo simple, haz que funcione, luego hazlo bonito y, finalmente, hazlo rápido. Ahora ve y termina tu proyecto. Buena suerte 🙂

Cuando ves personas exitosas, solo ves “éxito”, pero la mayoría de las veces, no miras “cuántas veces se equivocaron en ese proceso”.

Diferentes personas tienen diferentes aptitudes. Es así de simple.

Sin embargo, puedes aprender a programar. Solo tienes que ser paciente y perseverar. Superar la joroba de aprendizaje inicial es un reto para la mayoría de las personas.

La clave para escribir un programa o una aplicación es hacerlo paso a paso y pensar de manera lógica. Para tu juego de Tetris, primero debes entender la naturaleza del juego. A partir de esto, divide el problema en problemas más pequeños y más fáciles de digerir.

El juego tiene un componente de interfaz de usuario . ¿Cómo se programa esto? Desglose esto aún más en problemas más pequeños.

El juego tiene un conjunto de reglas que debe obedecer. ¿Cómo se programa esto? Necesitas diseñar cómo funciona esto. En este punto, no tiene nada que ver con el lenguaje de programación (C ++). Debes determinar algorítmicamente cómo aplicar las reglas del juego. Desglosa esto en problemas más pequeños.

Una vez que su programa esté completamente desarrollado algorítmicamente, codificará la solución utilizando C ++. En este punto, casi debería ser un proceso mecánico. Asigna los elementos de su solución a las características del lenguaje (tipos de datos, funciones, genéricos, etc.). Tenga en cuenta que realmente podría usar cualquier lenguaje de programación, ya que el diseño de su programa no debe ser específico del idioma. Puedes codificar el juego de Tetris en Python o Smalltalk o Go o Scheme.

Toda la programación realmente se reduce a la descomposición del problema. Así es como lo haces más fácil y más manejable.

La programación no es fácil. Quien te dijo eso estaba mintiendo.

He estado programándome la vida durante los últimos tres años y tengo problemas graves todos los días. También mis colegas.

Claro, hay problemas con los juguetes que pueden ser fáciles para algunos, pero los problemas reales son difíciles. Construir un juego de tetris para un principiante no es nada fácil. Especialmente no en C ++.

Recuerdo cuando asistí a un curso introductorio de programación orientada a objetos en la universidad. Los estudiantes en ese curso tenían niveles de experiencia muy diferentes. Algunos habían programado desde los doce años. Otros eran en realidad programadores profesionales que tomaban el curso solo para obtener un título. Muchos nunca habían programado antes y probablemente no tenían la intención de hacerlo para vivir en ningún momento. Para ellos, el curso era solo un obstáculo para obtener un título. Solo lo hice más o menos en el examen, y ahora eso paga mis cuentas. Para que pueda ver por qué puede parecer fácil para algunos. Es sobre todo sobre la experiencia.

La programación es sobre saber.

  1. Que hacer
  2. Cómo hacerlo (y no hacerlo) de forma paso a paso.
  3. Cómo hacer que el código se ejecute, encuentre errores (cuándo y dónde) y bloquee las causas y corríjalos.
  4. Saber por qué estás haciendo lo que estás haciendo, la forma en que lo haces.

Normalmente lleva tiempo encontrar respuestas a estas preguntas. Así que estás en buena compañía.


Cuál es exactamente el problema:

Q) ¿Confundido por la programación orientada a objetos / clases de C ++?

A) Escribe el juego en C subconjunto de C ++. Concéntrate en las acciones / funciones primero. Desglose el trabajo en pseudocódigo de tamaño de mordida y luego codifíquelos en funciones C. Comience con las funciones básicas y continúe agregando una nueva función de alto nivel por versión.

Realice copias de seguridad con regularidad en dispositivos USB y cargue una copia comprimida en el disco de Google o Dropbox. La frecuencia de copia de seguridad debe coincidir con la frecuencia de los cambios en el código. Perderá tantas horas de trabajo como se olvide de realizar una copia de seguridad.

Q) ¿Confundido por los punteros de estilo C?

A) Usar referencias a C ++.

Q) ¿Confundido por C ++ GUI framework?

A) En su lugar, utilice caracteres alfanuméricos simples o “gráficos” en modo TUI.

Q) ¿El curso requiere usar todas las opciones que se saltan arriba?

A) Saltalas de todos modos. Construye un prototipo simple en su lugar. Si tiene tiempo, puede pedirle a alguien que lo ayude a rediseñar su primera versión con los requisitos del curso. Por lo menos obtendrá un trabajo central hecho.

Planifica el aspecto del juego. Te da algo para empezar, incluso si solo se usan alfabetos como ladrillos.

La respuesta más simple es que ser un buen programador en C ++ requiere cientos de horas de práctica. He estado codificando durante 20 años en idiomas de nivel superior y la cantidad de horas que he dedicado a esto es bastante enorme.

¡Pero no desesperes! Existen buenas prácticas que pueden acelerar significativamente el proceso de codificación. Al final de este post, cito dos libros que pueden ayudarte, pero aquí hay algunos principios básicos que te ayudarán tremendamente:

  • Siempre escribe funciones que hacen una cosa, y solo una cosa. Prueba cada función por separado. De esa manera, solo depuras pequeños trozos de código, y no un programa completo.
  • use nombres de funciones y variables significativas, es decir, a28 no es un buen nombre de variable, pero number_of_points es un gran nombre. Por ejemplo number_of_points = get_points (bricks); es mucho más legible que np = f (br);
  • la optimización demasiado pronto puede ser un pecado (parafraseando a Don Knuth). Escriba su algoritmo tal como está, y solo piense en acelerar su ejecución más adelante.
  • Minimizar el uso de variables globales. Ninguna variable global es ideal. De esa manera, el alcance de las variables es solo el alcance de su función. Los efectos secundarios son la causa número uno de errores en mi experiencia.

Eso es lo que me viene en 5 ′. Estoy seguro de que hay más. En C / C ++ siempre hay inquietudes acerca de la asignación de memoria, sobre las cuales no tengo experiencia.

Los libros son :

Martin, Robert C. Código limpio: un manual de artesanía de software ágil . Pearson Education, 2009. Y

Caza, andrew El programador pragmático . Pearson Education India, 2000.

PS: ¿Tienes que escribir en C ++? La codificación consume mucho menos tiempo en un lenguaje de programación como Python.

Hay muchas razones posibles:

  • Experiencia previa o falta de ella.
  • Disfrute: cuánto disfrutan usted o sus amigos de la codificación.
  • Falta de interés en los problemas PARTICULARES: a algunas personas les encantan los “juegos de codificación” hasta que descubren lo que realmente significa, a algunas personas les encantan u odian las actualizaciones de la base de datos de codificación, etc.
  • Habilidades de lógica (es trivial para algunos de nosotros predecir el flujo de programas, etc. y es casi imposible para mí entender que otros no pueden, pero luego lo he estado estudiando de manera formal e informal desde los 14 años).
  • Capacidad para pasar de “atención a los detalles” a “imagen general” a voluntad
  • Enseñanza deficiente: un profesor realmente bueno o los libros correctos pueden hacerlo MUCHO mejor, mucho más rápido
  • Creer en ti mismo: esto ayuda enormemente a CREER simplemente que puedes tener éxito, TRABAJAR para tener éxito y negarte a aceptar cualquier otra cosa
  • Necesidad: aquellos que DEBEN aprenderlo (por ejemplo, para alimentar a su familia) generalmente encontrarán una manera
  • El idioma que está utilizando, por el motivo que sea, a algunas personas les gusta la sintaxis y la semántica de un idioma mejor que otra.
  • Haber dominado las ideas BÁSICAS (puede ser la experiencia anterior, la enseñanza adecuada anterior o alguna otra cosa)

Probablemente hay muchos más elementos.

Bueno, he pasado esta etapa. Tal vez pueda intentar responderte.

Lo primero es: no memorices nunca el código y no odies la programación. Eso es lo último que te derriba. Haz lo que amas y ama lo que haces. Parece gracioso, pero estos son los que deben sobresalir.

Cuando resuelvas algunos problemas, trata de rastrearlos en un papel. cómo funciona exactamente el algoritmo, los bucles, etc. Cree sus propios casos de prueba de esquina e intente escribir nuestro propio código. Si te golpean, no te preocupes. Véalo y comience a hacerlo de nuevo. Hacer algunos proyectos a tiempo parcial. Si te estás quedando sin ideas, busca personas en github. Obtenga la idea, implemente en su cuenta, agregue nuevas funcionalidades. Una vez que obtengas la alegría de escribir un código, definitivamente lo harás.

tienes miedo de escribir código pensando “¿qué pasa si encuentro un error? ¿Y si no funciona? ¿Qué pasa si no termino? “Si sigues intentando, entonces puedes hacerlo.

El trabajo duro siempre trae recompensas. Si la persona A puede hacerlo, entonces tú también puedes hacerlo. La dedicación, la determinación y el trabajo duro son importantes. Sigue sonriendo, comienza a codificar de nuevo. ¡Buena suerte!

Algunas personas solo tienen una mente para ello. Tenía un compañero de clase que estaba increíblemente dotado matemáticamente. Recuerdo que una vez que interrumpió a un profesor durante una prueba y dijo “no se puede hacer eso”. ¡Lo atrapó sobre la marcha! El profesor se sentó allí por unos minutos y dijo: “Ah, sí, tienes razón … debería hacer una pregunta de prueba”. Mi amigo se peleó en el curso de microcomputación. Lo odiaba.

Habiendo dicho todo esto, no te rindas y metes todo en ello. Nada que valga la pena es fácil y aprende todo lo que puedas mientras estudias. Solo asegúrese de que su enfoque general del problema tenga sentido, piénselo bien antes de escribir el código. El mayor error que puede cometer es correr un largo camino por un camino y luego darse cuenta de que tiene que reestructurar su código debido a su arquitectura. Si ayuda, dibuje la lógica en pseudocódigo / diagramas de bloques. No pierdas de vista esto y no te dejes atrapar por los detalles. Si al final del día tienes bloques feos que se caen y puedes apilarlos, es mejor que tener una interfaz y gráficos refinados. Huesos primero y luego carne en el problema.

Soy un estudiante de CS en la Universidad del Norte de Iowa, y me he encontrado en situaciones similares a veces. Mi núcleo de informática se centra principalmente en Python, pero como sucede con todos los lenguajes de programación, definitivamente puede tener una curva de aprendizaje.

A veces puede ser muy molesto ver a otros estudiantes sobresalir en lo que estás aprendiendo a un ritmo mucho más rápido que tú, pero realmente solo necesitas concentrarte en ti mismo.

El recurso más útil que puedes usar es hablar con tu maestro. Ellos o al menos deberían estar dispuestos a ayudarte. Si no lo hacen, ver si otro profesor en el departamento lo hará. No les pida las respuestas, pídales aclaraciones. Escriba su mejor intento para este problema y llévelo a ellos. Pídales que lo revisen con usted para ayudarlo a comprender mejor qué es lo que no está captando. Si no puede escribir el código en un papel, escriba una solución de diseño paso a paso para el problema, en psuedocode. Intente definir el problema en términos de variables, qué recursos tiene / puede usar y qué pueden proporcionarle, y quizás con qué tipo de entradas / salidas tiene que trabajar. El mejor código no se puede escribir sentándose y escribiendo hasta que esté terminado. Realmente necesitas resolver problemas e intentar resolverlos pieza por pieza. Esto hará que sus tareas de programación sean mucho más fáciles.

Si aún tiene problemas, tal vez solo con sintaxis e ideas generales, le recomiendo encarecidamente que busque algún tipo de grupo de estudio de estudiantes con el que pueda trabajar. A veces, con varias mentes juntas, es mucho más fácil aprender cosas. Intente que varias personas le expliquen los temas que no entiende, ya que diferentes puntos de vista pueden ser la ventaja que necesita para resolver las cosas.

Por último, creo que deberías intentar armar algún tipo de “mini-documentación”. Esta es una de las primeras cosas que hice al intentar aprender Python, y todavía lo uso con frecuencia. Organice las cosas que sabe y colóquelas en algún tipo de formato para que pueda consultarlas fácilmente y utilícelas para practicar nuevos conceptos. A medida que adquiera conocimientos nuevos, agréguelos a su mini-doc y repítalos. Al hacer esto, puede concentrarse en aprender cosas nuevas, sin tener que preocuparse por olvidar los conceptos básicos que seguirá necesitando para aprender estos nuevos conceptos.

¡La mejor de las suertes!

No puedo leer música, no puedo tocar el piano o cualquier otro instrumento.

No soy estúpido (¡creo!) Apuesto a que si practico mucho, durante años, podría ser un buen pianista. Nunca voy a tocar para una orquesta, no verás mis CD en un estante en ningún lugar, pero me divertiré y entretendré o molestaré a mi familia y amigos.

Mi hermana lo hace, ella jugó para Andrew Lloyd Webber por un tiempo, tiene una música increíble y talento artístico.

Es adecuada con las computadoras, puede configurar macros, no puede programar, su cerebro no está conectado de esa manera. Ella tampoco es estúpida, y con mucho trabajo, podría ser lo suficientemente buena como para escribir plugins de wordpress simples a moderados.

Pero sería difícil para ella, como si fuera difícil para mí tocar el piano.

Si no tienes talento natural, eso no te detendrá, puede que te limite, pero no te detendrá. Mientras tengas pasión. Con pasión puedes hacer casi cualquier cosa.

Entonces, si realmente quieres programar, ¡apégate a él! Hay algunas sugerencias excelentes en otras respuestas a su pregunta que lo ayudarán a mejorar sus habilidades.
Si es porque crees que podría ser un buen trabajo, puedes buscar en otra parte, porque si no es tu pasión, como trabajo, pronto se volverá aburrido. Adn tiene un trabajo que no te gusta, que envejece rápido.

Todos somos diferentes, algunas personas pasan su examen de conducir por primera vez, algunos toman hasta 10 intentos para pasar.

Sí, la programación es difícil, y quizás para algunas personas no sea tan natural como para otras, pero no es un gran problema, tal vez usted sea la persona que toma 5 intentos para pasar su examen de conducir, pero está bien, siempre y cuando ir allí.

Ser un poco lento para recoger cosas no es lo mismo que ser malo, tal vez el modelo académico no funcione para ti, quizás C ++ no sea adecuado para ti, tal vez escribir juegos no sea adecuado para ti. No se preocupe demasiado por eso, y concéntrese en escribir ese juego de Tetris.

Tetris es un juego más difícil de escribir que parece, así que no te preocupes si lo encuentras complicado.

Mi sugerencia es la misma de siempre:

Descanso. Eso. Abajo.

Divide el problema en muchos problemas más pequeños. No pienses “¿Cómo voy a hacer Tetris?”, Piensa “¿Cómo obtendré una ventana en la pantalla?”, Piensa “¿Cómo obtendré un evento de pulsación de tecla?”

En su mente (o escríbalo), divida el problema en pequeños problemas y márquelos a medida que avanza. Está bien luchar, y está bien encontrar algunos de esos pequeños problemas más difíciles que otros, pero es esencial que no pienses en “Tetris”, sino en los cientos de tareas más pequeñas que equivalen a Tetris.