📜 ⬆️ ⬇️

Polyglot

There are polyglot people who differ in that they know several languages. But there are polyglot programs whose source code is interpreted or compiled independently of the language.

The beauty of polyglot is that the same source code can be saved as a sishny file, compiled and rejoiced at the result of the work. And you can run the same file as a bash script and see the exact same result!

An example of such a program:
#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() #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 #*/ * This source code was highlighted with Source Code Highlighter .
  1. #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() #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 #*/ * This source code was highlighted with Source Code Highlighter .
  2. #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() #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 #*/ * This source code was highlighted with Source Code Highlighter .
  3. #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() #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 #*/ * This source code was highlighted with Source Code Highlighter .
  4. #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() #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 #*/ * This source code was highlighted with Source Code Highlighter .
  5. #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() #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 #*/ * This source code was highlighted with Source Code Highlighter .
  6. #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() #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 #*/ * This source code was highlighted with Source Code Highlighter .
  7. #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() #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 #*/ * This source code was highlighted with Source Code Highlighter .
  8. #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() #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 #*/ * This source code was highlighted with Source Code Highlighter .
  9. #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() #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 #*/ * This source code was highlighted with Source Code Highlighter .
  10. #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() #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 #*/ * This source code was highlighted with Source Code Highlighter .
  11. #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() #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 #*/ * This source code was highlighted with Source Code Highlighter .
  12. #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() #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 #*/ * This source code was highlighted with Source Code Highlighter .
  13. #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() #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 #*/ * This source code was highlighted with Source Code Highlighter .
  14. #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() #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 #*/ * This source code was highlighted with Source Code Highlighter .
  15. #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() #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 #*/ * This source code was highlighted with Source Code Highlighter .
  16. #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() #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 #*/ * This source code was highlighted with Source Code Highlighter .
  17. #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() #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 #*/ * This source code was highlighted with Source Code Highlighter .
  18. #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() #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 #*/ * This source code was highlighted with Source Code Highlighter .
  19. #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() #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 #*/ * This source code was highlighted with Source Code Highlighter .
  20. #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() #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 #*/ * This source code was highlighted with Source Code Highlighter .
  21. #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() #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 #*/ * This source code was highlighted with Source Code Highlighter .
  22. #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() #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 #*/ * This source code was highlighted with Source Code Highlighter .
  23. #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() #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 #*/ * This source code was highlighted with Source Code Highlighter .
  24. #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() #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 #*/ * This source code was highlighted with Source Code Highlighter .
#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() #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 #*/ * This source code was highlighted with Source Code Highlighter .

Works in ANSI C, PHP and bash. In more detail:


For writing polyglots, C is commonly used. it has a powerful preprocessor and one of the scripting languages, for example Perl, PHP, sh or Lisp.
')
For example:
  1. #include <stdio.h>
  2. #define do main ()
  3. do {
  4. printf ( "Hello World! \ n" );
  5. }
* This source code was highlighted with Source Code Highlighter .
Simple Hello-World for C and Perl.

But 2 languages ​​is quite primitive, I suggest you look at the polyglot in 15 (!!!) languages:
  1. # / * [<! - * / include <stdio.h> / * \
  2. # {\
  3. `" "" "true \\ # {" \ n # "}; \
  4. \
  5. if [-n "$ ZSH_VERSION"]; then \
  6. \
  7. echo exec echo I \ 'ma zsh script .; \
  8. \
  9. elif [-n "$ BASH_VERSION"]; then \
  10. \
  11. echo exec echo I \ 'ma bash script .; \
  12. else \
  13. echo exec echo I \ 'm a sh script .; \
  14. fi`; # \
  15. BEGIN {print "I'm a", 0? "Ruby": "Perl", "program. \ N"; exit; }
  16. # \
  17. % q ~
  18.   
  19. set dummy = 0; puts [list "I'm" "a" "tcl" "script."]; exit
  20.   
  21. all:; @echo "I'm a Makefile." \
  22. # * /
  23. / *: * / enum {a, b}; \
  24. \
  25. static int c99 ( void ) {
  26. #ifndef __cplusplus / * bah * /
  27. unused1: if (( enum {b, a}) 0) \
  28. ( void ) 0;
  29. #endif
  30. unused2: return a; \
  31. } \
  32. static int trigraphs ( void ) {\
  33. \
  34. return sizeof "??!" == 2; \
  35. } \
  36. char X; \
  37. \
  38. int main ( void ) {\
  39. \
  40. struct X {\
  41. \
  42. char a [2]; \
  43. }; \
  44. if ( sizeof (X)! = 1) {\
  45. \
  46. printf ( "I'm a C ++ program (trigraphs% sabled). \ n" , \
  47. \
  48. trigraphs ()? "en" : "dis" ); \
  49. \
  50. } else if (1 // ** / 2
  51. ) unused3: {; \
  52. printf ( "I'm a C program (C% s, trigraphs% sabled). \ n" , \
  53. c99 ()? "89 with // comments" : "99" , \
  54. trigraphs ()? "en" : "dis" ); \
  55. } else {\
  56. printf ( "I'm a C program (C89, trigraphs% sabled). \ n" , \
  57. trigraphs ()? "en" : "dis" ); \
  58. } \
  59. return 0; \
  60. } / *
  61. # \
  62. > main :: IO () - - \
  63. > main = putStr "I'm a Literate Haskell program. \ n"
  64. # \
  65. ]> ++++++++ [<+++++++++> -] <+. >> ++++ [<+++++++++> -] <- . [-]> ++++++++++ \
  66. [<+++++++++++> -] <-. >> ++++ [<++++++++> -] <. +++++++++ ++ [<++++++++++> \
  67. -] <- - -. <.> + .- >> ++++++++++ [<++++++++++> -] <++++. <.> >> ++++++++++ [\
  68. <++++++++++> -] <+++++. <<<< + .- >>>> - - -. <+++ .- - - <++ .- - >>>>> +++++ \
  69. +++++ [<+++++++++++> -] <- - -. <<<<<. <+++. >>>. <<< -.- >> >> +. <. <. <<.> \
  70. ++++++++++++++. [-] +++++++++++ "" "`
  71. # \
  72. print "I'm a Python program."; "" "[-] [-> <html> <head>
  73. <! -: -> <title> I'm a HTML page </ title> </ head> <body>
  74. <! -: -> <h1> I'm a <marquee> <blink> horrible HTML </ blink> </ marquee> page </ h1>
  75. <! -: -> <script language = "JavaScript">
  76. <! -: # \
  77. setTimeout (// \
  78. function () {// \
  79. document.body.innerHTML = "<h1> I'm a javascript-generated HTML page </ h1>"; // \
  80. }, 10,000); // \
  81. // ->
  82. </ script> <! -: \
  83. </ body> </ html> <! -} # \
  84. say "I'm a Perl6 program", try {"($? PUGS_VERSION)"} // "", "."; # "" "# * /
  85. #define FOO] -> ~
* This source code was highlighted with Source Code Highlighter .

Works in C (x2), C ++, Haskell, Ruby, Python, Perl (x2), HTML , tcl, bash, zsh, make, bash and brainfuck (thanks to maxshopen for the hint :)).

Well, at the end of a few links to a little less monstrous structures:
8 languages: COBOL, Pascal, Fortran, C, PostScript, Unix shell, asm x86 and Perl 5
6 languages: Perl, C, Unix shell, Brainfuck, Whitespace and Befunge
A list of polyglots written by enthusiasts

Source: https://habr.com/ru/post/62058/


All Articles