La programación procedimental es la programación en un lenguaje imperativo , en el que las declaraciones ejecutadas secuencialmente se pueden ensamblar en subprogramas , es decir, unidades integrales de código más grandes , utilizando los mecanismos del propio lenguaje [1] .
La programación procedimental es un reflejo de la arquitectura informática tradicional propuesta por Von Neumann en la década de 1940. La máquina de Turing sirve como modelo teórico para la programación procedimental . La ejecución del programa se reduce a la ejecución secuencial de operadores para convertir el estado inicial de memoria, es decir, los valores de los datos iniciales, en el estado final, es decir, los resultados. Así, desde el punto de vista del programador, hay un programa y una memoria, y el primero actualiza secuencialmente el contenido de la segunda.
Un lenguaje de programación procedimental permite al programador definir cada paso en el proceso de resolución de un problema. La peculiaridad de tales lenguajes de programación es que las tareas se dividen en pasos y se resuelven paso a paso. Usando un lenguaje procedimental, un programador define construcciones de lenguaje para realizar una secuencia de pasos algorítmicos. Un paso importante en el desarrollo de la programación procedimental fue la transición al paradigma estructural , que surgió debido al descubrimiento de la posibilidad de crear programas completos de Turing sin un operador de salto incondicional ( teorema de Boehm-Jacopini ).
La mayoría de los primeros lenguajes de programación imperativos, incluidos Fortran , Cobol , Algol , BASIC , C , PL/1 , Pascal , Forth , son procedimentales; Los lenguajes imperativos posteriores, en particular aquellos que implementan el paradigma de objetos ( Smalltalk , C ++ , Java ), por regla general, no se clasifican como de procedimiento, ya que el principio de organizar bloques de ejecución en subrutinas se implementa en ellos en un diferente nivel de abstracción. Se observa un cierto renacimiento del enfoque procedimental en una serie de lenguajes de secuencias de comandos ( Tcl , Perl , Lua , lenguajes de shell ), sin embargo, la mayoría de ellos son multiparadigma : también pueden crear programas en estilos no procedimentales. (orientado a objetos, funcional ).