Polyglot (プログラミング)

polyglotとは、複数のプログラミング言語として解釈可能なコンピュータープログラムまたはスクリプトであり、コンパイルまたは解釈に使用されるプログラミング言語とは関係なく、同じ操作または出力をするもののことである。
一般に、polyglotは、C(プリプロセッサを使用した字句トークンの再定義を可能にする)とLisp 、 Perl 、 shなどのスクリプト言語の組み合わせで作られる。
メソッド.
ポリグロットプログラムを構築するために最も一般的に使用される2つの手法は、コメントに異なる文字を使用する言語を組み合わせることと、さまざまなトークンを異なる言語の他のトークンとして再定義することである。多くの場合、構文の特徴がうまく利用することができる。以下、 ANSI C 、 PHP 、およびbashで記述されたポリグロットプログラムを示す。
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
function main() {
 printf "Hello, world!\n"true/* 2> 
 /dev/null | grep -v true*/;
 return 0;
main
あまり一般的ではない言語では簡単に作ることもできる。これは、 SNOBOL 4、 Win32Forth 、 PureBasicv 4.x、およびREBOLで同時に記述された小さなサンプルである。
 *BUFFER : A.A ; .( Hello, world !) @ To Including?
 Macro SkipThis; OUTPUT = Char(10) "Hello, World !"
 ;OneKeyInput Input('Char', 1, '[-f2-q1]') ; Char
 End; SNOBOL4 + PureBASIC + Win32Forth + REBOL = <3
 EndMacro: OpenConsole() : PrintN("Hello, world !")
 Repeat : Until Inkey() : Macro SomeDummyMacroHere
 REBOL [ Title: "'Hello, World !' in 4 languages"
 CopyLeft: "Developed in 2010 by Society" ] Print
 "Hello, world !" EndMacro: func [][] set-modes
 system/ports/input [binary: true] Input set-modes
 system/ports/input [binary: false] NOP:: EndMacro
 ; Wishing to refine it with new language ? Go on !