Los diagramas de flujo fundamentalmente solo modelan tres cosas: ejecución secuencial, condicionales y declaraciones GOTO. Si bien los dos primeros son críticos para que la gente los entienda, el último ni siquiera se agrega a los lenguajes de programación modernos y se considera deficiente en la mayoría de las aplicaciones. Entonces, aunque probablemente haya algunos problemas que estén bien modelados con diagramas de flujo, para la mayoría de los programas, usar diagramas de flujo es una excelente manera de producir un mal diseño.
Para aclarar esto, veamos algunos ejemplos. Considere el hecho de que los diagramas de flujo solo modelan bucles como la combinación de un condicional y un GOTO, de regreso a la parte superior del bucle. Esta es una forma razonable de modelar un ciclo while, además del hecho de que le permite saltar fuera del ciclo while para ir a cualquier fragmento de código aleatorio. Eso también lo convierte en una aproximación modesta de un estilo C para bucle. Sin embargo, no hace un buen trabajo al expresar bucles for-each o los bucles range-for agregados a C ++ 11. Estos bucles son intrínsecamente más seguros y se recomienda su uso en los lenguajes modernos, por lo que el diagrama de flujo enseña malas prácticas y le permite diseñar código con una estructura tan pobre que ni siquiera se permitiría en los lenguajes de programación modernos.
También existe el hecho de que los diagramas de flujo no son buenos para modelar funciones o llamadas a funciones. La descomposición de problemas a través de funciones / métodos es uno de los aspectos más fundamentales de la resolución de problemas en lenguajes modernos. Cualquier cosa que no pueda modelar tan bien está seriamente comprometida.
- ¿En qué lenguaje de programación están escritos los algoritmos de aprendizaje automático de Google: C ++ o Java? ¿Por qué?
- ¿Cómo se puede usar la IA para ayudar a los reclutadores en la toma de decisiones?
- En F (n) -F (n-1) = n ^ 8, ¿qué es F (n)?
- ¿Cuáles son algunos proyectos que podrían realizarse utilizando estructuras de datos?
- ¿Cómo explicarías un 'arreglo' a un principiante en programación?
Luego está el hecho de que incluso la programación estructurada ya no es la norma general. La orientación a objetos se hizo cargo en la década de 1990 y funcional está avanzando significativamente en la actualidad. Los diagramas de flujo no modelan objetos, y dado que no pueden modelar bien las funciones, ¿cómo los va a usar para describir funciones de orden superior?
La conclusión es que, en el mejor de los casos, son una herramienta anticuada con un uso mínimo en la programación moderna. Mucho más serio es el hecho de que, debido a cómo funcionan, en realidad fomentan las malas técnicas y la creación de código de espagueti.
Actualización: Basado en una discusión en los comentarios, estoy agregando el siguiente diagrama de flujo. Es un diagrama de flujo perfectamente feliz. Mi desafío para quienes gustan de los diagramas de flujo es convertirlo en código que no sea una mierda. El propósito de esto es mostrar que los diagramas de flujo conducen fácilmente a un código incorrecto, y eso los convierte en una herramienta deficiente.