La programación no estructurada es el paradigma de programación históricamente más antiguo capaz de crear algoritmos Turing-completos [ cita requerida ] . A menudo se contrasta con el paradigma de programación estructurada , en particular con el uso de flujo de control no estructurado mediante sentencias goto o equivalentes. La distinción se destacó particularmente con la publicación de la influyente carta abierta " Go To Statement Considered Harmful " en 1968 por el informático holandés Edsger W. Dijkstra , quien acuñó el término "programación estructurada". [1]
La programación no estructurada ha sido duramente criticada por producir código difícilmente legible ("espagueti") .
Existen lenguajes de programación de alto y bajo nivel que utilizan programación no estructurada. Algunos lenguajes que se citan comúnmente como no estructurados incluyen JOSS , FOCAL , TELCOMP , lenguajes ensambladores , archivos por lotes de MS-DOS y versiones anteriores de BASIC , Fortran , COBOL y MUMPS .
Un programa en un lenguaje no estructurado utiliza saltos no estructurados a etiquetas o direcciones de instrucciones. Las líneas suelen estar numeradas o pueden tener etiquetas: esto permite que el flujo de ejecución salte a cualquier línea del programa. Esto contrasta con la programación estructurada , que utiliza construcciones secuenciales de instrucciones, selección (if/then/else) y repetición (while y for).