Penguin
Annotated edit history of PolyGlot version 12, including all changes. View license author blame.
Rev Author # Line
12 StuartYeates 1 !!! PolyGlot
2
3 Originally an adjective meaning an individual spoke many languages. More recent an adjective meaning that a file of SourceCode was valid in many [ProgrammingLanguage]s
4
5 ----
9 JohnMcPherson 6 !!! PolyGlot #1
2 CraigBox 7
10 AristotlePagaltzis 8 The [original polyglot | http://ideology.com.au/polyglot/] is valid code in 8 languages.
5 CraigBox 9
9 JohnMcPherson 10 <verbatim>
10 AristotlePagaltzis 11 (*O/*_/
9 JohnMcPherson 12 Cu #%* )pop mark/CuG 4 def/# 2 def%%%%@@P[TX---P\P_SXPY!Ex(mx2ex("SX!Ex4P)Ex=
13 CuG #%* *+Ex=
14 CuG #%*------------------------------------------------------------------*+Ex=
10 AristotlePagaltzis 15 CuG #%* POLYGLOT - a program in eight languages 15 February 1991 *+Ex=
16 CuG #%* 10th Anniversary Edition 1 December 2001 *+Ex=
9 JohnMcPherson 17 CuG #%* *+Ex=
18 CuG #%* Written by Kevin Bungard, Peter Lisle, and Chris Tham *+Ex=
19 CuG #%* *+Ex=
10 AristotlePagaltzis 20 CuG #%* Polyglot suports the following languages: *+Ex=
21 CuG #%* 1. COBOL (ANSI) *+Ex=
22 CuG #%* 2. Pascal (ISO) *+Ex=
23 CuG #%* 3. Fortran (ANSI, f77) *+Ex=
24 CuG #%* 4. C (ANSI-ish) *+Ex=
25 CuG #%* 5. PostScript *+Ex=
26 CuG #%* 6. Linux/Unix shell script (bash, sh, csh) *+Ex=
27 CuG #%* 7. x86 machine language (MS-DOS, Win32, Linux) *+Ex=
28 CuG #%* 8. Perl (version 5) *+Ex=
9 JohnMcPherson 29 CuG #%* *+Ex=
30 CuG #%* Usage: *+Ex=
10 AristotlePagaltzis 31 CuG #%* 1. Rename this file to polyglot.[cob|pas|f77|c|ps|sh|com|pl] *+Ex=
32 CuG #%* *+Ex=
33 CuG #%* 2. Compile and run with your favorite compiler and operating *+Ex=
34 CuG #%* system. *+Ex=
9 JohnMcPherson 35 CuG #%* *+Ex=
36 CuG #%* Notes: *+Ex=
37 CuG #%* 1. We have attempted to use only standard language features. *+Ex=
38 CuG #%* *+Ex=
10 AristotlePagaltzis 39 CuG #%* 2. Without the -traditional flag gcc will issue a warning. *+Ex=
9 JohnMcPherson 40 CuG #%* *+Ex=
10 AristotlePagaltzis 41 CuG #%* 3. When transferring from Unix to DOS make sure that a LF *+Ex=
9 JohnMcPherson 42 CuG #%* is correctly translated into a CR/LF. *+Ex=
10 AristotlePagaltzis 43 CuG #%* *+Ex=
44 CuG #%* 4. Keep the black lines at the start of the program. They *+Ex=
45 CuG #%* are important. *+Ex=
46 CuG #%* *+Ex=
47 CuG #%* 5. This text is a comment block in all eight languages. *+Ex=
9 JohnMcPherson 48 CuG #%* *+Ex=
49 CuG #%* Please mail any comments, corrections or additions to *+Ex=
10 AristotlePagaltzis 50 CuG #%* polyglot@ideology.com.au *+Ex=
9 JohnMcPherson 51 CuG #%* *+Ex=
52 CuG #%*------------------------------------------------------------------*QuZ=
53 CuG #%* *+Ex=
10 AristotlePagaltzis 54 CuG #%*!Mx)ExQX5ZZ5SSP5n*5X!)Ex+ExPQXH,B+ExP[-9A-9B(g?(gA'UTTER_XYZZXX!X *+
9 JohnMcPherson 55 CuG #(* *(
56 C # */); /*(
57 C # *) program polyglot (output); (*+
58 C # identification division.
59 C # program-id. polyglot.
60 C #
61 C # data division.
62 C # procedure division.
63 C #
64 C # * ))cleartomark /Bookman-Demi findfont 36 scalefont setfont (
65 C # * (
66 C #
67 C # * hello polyglots$
68 C # main.
69 C # perform
10 AristotlePagaltzis 70 C /# * ) 2>_$$; echo "hello polyglots"; rm _$$; exit;
71 C # * (
72 C #
73 C *0 ) unless print "hello polyglots\n"; __END__
9 JohnMcPherson 74 print
75 C stop run.
76 -*, 'hello polyglots'
77 C
78 C print.
79 C display "hello polyglots". (
80 C */ int i; /*
81 C */ main () { /*
82 C */ i=printf ("hello polyglots\n"); O= &i; return *O; /*
83 C *) (*
84 C *) begin (*
85 C *) writeln ('hello polyglots'); (*
86 C *) (* )
87 C * ) pop 60 360 (
88 C * ) pop moveto (hello polyglots) show (
89 C * ) pop showpage ((
90 C *)
91 end .(* )
92 C)pop% program polyglot. *){*/}
93 </verbatim>
94
11 AristotlePagaltzis 95 Compile as [C] and run on [Linux]::
8 JohnMcPherson 96
11 AristotlePagaltzis 97 <verbatim>
98 gcc -xc polyglot.src -o polyglot && ./polyglot
99 </verbatim>
100 The <tt>-xc</tt> switch forces the language to be [C].
8 JohnMcPherson 101
11 AristotlePagaltzis 102 View as PostScript::
8 JohnMcPherson 103
11 AristotlePagaltzis 104 <verbatim>
105 gv polyglot.src
106 </verbatim>
10 AristotlePagaltzis 107
11 AristotlePagaltzis 108 Run as a [Shell] script::
10 AristotlePagaltzis 109
11 AristotlePagaltzis 110 <verbatim>
111 sh polyglot.src
112 # or
113 chmod +x polyglot.src && ./polyglot.src
114 </verbatim>
10 AristotlePagaltzis 115
11 AristotlePagaltzis 116 Etc...
9 JohnMcPherson 117
118 ----
11 AristotlePagaltzis 119
9 JohnMcPherson 120 !!! PolyGlot #2
121
10 AristotlePagaltzis 122 The following is a polyglotic quine. (A quine is a program that prints its own source code out when run, without cheating by using open(2) on itself.)
123
124 [polyglotC++PerlPythonC.c | http://www.phong.org/bf/polyglotC++PerlPythonC.c]:
9 JohnMcPherson 125
126 <verbatim>
127 #include <stdio.h>
128 #define q(a,...) a
129 #define substr q
130 #define eval(a) main(){char c[]=a,n=10;c[419]=0;printf(c+4,n,n,n,n,34,34,n,34,39,c+4,39,34,n);}/* Copyright (C) Thomas Schumm <phong@phong.org>
131 exec("from sys import*;substr=q=lambda y:exit(stdout.write(y[4:-46]%((10,)*4+(34,34,10,34,39,y[4:-46],39,34,10))))",None);#*/
132 eval(substr(q("$p='#include <stdio.h>%c#define q(a,...) a%c#define substr q%c#define eval(a) main(){char c[]=a,n=10;c[419]=0;printf(c+4,n,n,n,n,34,34,n,34,39,c+4,39,34,n);}/* Copyright (C) Thomas Schumm <phong@phong.org>%cexec(%cfrom sys import*;substr=q=lambda y:exit(stdout.write(y[4:-46]%%((10,)*4+(34,34,10,34,39,y[4:-46],39,34,10))))%c,None);#*/%ceval(substr(q(%c$p=%c%s%c;printf($p,(10)x4,34,34,10,34,39,$p,39,34,10)%c),1,-1))%c';printf($p,(10)x4,34,34,10,34,39,$p,39,34,10)"),1,-1))
133 </verbatim>

PHP Warning

lib/blame.php:177: Warning: Invalid argument supplied for foreach() (...repeated 4 times)