Quale codice viene compilato nella maggior parte delle lingue? [chiuso]


29

Escludendo programmi banali, quale codice viene compilato nella maggior parte delle lingue?

(Per "banale" intendo escludere risposte come il programma vuoto o il testo che verrà ripetuto direttamente).

Il seguente codice apparentemente si compila in tutti i seguenti linguaggi di programmazione (e stampa qualcosa di diverso in ciascuno): C, C ++, Perl, TeX, LaTeX, PostScript, sh, bash, zsh e Prolog.

%:/*:if 0;"true" +s ||true<</;#|+q|*/include<stdio.h>/*\_/
{\if(%)}newpath/Times-Roman findfont 20 scalefont setfont(
%%)pop 72 72 moveto(Just another PostScript hacker,)show((
t)}. t:-write('Just another Prolog hacker,'),nl,halt. :-t.
:-initialization(t). end_of_file. %)pop pop showpage(-: */
int main(){return 0&printf("Just another C%s hacker,\n",1%
sizeof'2'*2+"++");}/*\fi}\csname @gobble\endcsname{\egroup
\let\LaTeX\TeX\ifx}\if00\documentclass{article}\begin{doc%
ument}\fi Just another \LaTeX\ hacker,\end{document}|if 0;
/(J.*)\$sh(.*)"/,print"$1Perl$2$/"if$_.=q # hack the lang!
/
sh=sh;test $BASH_VERSION &&sh=bash;test $POSIXLY_CORRECT&&
sh=sh;test  $ZSH_VERSION && sh=zsh;awk 'BEGIN{x="%c[A%c[K"
printf(x,27,27)}';echo "Just another $sh hacker," #)pop%*/

Sono 10 lingue diverse. L'ho trovato tramite pts oldalai (che ha anche un magnifico poema natalizio scritto in C, C ++, Perl e TeX). Qualcuno può fare di meglio?


8
Il termine tecnico è Polyglot
st0le

8
Ecco un poliglotta in
st0le

7
Se sh, bash e zsh contano come lingue diverse anche quando essenzialmente utilizza solo sh, allora penso che sia necessario specificare con precisione cosa contate come lingue diverse. Ad esempio Perl 4 vs Perl 5.10 presentano alcune differenze significative.
Peter Taylor,

7
Esistono lingue (ad es. Whitespace, BrainF ** k e Perl), in cui praticamente qualsiasi combinazione di caratteri è un programma valido. Possono essere rivendicati da qualsiasi programma.
ugoren,

Risposte:


9

3 lingue: C, C ++ e Python

#ifdef _cplusplus
    #include <iostream>
    #define print() int main(){cout << "Hello world! -- from C++" << endl;}
#elif (defined __STDC__) || (defined __STDC_VERSION__)
    #include <stdio.h>
    #define print() int main(){printf("Hello world! -- from C\n");}
#else
import builtins
print = lambda : builtins.print("Hello world! -- from Python")
#endif

print()

Qualcosa di diverso è stampato in ogni lingua. In C & C ++, le righe che iniziano con '#' sono direttive di preelaborazione, ma quelle stesse righe sono commenti in Python.


4

5 lingue: giovedì, Brainf ***, Boolf ***, Treehugger e Javascript

/*::=
alert::=~This is Thue!
::=
-><[[--->+<]>-.[---->+++++<]>-.+.++++++++++.+[---->+<]>+++.-[--->++<]>-.++++++++++.+[---->+<]>+++.+[->++<]>.---[----->+<]>-.+++[->+++<]>++.++++++++.+++++.--------.---[->+++<]>+...---------.[-]]
^^[[--->+^]>-.[---->+++++^]>-.+.++++++++++.+[---->+^]>+++.-[--->++^]>-.++++++++++.+[---->+^]>+++.>-[--->+^]>-.-[--->+^]>+.-------------..+++.[--->+^]>---.++[->+++^]>++..--.+++++++++++++.[--->+^]>-----.[-]]
-+[+;;+;+;+;+;+;+;;;;+;+;+;;+;+;+;;+;+;+;;+;+;;+;;+;;;+;;;;;;+;+;;+;+;;+;+;+;;+;+;;+;;+;;;+;;;;;;+;+;;;+;+;;;;+;+;+;;;;+;+;;+;+;;;;+;+;;+;;;+;;+;+;;+;;+;;+;;+;;+;;+;+;+;+;+;+;;;+;+;+;+;+;+;;;+;+;+;+;+;+;;+;+;;;;+;+;;]
*/alert("This is Javascript!")

Si noti che la parte Treehugger scade nell'implementazione basata sul web, sfortunatamente, quindi è necessario utilizzare un interprete Treehugger diverso.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.