Se trate del de­sa­rro­llo de una apli­ca­ción, de la pro­gra­ma­ción de máquinas o del de­sa­rro­llo de un software de empresa, antes de escribir la primera línea de código, el de­sa­rro­lla­dor debe decidir qué lenguaje de pro­gra­ma­ción usar. La selección de los posibles lenguajes de pro­gra­ma­ción es muy amplia. Sin embargo, cada uno de ellos se puede cla­si­fi­car en uno de los dos pa­ra­di­g­mas de pro­gra­ma­ción: la pro­gra­ma­ción im­pe­ra­ti­va y la pro­gra­ma­ción de­cla­ra­ti­va. Los dos enfoques tienen sus ventajas y sus in­co­n­ve­nie­n­tes.

¿Por qué se ca­ra­c­te­ri­za el lenguaje de pro­gra­ma­ción im­pe­ra­ti­va? ¿Qué puntos débiles deben tener en cuenta los de­sa­rro­lla­do­res? En este artículo, re­s­po­n­de­re­mos a las dudas más im­po­r­ta­n­tes sobre el paradigma im­pe­ra­ti­vo.

¿Qué es la pro­gra­ma­ción im­pe­ra­ti­va?

La pro­gra­ma­ción im­pe­ra­ti­va (del latín imperare = ordenar) es el paradigma de pro­gra­ma­ción más antiguo. De acuerdo con este paradigma, un programa consiste en una secuencia cla­ra­me­n­te definida de in­s­tru­c­cio­nes para un ordenador.

El código fuente de los lenguajes im­pe­ra­ti­vos encadena in­s­tru­c­cio­nes una detrás de otra que de­te­r­mi­nan lo que debe hacer el ordenador en cada momento para alcanzar un resultado deseado. Los valores uti­li­za­dos en las variables se modifican durante la ejecución del programa. Para gestionar las in­s­tru­c­cio­nes, se integran es­tru­c­tu­ras de control como bucles o es­tru­c­tu­ras anidadas en el código.

Los lenguajes de pro­gra­ma­ción im­pe­ra­ti­va son muy concretos y trabajan cerca del sistema. De esta forma, el código es, por un lado, fá­ci­l­me­n­te co­m­pre­n­si­ble, pero, por el otro, requiere muchas líneas de texto fuente para describir lo que en los lenguajes de la pro­gra­ma­ción de­cla­ra­ti­va se consigue con solo una parte de las in­s­tru­c­cio­nes.

Los lenguajes de pro­gra­ma­ción im­pe­ra­ti­va más conocidos son:

  • Fortran
  • Java
  • Pascal
  • ALGOL
  • C
  • C#
  • C++
  • En­sa­m­bla­do­res
  • BASIC
  • COBOL
  • Python
  • Ruby

Los distintos lenguajes de pro­gra­ma­ción im­pe­ra­ti­va pueden cla­si­fi­car­se a su vez en tres estilos distintos de pro­gra­ma­ción su­bo­r­di­na­dos: el es­tru­c­tu­ra­do, el pro­ce­di­me­n­tal y el modular.

El estilo es­tru­c­tu­ra­do de pro­gra­ma­ción amplía el principio im­pe­ra­ti­vo central con las es­tru­c­tu­ras concretas de control: se­cue­n­cias, selección e iteración. Esto se hace para mitigar o evitar por completo las in­s­tru­c­cio­nes de salto que añaden una co­m­ple­ji­dad in­ne­ce­sa­ria al código im­pe­ra­ti­vo.

El enfoque pro­ce­di­me­n­tal divide las tareas de las que se debe ocupar un programa en tareas parciales más pequeñas que se describen en el código por separado. De esta forma, se crean pri­n­ci­pios básicos de pro­gra­ma­ción que también se pueden re­uti­li­zar en otros programas.

Un paso más allá, en el modelo de pro­gra­ma­ción modular, cada uno de los co­m­po­ne­n­tes de programa se diseñan, de­sa­rro­llan y prueban con total in­de­pe­n­de­n­cia los unos de los otros. No es hasta el final del proceso cuando los módulos se combinan para conformar el software real.

Pro­gra­ma­ción im­pe­ra­ti­va y de­cla­ra­ti­va

Los lenguajes de pro­gra­ma­ción im­pe­ra­ti­va se di­s­ti­n­guen de los lenguajes de­cla­ra­ti­vos en un aspecto básico: la pro­gra­ma­ción im­pe­ra­ti­va se centra en el “cómo”, y la de­cla­ra­ti­va, en el “qué”.

¿Qué queremos decir con esto? Los lenguajes de pro­gra­ma­ción im­pe­ra­ti­va son como unas in­s­tru­c­cio­nes paso a paso (cómo) re­da­c­ta­das para el ordenador. Describen de forma explícita qué pasos deben llevarse a cabo y en qué secuencia para alcanzar fi­na­l­me­n­te la solución deseada. En la pro­gra­ma­ción de­cla­ra­ti­va, en cambio, se describe di­re­c­ta­me­n­te el resultado final deseado (el qué). Pongamos un ejemplo culinario para en­te­n­de­r­lo mejor: los lenguajes im­pe­ra­ti­vos pro­po­r­cio­nan la receta, mientras que los de­cla­ra­ti­vos, fotos del plato preparado.

