Revisando los tipos de lenguajes de programación existentes, llego a esta clasificación de los mismos:

  • Lenguajes imperativos
    • Lenguajes Spaguetti
    • Lenguajes Estructurados
    • Lenguajes Modulares
    • Lenguajes Orientados a Objetos
  • Lenguajes lógicos
    • Lenguajes declarativos
    • Lenguajes funcionales

Todos estos lenguajes de programación obedecen a una necesidad y/o ideología subyacente, que motivó el desarrollo del lenguaje con la metodología y sintaxis específica. A continuación describiré algo más en detalle cada uno de los anteriores.

Lenguajes Spaguetti

Fueron los primeros lenguajes de programación. El lenguaje máquina y posterior ensamblador, se basaba en la programación de instrucciones, una a una y comandos de salto ante ciertos estados del procesador. Con ello se conseguía un código entrelazado en saltos de línea a línea y parte a parte, consiguiendo un spaguetti bien entrelazado en proyectos grandes.

Lenguajes como Basic, posteriormente, siguieron esta forma de programación.

Lenguajes Estructurados

Los lenguajes estructurados que surgieron después (Fortran, C, Pascal, ...) se basan en la estructuración del código en forma de procedimientos, funciones o subrutinas. Cada programa está formado por un conjunto de estas estructuras que son llamadas entre sí, tienen un nombre diferenciado y una funcionalidad bien conocida que se basa en los parámetros de entrada, pudiendo retornar valores en su retorno.

Lenguajes Modulares

Es un nivel más en los lenguajes estructurados. Se basa en la agrupación de los procedimientos, funciones y/o subrutinas en bloques, paquetes o módulos, de modo que queden bien organizados. Lenguajes como Java, Perl, Ruby o Modula-2, hacen uso de esta metodología.

Lenguajes Orientados a Objetos

El enfoque de este paradigma se basa en darle más importancia a los datos que a las acciones en sí. Es decir, en los modelos anteriores, la separación se hacía por unidades funcionales (verbos). La programación orientada a objetos se realiza mediante la organización del código mediante el conjunto de datos con sus funciones afines (objetos = datos + funciones).

Lenguajes que hacen uso de esta metodología son: Smalltalk, Ruby, C++, Java y Python, entre otros.

Lenguajes Declarativos

Los lenguajes declarativos se basan en una especificación lógica de lo que la máquina debe de hacer. Pero sin entrar en detalle en el cómo debe de hacerlo. Es un lenguaje más cercano al lenguaje natural que al lenguaje máquina, que se basa en la entrada de predicados para, a través de inferencia, llegar a un resultado.

Lenguajes que se basan en este paradigma son Lisp, Scheme, Clips y Prolog, entre otros.

Lenguajes Funcionales

Los lenguajes funcionales son como los declarativos, pero en lugar de predicados, trabajan con funciones matemáticas, es decir, carecen de máquina de inferencia y la definición de programas se basa en la especificación matemática del programa que se quiere conseguir.

Lenguajes que se basan en este paradigma son Haskell y Erlang, principalmente.

Otros paradigmas compartidos

Las necesidades de los desarrolladores cambia según el sector en que se trabaje, la época, la empresa... cualquier factor puede influir para tomar como determinación el uso de una tecnología y/o metodología específica y, dentro de la elección tomada, puede permutarse incluso hasta llegara a alcanzar un nuevo paradigma.

Estos paradigmas, se incluyen dentro de lenguajes ya creados y solo requieren de un uso específico de un tipo de lenguajes para conseguir el propósito deseado.

Los paradigmas que obedecen a esta forma son:

  • Programación Orientada a Eventos
  • Programación Orientada a Aspectos
  • Programación Concurrente

Estos paradigmas pueden ser integrados en cualquiera (o la mayoría) de los lenguajes citados anteriormente. Dejo pendiente el comentar estos paradigmas de programación.