Al investigar (libros, Wikipedia, preguntas similares sobre SE, etc.) llegué a comprender que la programación imperativa es uno de los principales paradigmas de programación, donde se describe una serie de comandos (o declaraciones) para que la computadora los ejecute (así que mucho ordene que tome acciones específicas, de ahí el nombre "imperativo"). Hasta aquí todo bien.
La programación de procedimientos, por otro lado, es un tipo específico (o subconjunto) de programación imperativa, donde se utilizan procedimientos (es decir, funciones) para describir los comandos que debe realizar la computadora.
Primera pregunta : ¿Existe un lenguaje de programación imperativo que no sea de procedimiento? En otras palabras, ¿puedes tener una programación imperativa sin procedimientos?
Actualización : esta primera pregunta parece ser respondida. Un lenguaje PUEDE ser imperativo sin ser procesal o estructurado. Un ejemplo es el lenguaje ensamblador puro.
Luego también tiene la programación estructurada, que parece ser otro tipo (o subconjunto) de programación imperativa, que surgió para eliminar la dependencia de la declaración GOTO.
Segunda pregunta : ¿Cuál es la diferencia entre la programación procesal y la estructurada? ¿Puedes tener uno sin el otro y viceversa? ¿Podemos decir que la programación procesal es un subconjunto de la programación estructurada, como en la imagen?