Main Page | See live article | Alphabetical index

Polyglot (computing)

In the context of computing, a polyglot is a computer program or script written in a valid form of multiple programming languages, which performs the same operations or output independently of which of the chosen programming language in which it is compiled or interpreted. Intuition suggests that polyglot programs should be impossible or very difficult to write. Intuition, in this case, is wrong.

Generally polyglots are written in a combination of C (which allows redefinition of tokens and even operators with a preprocessor) and a scripting language such as Lisp, Perl or sh.

The two most commonly used techniques for constructing a polyglot program are to make liberal use of languages which use different characters for comments and to redefine various tokens as others in different languages. Often good use is made of quirks of syntax. These are demonstrated in this public domain polyglot written in ANSI C, PHP and GNU bash shell:

#define a /*
# /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 
#define main() int main()
#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
#*/

Note the following:

External links