Un petit billet sur les langages de programmation spécialisés pour commencer l'année. Et tout d'abord un bref rappel:

"Un langage de programmation est dit Turing-complet s'il permet de représenter toutes les fonctions calculables au sens de Turing et Church (nonobstant la finitude de la mémoire des ordinateurs). La plupart des langages usuels de programmation (C, C++, Java, ...) sont Turing-complets. Le fait d'être Turing-complet est généralement requis pour un langage de programmation générique. En revanche, ce n'est pas le cas pour un langage dédié au traitement de problèmes spécifiques." (extrait de Wikipedia)

La dernière phrase ne doit pas être comprise de travers. On pense parfois qu'un langage très spécialisé, dédié au traitement de problèmes spécifiques comme le scripting, le développement Web, ou le traitement graphique, ne peut être considéré comme un véritable langage permettant d'exprimer n'importe quel problème basé sur un algorithme mécanique (moyennant la thèse de Church). Il n'en est rien. Les langages de programmation spécialisés ne sont pas tous des langages "au rabais". Certains d'entre eux qui semblent pourtant conçus pour des tâches extrêmement précises doivent pourtant être considérés comme de "vrais langages universels" car ils sont Turing-complet. Deux exemples: