非構造化プログラミング
非構造化プログラミング(ひこうぞうかプログラミング)とは、いわゆる「構造化プログラミング」に対するレトロニムのようなものであり、「構造化された制御構造」ではないラベルと分岐命令を直接使うようなプログラミングパラダイムである。
非構造化プログラムは可読性が低くデバッグすることが難しい。そのため、何らかの構造をサポートするプログラミング言語では使われない手法である。しかし、条件文とgoto文の組合せによって任意のプログラム構造が実装可能であり、理論上はプログラミング言語にそれ以外の制御構造は必要ない。非構造化プログラミングはまだMS-DOSのバッチファイルのようなスクリプト言語やBASICやFORTRAN 66のような古いプログラミング言語で使われている。goto文(ジャンプ)は呼び出し手続きより僅かに性能が高いとはいうものの、現在のCPUアーキテクチャでは無視して良い程度になった。実際、不適切なそのような文の使用はコードを混乱させたりコンパイラ最適化を阻害してしまい、有害である場合がある。
アセンブリ言語はほとんどが非構造化言語である。なぜなら基本的な機械語には構造が決して無いからである。それが持つ唯一の構造は、基本的な(スタックベースのマシンによくある)「サブルーチンジャンプ; Jump to Subroutine」命令や、関数の始めと終わりを示すなどのコンパイラなどが必要とする記述だけである。