lunes, 01 de mayo de 2006
La programación imperativa, 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; cada paso es una instrucción, y el mundo físico guarda el estado (Zoom). Puesto que las ideas de la programación imperativa son tanto conceptualmete familiares (?) y directamente embebidas o incrustadas en el hardware, la mayoría de los lenguajes de computadores son de un estilo imperativo.
La mayoría de los lenguajes de alto nivel incorporan cuatro tipos básicos de sentencias: asignaciones, ciclos, ramificaciones condicionales, y ramificaciones incondicionales (para estos últimos véase control de flujo). Las sentencias de asignación, en general, realizan una operación sobre la información localizada en la memoria y almacenan los resultados para uso posterior. Los lenguajes imperativos de alto nivel, adicionalmente, permiten la evaluación de expresiones complejas, que pueden consistir de operaciones aritméticas y evaluaciones de funciones y la asignación del valor resultante a la memoria. Las sentencias de ciclos permite a una secuencia de instrucciones ser ejecutada múltiples veces. Lo ciclos pueden tanto ejecutar las sentencias que ellos tienen un número predefinido de veces, como ejecutarlas repetidamente hasta que alguna condición cambie. Las sentecias de ramificación condicional permiten a un bloque de instrucciones o sentencias ser ejecutado sólo si alguna condición se cumple. De lo contrario, las sentencias son saltadas y la secuencia de ejecución continua al siguiente bloque de instruccione. Las ramificaciones incondicionales permiten a la ejecución de una sencuencia ser transferida a alguna otra parte del programa. Estas incluyen el salto llamado "goto" en muchos lenguajes y la llamada de un subprograma o procedimiento.
Los primeros lenguajes imperativos fueron los lenguajes de máquina de los computadores originales. En estos lenguajes, las instrucciones fueron muy simples, lo cual hizo la implementación de hardware fácil, pero obstruyendo la creación de programas complejos. Fortran, cuyo desarrollo fue iniciado en 1954 por John Backus en IBM, fue el primer gran lenguaje de programación en superar los obstáculos presentados por el código de máquina en la creación de programas complejos.
Algunos lenguajes imperativos
BASIC
C
C++
Java
C#