Cómo traducir mis pensamientos en código

Al hacer este proceso exacto, aprendí algoritmos cuando era niño. Bueno, déjenme contarles cómo desarrollé algunos algoritmos de clasificación.

Tengo un paquete de cartas. Separado una suite (creo que fue corazones). El orden en el que decidí que deberían colocarse fue A, 2,3,4,5,6,7,8,9,10, J, Q, K. Ahora me obligué a hacer el trabajo de ordenar un estado aleatorio, mientras intentaba anotar todo lo que hacía.

Inicialmente observé que estaba recogiendo cartas al azar (las que estaban frente a mis ojos y en la posición incorrecta) y las colocaba en otro lugar. También estaba haciendo cosas como si tomara un cuatro, lo colocaría aproximadamente un tercio del camino, esto usa información sobre el rango de valores con los que un algoritmo de clasificación general podría no tener que comenzar. El orden en que elegí las cartas fue demasiado aleatorio para hacer un análisis. De esto concluí:

  1. Nuestros cerebros funcionan de manera muy diferente a una computadora. Los dos no tienen los mismos movimientos básicos, por lo que no es posible que los dos tengan los mismos algoritmos.
  2. Una forma de resolver el problema puede ser muy eficiente en uno, pero no en el otro.
  3. Al pensar en una forma en la que habríamos resuelto el problema, podríamos hacer algunas suposiciones, como la disponibilidad de cierta información o la capacidad de solución de una determinada subparte, lo que puede no ser cierto cuando la computadora lo hace.

Entonces, traté de identificar los procedimientos básicos que sabía cómo implementar en una computadora. Para este problema de clasificación, esto sería comparar dos números y mover una tarjeta (mis notas me ayudaron aquí, principalmente escribía sobre movimientos de cartas aquí, así que sabía que podría ser un paso básico). Una vez que me limite a hacer solo estos movimientos, cualquier método que desarrolle sabría cómo escribir un programa. Y después de algunas horas moviendo tarjetas de un lado a otro, se me ocurrieron dos algoritmos para hacer la clasificación, los que llamaríamos (ahora que he leído algunos libros de algoritmos) clasificación de inserción y clasificación binaria.

Años más tarde, cuando estaba aprendiendo programación paralela, me encontré con un problema similar. Lo que hubiera funcionado para un programa lineal no parece muy eficiente ahora. Tuve que volver a aprender que la programación paralela requiere un conjunto diferente de conceptos básicos para funcionar de manera eficiente.

Muy bien, el primer paso es entender lo que quieres. Haré algunas analogías y, si no lo olvido, te daré paso a paso un código simple después.

Digamos que quieres tener un edificio propio. ¿No es tan preciso? Entonces, ¿qué es lo que realmente quieres? ¿Una casa? ¿Un castillo? ¿Una casa en el árbol? Un penthouse? En primer lugar, reconozca qué es lo que quiere, es decir, el alcance de sus pensamientos (propósito principalmente)

Después de saber lo que quieres, puedes comenzar a hacer tus cosas. Quiero construir un castillo, siempre quise uno. Sabes, el propósito sería tener una fortaleza mía. Los enemigos que estoy a punto de hacer (celoso porque tengo un castillo) me miran y saben a primera vista que no tienen forma de quitarme mi castillo. También debería ser cómodo como el infierno.

Cuando era pequeño descubrí (entre lágrimas) que el objeto no simplemente flota, por lo que para nuestro Howler Peak (bonito nombre, lo sé) necesitamos una base sólida y una estructuración general. Básicamente, cosas sobre las que vamos a construir nuestras cosas.

No sé tú, pero soy un poco paranoico … Siguiente paso: Walls. Para paredes y otras cosas, necesitamos piedra y otro material, por lo que necesitamos algunas personas que nos traigan la piedra. Y necesitamos dinero para pagar a los campesinos.

Avance rápido, necesito piscinas y salones de baile y cámaras de tortura y un sistema de calefacción realmente bueno (los castillos tienden a enfriarse mucho). Tomaré cada uno de los anteriores y explicaré el proceso para hacerlo.

* Agregue más retumbar aquí *

Código de cosas:

Quiero construir un juego

¿Que juego? Serpiente, por supuesto.

¿Qué hace una serpiente? Bueno, su propósito es no morir (muy importante) y comer campesinos, por supuesto.

Para comer, necesitas moverte. Para moverse, debe conocer su posición en cada momento y su dirección (así como su velocidad).

Bien, ahora podemos movernos. ¿Próximo paso? Asegúrese de no golpear una pared o comernos por error. Entonces, active una función de verificación.

Ahora podemos movernos y evitar todos los obstáculos. Excelente. Pero, ¿evitamos la comida? Por supuesto que no, tonto, lo comemos. Ya sabes, desde que somos pequeños, lo primero que aprendemos es poner cosas en nuestras bocas. Entonces obtenga otra función para comer.

¿Por qué comemos?

Para hacerse más grande, por supuesto! Pero, ¿cómo nos hacemos más grandes? Bueno … Una forma de hacerlo es detener la cola por seguirnos para la próxima iteración. Por qué esto nos hará más grandes se deja como ejercicio para el lector.

Así es como llevas tus pensamientos al código. No importa cuán complicada sea su tarea, intente dividirla en partes más pequeñas. Si todavía hay una parte que no puede abordar, divídala aún más. y además. y además.

Siéntase libre de dividir este ensayo en partes más pequeñas para una comprensión más fácil. La parte más importante es aquella en la que te digo específicamente ‘Siempre quise un castillo’.

Aprender la sintaxis de un idioma no es aprender a programar.

Aprender a programar tiene que ver con la habilidad de convertir su idea en instrucciones que la computadora puede seguir.

Y convertirse en un buen programador es aprender a hacerlo rápidamente y crear código que se ejecute de manera eficiente sin errores.

Tome su idea compleja e intente dividirla en problemas solucionables. Trabaja de una pieza a la vez. Intente hacer que cada problema sea lo suficientemente simple como para caber en una página o menos de código, tendrá dificultades para mantener más de eso en su cabeza a la vez.

Al escribir el código. El código es la manifestación física de lo que realmente tienes en mente. Les digo a mis alumnos que “programar es construir castillos en el cielo”.

Esta es la parte del regalo de ser un desarrollador, exactamente como en el arte, algunas personas ven que dibujar un rostro humano es muy fácil, otras ven que no es posible en absoluto,

Todo lo que puedo decir es seguir tratando de convertir sus pensamientos en pequeñas tareas, que puede ordenar desde su computadora.