Ao pesquisar em torno de (livros, Wikipedia, perguntas semelhantes sobre SE, etc), eu entendi que a programação Imperative é um dos principais paradigmas de programação, onde você descreve uma série de comandos (ou instruções) para o computador executar (para você muita ordem para que ele tome ações específicas, daí o nome "imperativo"). Por enquanto, tudo bem.
A programação procedural, por outro lado, é um tipo (ou subconjunto) específico de programação Imperative, na qual você usa procedimentos (ou seja, funções) para descrever os comandos que o computador deve executar.
Primeira pergunta : Existe uma linguagem de programação imperativa que não é processual? Em outras palavras, você pode ter programação imperativa sem procedimentos?
Atualização : Esta primeira pergunta parece ter sido respondida. Uma linguagem pode ser imperativa sem ser processual ou estruturada. Um exemplo é a linguagem Assembly pura.
Então você também tem a programação estruturada, que parece ser outro tipo (ou subconjunto) de programação imperativa, que surgiu para remover a dependência da instrução GOTO.
Segunda pergunta : qual é a diferença entre programação processual e estruturada? Você pode ter um sem o outro e vice-versa? Podemos dizer que a programação procedural é um subconjunto da programação estruturada, como na imagem?