En contraposición a la
programación declarativa es un paradigma de programación que
describe la programación en términos del estado del programa y
sentencias que cambian dicho estado. Los programas imperativos son un
conjunto de instrucciones que le indican al computador cómo realizar
una tarea.
La implementación de hardware de la mayoría de computadores es
imperativa; prácticamente todo el hardware de los computadores está
diseñado para ejecutar código de máquina, que es nativo al
computador, escrito en una forma imperativa. Esto se debe a que el
hardware de los computadores implementa el paradigma de las Máquinas
de Turing. Desde esta perspectiva de bajo nivel, el estilo del
programa está definido por los contenidos de la memoria, y las
sentencias son instrucciones en el lenguaje de máquina nativo del
computador (por ejemplo el lenguaje ensamblador).
Los lenguajes imperativos de alto nivel usan variables y
sentencias más complejas, pero aún siguen el mismo paradigma. Las
recetas y las listas de revisión de procesos, a pesar de no ser
programas de computadora, son también conceptos familiares similares
en estilo a la programación imperativa; donde cada paso es una
instrucción.
- PROGRAMACIÓN LÓGICA:
Es un tipo de paradigmas de programación
dentro del paradigma de programación declarativa. El resto de los
subparadigmas de programación dentro de la programación declarativa
son: programación funcional, programación con restricciones,
programas DSL (de dominio específico) e híbridos. La programación
funcional se basa en el concepto de función (que no es más que una
evolución de los predicados), de corte más matemático. La
programación lógica gira en torno al concepto de predicado, o
relación entre elementos.
La programación lógica encuentra su hábitat natural en
aplicaciones de inteligencia artificial o relacionadas: Sistemas
expertos, donde un sistema de información imita las recomendaciones
de un experto sobre algún dominio de conocimiento.
- Demostración automática de teoremas, donde un programa genera nuevos teoremas sobre una teoría existente.
- Reconocimiento de lenguaje natural, donde un programa es capaz de comprender (con limitaciones) la información contenida en una expresión lingüística humana.
- Etc.
La programación lógica también se utiliza en aplicaciones más
"mundanas" pero de manera muy limitada, ya que la
programación tradicional es más adecuada a tareas de propósito
general.
- PROGRAMACIÓN FUNCIONAL:
Es un paradigma de programación
declarativa basado en la utilización de funciones aritméticas que
no maneja datos mutables o de estado. Enfatiza la aplicación de
funciones, en contraste con el estilo de programación imperativa,
que enfatiza los cambios de estado. La programación funcional tiene
sus raíces en el cálculo lambda, un sistema formal desarrollado en
los 1930s para investigar la definición de función, la aplicación
de las funciones y la recursión. Muchos lenguajes de programación
funcionales pueden ser vistos como elaboraciones del cálculo lambda.
En la práctica, la diferencia entre una función matemática y la
noción de una "función" utilizada en la programación
imperativa es que las funciones imperativas pueden tener efectos
secundarios, al cambiar el valor de cálculos realizados previamente.
Por esta razón carecen de transparencia referencial, es decir, la
misma expresión sintáctica puede resultar en valores diferentes en
diferentes momentos dependiendo del estado del programa siendo
ejecutado. Con código funcional, en contraste, el valor generado por
una función depende exclusivamente de los argumentos alimentados a
la función. Al eliminar los efectos secundarios se puede entender y
predecir el comportamiento de un programa mucho más fácilmente, y
esta es una de las principales motivaciones para utilizar la
programación funcional.
- PROGRAMACIÓN ORIENTADO A OBJETOS:
(OOP según sus siglas en
inglés). Es un paradigma de programación que usa los objetos en sus
interacciones, para diseñar aplicaciones y programas informáticos.
Está basado en varias técnicas, incluyendo herencia, cohesión,
abstracción, polimorfismo, acoplamiento y encapsulamiento. Su uso se
popularizó a principios de la década de los años 1990. En la
actualidad, existe una gran variedad de lenguajes de programación
que soportan la orientación a objetos.
Los objetos son entidades que tienen un determinado estado,
comportamiento (método) e identidad:- El estado está compuesto de datos o informaciones; serán uno o varios atributos a los que se habrán asignado unos valores concretos (datos).
- El comportamiento está definido por los métodos o mensajes a los que sabe responder dicho objeto, es decir, qué operaciones se pueden realizar con él.
- La identidad es una propiedad de un objeto que lo
diferencia del resto; dicho con otras palabras, es su identificador
(concepto análogo al de identificador de una variable o una
constante).