Escuché a muchas personas decir que al desarrollar algoritmos, primero debe usar lápiz y papel, diagramas de flujo y demás, para que pueda enfocarse en el algoritmo en sí mismo, sin preocuparse por la implementación de dicho algoritmo (es decir, enfrenta un problema a la vez hora).
Sin embargo, la mayoría de las veces me resulta más fácil desarrollar mi algoritmo sobre la marcha. Es decir, pienso un poco en el problema hasta que sé la dirección general que debo tomar, y luego comienzo a escribir código y hacer cambios hasta que el algoritmo emerge y funciona.
¿Es este un mal hábito que debería intentar cambiar?
fuente
Creo que el tuyo es el enfoque más común. Si el algoritmo es especialmente complejo o difícil, puede ser difícil tanto descifrar el algoritmo como implementarlo a la vez, pero en general dudo que ayude a la mayoría de las personas.
Pero, por ejemplo, no inventaría reglas para una gramática e implementaría un analizador sin escribir las reglas en papel (o tal vez con alguna herramienta especial que no tengo) primero, o implementar un B-Tree sin pseudo- Código disponible.
No diría que tienes un mal hábito a menos que te esté haciendo daño, y creo que lo notarías si lo fuera.
fuente
¿Quiénes son estas "muchas personas"? ¿Y están programando para ganarse la vida? Lo que estás haciendo es exactamente lo que hacen la mayoría de los programadores, al menos la mayoría de lo que he conocido. Hay poco uso para el papel cuando es más rápido escribir, y poco uso para el pseudocódigo cuando se programa en un lenguaje de alto nivel. Ocasionalmente uso lápiz y papel para visualizar un algoritmo complicado (por ejemplo, rotar un árbol), pero sobre todo empiezo con un código de alto nivel y gradualmente lleno los espacios en blanco.
Al igual que KLE, creo que esto funciona mejor después del desarrollo basado en pruebas. Suponiendo que va a escribir pruebas de todos modos, es mejor que las escriba primero.
fuente
puede crear un diseño mientras realiza las clases, métodos y pruebas de código auxiliar, pero puede atascarse mientras crea los detalles
Para las cosas realmente complejas (compiladores y demás), un diseño de bolígrafo y papel (o al menos en una herramienta de diseño) lo ayudará a mantener el rumbo y la vista en toda la imagen y evitar malas elecciones de diseño e incluso permitirle elegir ciertos patrones de diseño desde el principio
pero en última instancia depende de qué tan bien puedas seguir viendo el panorama general
fuente
Recomiendo esbozar las instrucciones generales (la fase de "lápiz y papel") antes de saltar a la implementación para ahorrar tiempo eliminando los requisitos / restricciones más obvios .
Luego, puede ajustarlo en el camino dado que nunca puede adivinar todo al principio porque pueden aparecer / aparecerán más restricciones más adelante en el desarrollo, por varias razones.
De esa manera, sabrá a dónde va, pero aún puede adaptarse a los cambios.
fuente
1. La cantidad de preparación necesaria suele ser proporcional a la complejidad de lo que está haciendo. No tiene sentido escribir con lápiz y papel 2 días completos para un algoritmo que se usa una vez en un trimestre, funciona una hora en una sola máquina. Tiene sentido escribir con lápiz y papel tres semanas-hombre (si es necesario) para diseñar el nuevo módulo compensador de flujo de alto rendimiento que podrá procesar medio millón de solicitudes por hora y debe ejecutarse 24/7/365 sin tiempo de inactividad.
2. Puede ver si es un mal hábito en 30 segundos si observa qué soluciones está codificando. Usted preguntó si es un hábito bueno o malo. Bueno, eso depende de ti. Si es un principiante lento al comienzo de su carrera de programación, probablemente sea una buena idea escribir con lápiz y papel para detallar todo. Si tiene algunos años de experiencia, será suficiente con pensarlo durante 5 minutos y luego simplemente hacerlo. Por supuesto, aún con respecto a 1. anterior.
Línea de fondo
Solo su código dice la verdad si necesita más o menos lápiz y papel. No dejes que nadie más te dicte eso, pero descúbrelo por tu cuenta. Eso te mantiene aprendiendo.
Descargo de responsabilidad: Esto puede no ser lo que se llama pensamiento convencional y sentido común. Está bien. Simplemente establezca un marcador y léalo nuevamente en aproximadamente cinco años.
fuente