Home
Main website
Display Sidebar
Hide Ads
Recent Changes
View Source:
PolyGlot
Edit
PageHistory
Diff
Info
LikePages
!!! PolyGlot 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 ---- !!! PolyGlot #1 The [original polyglot | http://ideology.com.au/polyglot/] is valid code in 8 languages. <verbatim> (*O/*_/ Cu #%* )pop mark/CuG 4 def/# 2 def%%%%@@P[TX---P\P_SXPY!Ex(mx2ex("SX!Ex4P)Ex= CuG #%* *+Ex= CuG #%*------------------------------------------------------------------*+Ex= CuG #%* POLYGLOT - a program in eight languages 15 February 1991 *+Ex= CuG #%* 10th Anniversary Edition 1 December 2001 *+Ex= CuG #%* *+Ex= CuG #%* Written by Kevin Bungard, Peter Lisle, and Chris Tham *+Ex= CuG #%* *+Ex= CuG #%* Polyglot suports the following languages: *+Ex= CuG #%* 1. COBOL (ANSI) *+Ex= CuG #%* 2. Pascal (ISO) *+Ex= CuG #%* 3. Fortran (ANSI, f77) *+Ex= CuG #%* 4. C (ANSI-ish) *+Ex= CuG #%* 5. PostScript *+Ex= CuG #%* 6. Linux/Unix shell script (bash, sh, csh) *+Ex= CuG #%* 7. x86 machine language (MS-DOS, Win32, Linux) *+Ex= CuG #%* 8. Perl (version 5) *+Ex= CuG #%* *+Ex= CuG #%* Usage: *+Ex= CuG #%* 1. Rename this file to polyglot.[cob|pas|f77|c|ps|sh|com|pl] *+Ex= CuG #%* *+Ex= CuG #%* 2. Compile and run with your favorite compiler and operating *+Ex= CuG #%* system. *+Ex= CuG #%* *+Ex= CuG #%* Notes: *+Ex= CuG #%* 1. We have attempted to use only standard language features. *+Ex= CuG #%* *+Ex= CuG #%* 2. Without the -traditional flag gcc will issue a warning. *+Ex= CuG #%* *+Ex= CuG #%* 3. When transferring from Unix to DOS make sure that a LF *+Ex= CuG #%* is correctly translated into a CR/LF. *+Ex= CuG #%* *+Ex= CuG #%* 4. Keep the black lines at the start of the program. They *+Ex= CuG #%* are important. *+Ex= CuG #%* *+Ex= CuG #%* 5. This text is a comment block in all eight languages. *+Ex= CuG #%* *+Ex= CuG #%* Please mail any comments, corrections or additions to *+Ex= CuG #%* polyglot@ideology.com.au *+Ex= CuG #%* *+Ex= CuG #%*------------------------------------------------------------------*QuZ= CuG #%* *+Ex= CuG #%*!Mx)ExQX5ZZ5SSP5n*5X!)Ex+ExPQXH,B+ExP[-9A-9B(g?(gA'UTTER_XYZZXX!X *+ CuG #(* *( C # */); /*( C # *) program polyglot (output); (*+ C # identification division. C # program-id. polyglot. C # C # data division. C # procedure division. C # C # * ))cleartomark /Bookman-Demi findfont 36 scalefont setfont ( C # * ( C # C # * hello polyglots$ C # main. C # perform C /# * ) 2>_$$; echo "hello polyglots"; rm _$$; exit; C # * ( C # C *0 ) unless print "hello polyglots\n"; __END__ print C stop run. -*, 'hello polyglots' C C print. C display "hello polyglots". ( C */ int i; /* C */ main () { /* C */ i=printf ("hello polyglots\n"); O= &i; return *O; /* C *) (* C *) begin (* C *) writeln ('hello polyglots'); (* C *) (* ) C * ) pop 60 360 ( C * ) pop moveto (hello polyglots) show ( C * ) pop showpage (( C *) end .(* ) C)pop% program polyglot. *){*/} </verbatim> Compile as [C] and run on [Linux]:: <verbatim> gcc -xc polyglot.src -o polyglot && ./polyglot </verbatim> The <tt>-xc</tt> switch forces the language to be [C]. View as PostScript:: <verbatim> gv polyglot.src </verbatim> Run as a [Shell] script:: <verbatim> sh polyglot.src # or chmod +x polyglot.src && ./polyglot.src </verbatim> Etc... ---- !!! PolyGlot #2 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.) [polyglotC++PerlPythonC.c | http://www.phong.org/bf/polyglotC++PerlPythonC.c]: <verbatim> #include <stdio.h> #define q(a,...) a #define substr q #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> 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);#*/ 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)) </verbatim>
2 pages link to
PolyGlot
:
ProgrammingLanguage
HelloWorld