Multilangage
Un programme multilangage (également écrit multi-langage) est un programme conçu pour fonctionner avec différents langages de programmation. L'usage de ce terme se retrouve dans deux cas :
- soit le code source du programme est conforme à la syntaxe de plusieurs langages de programmation ;
- soit le programme permet de travailler avec plusieurs langages différents.
Exécution multilangage
Un code source peut être écrit de sorte qu'il respecte la syntaxe de plusieurs langages de programmation. Il s'agit le plus souvent d'un défi ou amusement, au même titre que l'écriture d'un quine.
Un polyglot est un code source qui peut être interprété selon différents langages, et qui produit la même exécution avec chacun d'entre eux. Par exemple, le code source suivant peut être lu comme un programme en C, en PHP et en Bash :
#define a /* #<?php echo "\010Hello, world!\n";// 2> /dev/null > /dev/null \ ; // 2> /dev/null; x=a; $x=5; // 2> /dev/null \ ; if (($x)) // 2> /dev/null; then return 0; // 2> /dev/null; fi #define e ?> #define b */ #include <stdio.h> #define main() int main(void) #define printf printf( #define true ) #define function function main() { printf "Hello, world!\n"true/* 2> /dev/null | grep -v true*/; return 0; } #define c /* main #*/
Application multilangage
Certains logiciels permettent de travailler avec différents langages de programmation. C'est le cas des générateurs de documentation, de CPD (détecteur de copier-coller) ou même de compilateurs tels GCC ou LLVM car les optimisations lors de la phase de compilation sont indépendantes du langage d'origine. Certaines plates-formes peuvent également accueillir plusieurs langages, telles les machines virtuelles Java, .NET ou Parrot (les deux dernières ayant explicitement été prévues en ce sens).