{{Short description |Programming paradigm preceding structured programming}} {{More citations needed |date=April 2025}} {{Use Oxford spelling |date=April 2025}} {{Use dmy dates |date=April 2025}} '''Non-structured programming''' (a.k.a. unstructured programming) is the programming paradigm that describes the state-of-the-art of programming before the structured programming paradigm was envisioned and involves the use of the goto statement for control flow such as selection (i.e. {{code |if/then/else}}) and iteration (i.e. {{code |while}} and {{code |for}}).

In general, the use of goto, particularly for selection and iteration, is criticized for producing unreadable, spaghetti code in the 1968 open letter ''Go To Statement Considered Harmful'' by Dutch computer scientist Edsger W. Dijkstra,{{sfnp |Dijkstra |1968 |p= }} who coined the term ''structured programming''.{{fact |date=April 2025}}

Any programming language that provides goto can be used to write unstructured code. Notable languages that rely primarily if not exclusively on goto for control flow include JOSS, FOCAL, TELCOMP, any assembly language, batch file, and early versions of BASIC, Fortran, COBOL, and MUMPS.

==References== {{Reflist |20em}}

==Sources== {{Refbegin |30em |indent=yes}} *{{cite journal |last=Dijkstra |first=Edsger W. |author-link=Edsger Dijkstra |title=Letters to the editor: Go to statement considered harmful |date=March 1968 |doi=10.1145/362929.362947 |url=https://www.cs.utexas.edu/users/EWD/ewd02xx/EWD215.PDF |journal=Communications of the ACM |volume=11 |issue=3 |pages=147–148 |s2cid=17469809 |quote=The unbridled use of the go to statement has as an immediate consequence that it becomes terribly hard to find a meaningful set of coordinates in which to describe the process progress. ... The go to statement as it stands is just too primitive, it is too much an invitation to make a mess of one's program. }} {{Refend}}

== Further reading == {{Refbegin |30em |indent=yes}} *{{cite journal|last=Cobb|first=Gary W.|year=1978|title=A measurement of structure for unstructured programming languages|journal=ACM SIGSOFT Software Engineering Notes|volume=3|issue=5|pages=140–147|issn=0163-5948|doi=10.1145/953579.811114|doi-access=free}} {{Refend}}

==External links== * [http://code.google.com/p/bpstruct/ BPStruct] - A tool to structure concurrent systems (programs, process models)

{{Programming paradigms navbox}} {{Subject bar |auto=0 |b=Computer Programming/Control |portal1=Computer programming }}

Category:Programming paradigms