Siga esto para escribir cualquier tipo de algoritmo complejo. Siempre trato de hacer esto.
- Tenga una arquitectura de lo que desea codificar. Al menos, un diagrama de bloques del sistema que represente lo que su algoritmo / lógica / diseño va a hacer.
- Rompe cada lógica por separado e intenta descubrir dependencias. Hazlo muy pequeño. Ejemplo, una lógica de comparación, suma, multiplicación, revertir los datos, concatenación.
- Conecte esos pequeños bloques lógicos entre sí, reagrupe sus bloques. Escriba un código de prueba para verificar los casos fallidos.
- Tener una función separada para cada una de las operaciones (suma, comparación, concatenación). Tenga un archivo de código separado para cada bloque de arquitectura y finalmente tenga un solo archivo para integrarlo todo.
¡Felicidades! Has codificado la lógica más compleja que pensabas.
¿Por qué una arquitectura? La respuesta es bastante simple. Los diagramas son la forma más fácil de recordar cualquier lógica. ¿Recuerdas la característica de cada pin de cualquier microcontrolador? No. Pero, recuerda que hubo un controlador de interrupción, ALU, registros. Así es como funciona tu cerebro de manera eficiente.
- ¿Podemos crear una matriz sin especificar un tamaño?
- Cómo encontrar el enésimo número de Ulam rápidamente
- ¿El problema de las reinas N tiene al menos una solución por cada N> 3?
- ¿Por qué usamos el árbol de búsqueda binario?
- ¿Cómo se puede ser bueno para resolver problemas de algoritmos / programación? Soy un principiante, y me sugirieron que leyera el libro CLRS para aprender sobre algoritmos.
Todos los grandes sistemas (procesadores, FPGA, softwares, firmwares) están diseñados de esta manera.
¿Alguna vez te has preguntado cómo se conectan los comandos en tus scripts? Mismo camino. Una máquina de estados es una característica importante en una arquitectura. Si es un ingeniero integrado, intente buscar la máquina de estado en un sistema integrado. Si eres ingeniero de diseño de RTL, ya lo sabes. Cuando fue de esta manera, ¿dónde consideró sus declaraciones if else? No donde. Acabas de escribir códigos simples.
Soy ingeniero de diseño de RTL, pero el enfoque de codificación es el mismo en todo tipo de plataforma. Esta es la forma más eficiente de diseñar cualquier sistema. En cualquier codificación, la cosa más pequeña que puede hacer un código es el cálculo matemático (agregar sustrato, concatenación, multiplicación). Ya lo estas haciendo! Entonces, estás usando la forma más eficiente de codificación.
Referencias
1. Organización y diseño de computadoras: la interfaz de hardware y software 5ta edición → Lea el Capítulo 1.
2. UNIX por Sumitabha Das → Lea el Capítulo 2.
Gracias por los votos a favor.