Un langage de programmation de cinquième génération, abrégé L5G, est un langage de programmation basé sur le concept de résolution de problèmes en utilisant des contraintes données au programme, plutôt que d'utiliser un algorithme écrit par un programmeur () ou une spécification formelle de représentation en tables et interrogations SQL (). La plupart des langages fonctionnant par contraintes ou par programmation logique ainsi que quelques langages déclaratifs sont des langages de cinquième génération. Les langages de programmation de quatrième génération (L4G) transforment, avec plus ou moins d'efficacité selon les fournisseurs, des requêtes SQL normalisées en algorithmes, contrairement à ceux de troisième génération où le programmeur codait dans le détail ses propres algorithmes. Ces L4G mettent l'accent sur l'usage d'une (ou plus) base de données relationnelle, souvent avec interface graphique.... Les langages de cinquième génération prennent le problème encore en amont : idéalement, que l'ordinateur puisse résoudre n'importe quel problème juste formulé par ses contraintes et son objectif. L'utilisateur - il ne s'agit déjà plus d'un programmeur - a juste besoin (idéalement toujours) de recenser ce qui doit être fait, et sous quelles contraintes, sans rentrer dans le détail, et doit obtenir une ou des solutions correspondantes. Les systèmes de cinquième génération utilisent une approche métier, et leurs internes sont programmés dans des langages comme Prolog, OPS5, Mercury, Haskell, etc. Un précurseur de ces langages et systèmes fonctionnels a été Lisp, et les postes de travail LISP. ICAD est un bon exemple. Puis, il y a beaucoup de Meta langages, comme KL-ONE. Le Japon a beaucoup investi (temps et capitaux) dans ces projets de cinquième génération (FGCS pour Fifth generation computer systems), le MITI affichant l'objectif de concevoir un énorme réseau informatique de machines utilisant ces outils. Les résultats ne furent pas à la hauteur des espérances, dériver un algorithme efficace à partir d'un ensemble de contraintes devenant difficile dès qu'on sort des cas très simples (Tours de Hanoï, par exemple).
Martin Odersky, Eugene Burmako
Martin Odersky, Nicolas Alexander Stucki