Difference between the tags «imperative» and «procedural»

Looking at the documentation of language tags, I see both paradigm/imperative and paradigm/procedural listed. However, these seem practically synonymous to me. What are these tags intended to distinguish?

Helper questions:

  • What does «imperative» mean?
  • What does «procedural» mean?
  • What language, if any, should be tagged «imperative» but not «procedural»?
  • What language, if any, should be tagged «procedural» but not «imperative»?

Generally, from my understanding, “procedural” is a subset of “imperative” programming.

Where “procedural” means that you can write some repeated instructions in a “procedure” that can then be refered to where you had the individual steps before.

Even though most of us can’t think of a world without such a thing, though back when we used Commodore Basic, there have not been a thing like that, nor do we have in assembler.

For some languages you can write something close to that, but lets take Commode Basic 2.0, where you had a goto but no return. Also goto did only accept statically known line numbers, so it was impossible to simulate the return by using variables.

So Commodore Basic 2.0 would count as imperative, but not procedural.

1 Like