En los lenguajes de­cla­ra­ti­vos, el código fuente permanece muy abstracto en relación al pro­ce­di­mie­n­to concreto. Para llegar a la solución, se utiliza un algoritmo que encuentra y utiliza au­to­má­ti­ca­me­n­te los métodos adecuados. Este pro­ce­di­mie­n­to tiene numerosas ventajas: de esta forma, los programas no solo se pueden escribir co­n­si­de­ra­ble­me­n­te más rápido, sino que las apli­ca­cio­nes se pueden optimizar también de forma muy sencilla, ya que, si en el futuro se de­sa­rro­lla un nuevo método, el algoritmo puede acceder fá­ci­l­me­n­te al método nuevo gracias a la apli­ca­ción abstracta del código fuente.

Ejemplo de pro­gra­ma­ción im­pe­ra­ti­va

Los lenguajes de pro­gra­ma­ción im­pe­ra­ti­va se di­s­ti­n­guen por su carácter in­s­tru­c­ti­vo y para ello no­r­ma­l­me­n­te requieren co­n­si­de­ra­ble­me­n­te más líneas de código para expresar lo que en el estilo de­cla­ra­ti­vo se puede describir con menos in­s­tru­c­cio­nes. En el siguiente ejemplo, se debe pro­po­r­cio­nar una lista con nombres:

Pro­gra­ma­ción im­pe­ra­ti­va (PHP):

$listaParticipantes = [1 => 'Peter', 2 => 'Hans', 3 => 'Sarah'];
$nombres = [];
foreach ($listaParticipantes as $id => $name) {
    $nombres[] = $name;
}

Pro­gra­ma­ción de­cla­ra­ti­va (PHP)

$nombres = array_values($listaParticipantes);

Ventajas e in­co­n­ve­nie­n­tes de los lenguajes de pro­gra­ma­ción im­pe­ra­ti­va

Hoy en día se utilizan muchos lenguajes de pro­gra­ma­ción que se basan en el paradigma de pro­gra­ma­ción im­pe­ra­ti­va.

Por un lado, esto se debe a que este enfoque es la forma ori­gi­na­ria de la pro­gra­ma­ción. Por otro lado, el paradigma im­pe­ra­ti­vo, a pesar de los modelos al­te­r­na­ti­vos, todavía cuenta con ventajas prácticas.

Estos lenguajes son co­m­pa­ra­ti­va­me­n­te más fáciles de aprender, ya que el código se lee como unas in­s­tru­c­cio­nes paso a paso. Por esta razón, no­r­ma­l­me­n­te los pro­gra­ma­do­res empiezan su formación con el apre­n­di­za­je de un lenguaje im­pe­ra­ti­vo.

La buena le­gi­bi­li­dad es un factor decisivo en el día a día laboral . Al fin y al cabo, el ma­n­te­ni­mie­n­to y la op­ti­mi­za­ción de las apli­ca­cio­nes no tienen por qué depender ex­clu­si­va­me­n­te de una persona, sino que los puede llevar a cabo cualquier empleado, sin necesidad de que este haya escrito el código desde cero.

De­s­ve­n­ta­ja de la pro­gra­ma­ción pro­ce­di­me­n­tal: si se deben so­lu­cio­nar problemas más complejos, el código se extiende en poco tiempo. Si bien sigue siendo fácil de leer, se reduce la claridad.

Dado que, a di­fe­re­n­cia de como ocurre en el estilo de­cla­ra­ti­vo, la ejecución aquí no está cla­ra­me­n­te separada de la pro­gra­ma­ción, se pueden producir efectos co­la­te­ra­les o errores no deseados si se hacen cambios a po­s­te­rio­ri. Asimismo, también es más difícil im­ple­me­n­tar ex­te­n­sio­nes, a di­fe­re­n­cia de como ocurre en el paradigma de­cla­ra­ti­vo, en el que se pueden añadir de forma di­fe­re­n­cia­da mediante métodos.

Ventajas De­s­ve­n­ta­jas
Fá­ci­l­me­n­te legible. El código se convierte rá­pi­da­me­n­te en demasiado amplio y difícil de abarcar.
Fácil de aprender en lo relativo a co­m­po­r­ta­mie­n­tos. Mayor riesgo durante la edición.
Un modelo fá­ci­l­me­n­te co­m­pre­n­si­ble para los pri­n­ci­pia­n­tes (vía de solución). El ma­n­te­ni­mie­n­to bloquea el de­sa­rro­llo de la apli­ca­ción, ya que la pro­gra­ma­ción funciona es­tre­cha­me­n­te con el sistema.
Se pueden tener en cuenta ca­ra­c­te­rí­s­ti­cas de casos es­pe­cia­les de la apli­ca­ción. La op­ti­mi­za­ción y la am­plia­ción son más difíciles.

En la práctica, hoy en día se utilizan pri­n­ci­pa­l­me­n­te formas mixtas de pa­ra­di­g­mas, ya que los estilos de pro­gra­ma­ción im­pe­ra­ti­va y de­cla­ra­ti­va conllevan ventajas y de­s­ve­n­ta­jas. No obstante, el estilo de pro­gra­ma­ción de­cla­ra­ti­va, co­m­ple­me­n­ta­do con métodos im­pe­ra­ti­vos, se utiliza cada vez más.

Ir al menú principal