Un lenguaje de programación de quinta generación ( 5GL ) es un lenguaje de programación de alto nivel basado en la resolución de problemas utilizando restricciones dadas al programa, en lugar de utilizar un algoritmo escrito por un programador. [1] La mayoría de los lenguajes de programación lógicos y basados en restricciones y algunos otros lenguajes declarativos son lenguajes de quinta generación.
Mientras que los lenguajes de programación de cuarta generación están diseñados para construir programas específicos, los lenguajes de quinta generación están diseñados para hacer que la computadora resuelva un problema determinado sin el programador. De esta manera, el usuario solo necesita preocuparse por qué problemas deben resolverse y qué condiciones deben cumplirse, sin preocuparse por cómo implementar una rutina o algoritmo para resolverlos. Los lenguajes de quinta generación se utilizan principalmente en la investigación de inteligencia artificial . OPS5 y Mercury son ejemplos de lenguajes de quinta generación, [2] al igual que ICAD , que se construyó sobre Lisp . KL-ONE es un ejemplo de una idea relacionada, un lenguaje de marco .
En la década de 1980, se consideró que los lenguajes de quinta generación serían el camino del futuro, y algunos predijeron que reemplazarían la programación procedimental con una programación basada en restricciones para todas las tareas que pudieran enmarcarse como una serie de restricciones lógicas. [3] En particular, entre 1982 y 1993, Japón [4] [5] invirtió mucha investigación y dinero en su proyecto de sistemas informáticos de quinta generación , con la esperanza de diseñar una red informática masiva de máquinas que utilizaran estas herramientas.
Sin embargo, a medida que se fueron creando programas más grandes, las fallas de este enfoque se hicieron más evidentes. Resulta que, dado un conjunto de restricciones que definen un problema particular, derivar un algoritmo eficiente para resolverlo es un problema muy difícil en sí mismo. Este paso crucial aún no se puede automatizar y aún requiere la perspicacia de un programador humano.
Se sabe que en ocasiones los proveedores han publicitado sus lenguajes como 5GL. La mayoría de las veces, en realidad, venden 4GL con un mayor nivel de automatización y base de conocimientos . Debido a que el entusiasmo de los años 80 se desvaneció y los proyectos finalmente se abandonaron, la conciencia de 5GL también ha disminuido; esto ha abierto las puertas a los proveedores para reutilizar el término en la comercialización de sus nuevas herramientas, sin causar mucha controversia entre las generaciones actuales de programadores. [6]