Vous n'arrivez pas à relire votre programme Perl ?
Votre tortue Logo se déplace toute seul ?
Sachez que vous n'êtes PAS à plaindre ! Bon, si quand même, parce que ce qui va suivre ne va pas vous aider à résoudre votre problème. En tout cas il existe des langages pires. Des programmes pires. Et il y a même des gens qui font ces programmes pires dans ces langages pires!
Parmi les langages on trouve (avec leur "hello world"):
Befunge qui est un langage bi-dimensionnel.
55+".dlrow ,olleH">:#,_@
BrainFuck : Il y a un tableau d'entiers de 1 octet et un pointeur sur ce tableau. Tous les entiers sont initialisés à zéro, et le pointeur pointe vers le premier élément. Il ne reste plus qu'à déplacer le pointeur, et à incrémenter/decrémenter la valeur vers laquelle il pointe.
Rudimentaire non?
>+++++++++[<++++++++>-]<.>+++++++[<++++>-]<+.+++++++..+++.[-]
>++++++++[<++++>-]<.#>+++++++++++[<+++++>-]<.>++++++++[<+++
>-]<.+++.------.--------.[-]>++++++++[<++++>-]<+.[-]++++++++++.
(il n'y a pas de retour à la ligne en vrai. Ca fait une seule ligne.)
Unlambda est un autre langage de programmation obscure créé dans le seul but de rendre la programmation douloureuse et ardue (ou amusante et pleine de défis si vous préférez).
Tout comme le Scheme, ce langage ne manipule que des fonctions. Et dire que ça suffit!
```s``sii`ki
``s``s`ks
``s``s`ks``s`k`s`kr
``s`k`si``s`k`s`k
`d````````````.H.e.l.l.o.,. .w.o.r.l.d.!
k
k
`k``s``s`ksk`k.*
(atroce non?)
Orthonormal est un autre langage bi-directionnel sympathique
0 'd' 'l' 'r' 'o' 'w' ' ' ',' 'o' 'l' 'l' 'e' 'h' s 0 c 0 ret
Il y en a plein d autres. tous plus immondes (attrayants) les uns que les autres.
Maintenant que vous avez trouvé votre langage de prédilection, essayez de programmer un (une?) quine.
C'est un programme qui affiche son propre code. Mais attention! Pas un qui lit sa source! Et c'est la que ça devient difficile...
Je n'ai pas réussi de mon coté... je vous en poste quelques uns ici.. il y en a d'autres avec les liens... essayez si vous avez du temps!!
Scheme ou Lisp:
((lambda (x)
(list x (list (quote quote) x)))
(quote
(lambda (x)
(list x (list (quote quote) x)))))
C:
char*f="char*f=%c%s%c;main()
{printf(f,34,f,34,10);}%c";
main(){printf(f,34,f,34,10);}
Perl:
$_=q{$_=q{Q};s/Q/$_/;print};s/Q/$_/;print
Y'a des tarés je vous jure :)
Bon, je vous aurait prévenu, n'essayez pas ces langages ni de faire de quines avant d'avoir résolu vos problèmes avec vos langages favoris!
Aller plus loin
- La gallerie des horreurs. (18 clics)
- Les Quines (9 clics)
# Re: Atrocités linguistiques
Posté par yugz . Évalué à 10.
Le programme Hello World en divers langages : http://www.cuillin.demon.co.uk/nazz/trivia/hw/hello_world.html(...)
Le programme pour écrire les paroles de la chanson 99 Bottles of beer on the wall, en 548 langages : http://99-bottles-of-beer.ls-la.net/(...)
bonne lecture !
[^] # Re: Atrocités linguistiques
Posté par Amand Tihon (site web personnel) . Évalué à 6.
appellons-le '1.c'.
Une fois compilé, lancer './1 > 2.c', compiler 2.c et lancer './2 > 3.c'.
Compiler 3.c, lancer './3 > 1bis.c'
1.c et 1bis.c étaient identiques.
La grande question que je me pose, c'est : font-ils ça à la main/de tête ?
Ou bien ont-ils écrit un programme qui fait ça pour eux ? :)
[^] # Re: Atrocités linguistiques
Posté par Vanhu . Évalué à 10.
Et comme c'est deja surement pas facile d'écrire un programme qui fasse ca, peut etre qu'ils ont fait un programme qui fait ce programme......
Ok, je sors....
[^] # Re: Atrocités linguistiques
Posté par Nap . Évalué à 7.
ok je vais le faire moi
[^] # Re: Atrocités linguistiques
Posté par Pierre Jarillon (site web personnel) . Évalué à 3.
# define input()
(((yytchar=yysptr>yysbuf?U(*--yysptr):sgetc())==10?(yylineno++,yytchar):yytchar)==EOF?0:yytchar)
Je n'ai rien inventé et ça fonctionne très bien, mais 12 ans après ça fonctionne toujours et je ne sais toujours pas pourquoi...
[^] # Re: Atrocités linguistiques
Posté par Olivier Serve (site web personnel) . Évalué à 1.
char* input() {
int x;
char *y;
char *yytchar;
yytchar = yysptr;
if (yytchar > yysbuf) {
x = U(* --yysptr);
}
else {
x = sgetc();
}
if (x == 10) {
yylineno++;
y = yytchar;
}
else {
y = yytchar;
}
if (y == EOF) {
return 0;
}
else {
return yytchar;
}
}
# Re: Atrocités linguistiques
Posté par Nicolas Delsaux (site web personnel) . Évalué à 10.
- en Java http://www.gamedev.net/hosted/javaextreme/obfuscat.htm(...)
- En C (le plus facile, puisque déja fait) http://www.ioccc.org/(...)
Et donc quelques pages bien intéressantes :
http://www.catseye.mb.ca/esoteric/(...)
http://www.mines.edu/students/b/bolmstea/essies/(...)
http://p-nand-q.com/languages.htm(...)
# Re: Atrocités linguistiques
Posté par MrTout (site web personnel) . Évalué à 10.
Befunge, BrainFuck, WhiteSpace ( http://compsoc.dur.ac.uk/whitespace/(...) ), GOTO++ ( http://gpp.niacland.net(...) ) et Java.
Ce qui différencie les deux derniers c'est qu'ils ne se contentent pas d'être un langage jouet rigolo mais qu'ils implémentent des choses un peu plus utiles que des additions et des affichage de caractères ( programmation réseau, graphique, parallele, structures de données complexes, etc) donc on peut faire des choses bien plus intéréssantes.
Bref, ces langages-là utilisent uniquement une couche de sucre syntaxique pour rendre un principe simple plus rigolo voire attrayant.
Ceuses qui cherchent vraiment des concepts de dinques se tourneront vers d'autres principe de programmation et des langages dérivés. je suggère en particulier les machines chimiques qui ont un bon potentiel.
# Re: Atrocités linguistiques
Posté par patrick_g (site web personnel) . Évalué à 4.
merci.
# hello world !
Posté par j (site web personnel) . Évalué à 10.
rubrique humour
http://www.gnu.org/fun/jokes/helloworld.html(...)
How the way people code "Hello World" varies depending on their age and job
[^] # Re: hello world !
Posté par jigso . Évalué à 6.
# Re: Atrocités linguistiques
Posté par Dugland Bob . Évalué à 6.
http://www.willamette.edu/~fruehr/haskell/evolution.html(...)
la factorielle comme vous l'avez jamais vue, genre avec des entiers à la Peano ou à la Church, ou encore la version combinatorielle (sans aucune variable scalaire).
[^] # Re: Atrocités linguistiques
Posté par Jiel (site web personnel) . Évalué à 1.
# K
Posté par kaikaikiki . Évalué à 7.
Exemple de code :
Parser XML en K : http://www.kx.com/a/k/examples/xhtml.k(...)
Un article de présentation sur Kuro5hin :
http://www.kuro5hin.org/story/2002/11/14/22741/791(...)
Vous pouvez meme l'utiliser sous linux pour impressionner tous vos amis geeks :
http://www.kx.com/download/download.htm(...)
# Langages esoteriques
Posté par Antoine Büsch . Évalué à 7.
http://www.kraml.at/stupid/(...)
Entre aute, le Chef (http://www.dangermouse.net/esoteric/chef.html(...) ) dont les programmes ressemblent a des recettes de cuisine, et le Shakespeare (http://www.gnuprojects.org/spl/spl.htm(...) ) dont les programmes ressemblent a des pieces de theatre.
Bien drole.
Ahhh, l'humour d'informaticien...
[^] # Re: Langages esoteriques
Posté par Pierre Jarillon (site web personnel) . Évalué à 1.
Je ne pourrai donc plus utiliser cette petite expression courante qu'affectionnait tant Irvin (l'un des premiers modéros) :
If you need any help feel free to use:
echo '16i[q]sa[ln0=aln100%Pln100/snlbx]sbA0D4D465452snlbxq'|dc
[^] # Re: Langages esoteriques
Posté par Antoine Büsch . Évalué à 2.
[^] # Re: Langages esoteriques
Posté par Sixel . Évalué à 3.
Quoi de plus beau pour séduire une geekette? Voyez plutôt :
Romeo, A character to store the sum.
Juliet, An admirer who helps to calculate the sum.
Act I: A simple play.
Scene I: Juliet's conversation with Romeo.
[Enter Romeo and Juliet]
Juliet: Listen to your heart!
Romeo: You are as beautiful as a sweet red rose.
Listen to your heart.
Juliet: You are as brave as the sum of me and thyself.
Open your heart!
[Exeunt]
Tous ca pour ajouter deux variables... C'est beau le codage, des fois...
"Il faut" (Ezekiel 18:4) "forniquer" (Corinthiens 6:9, 10) "avec des chiens" (Thessaloniciens 1:6-9) "morts" (Timothée 3:1-10).
# Re: Atrocités linguistiques
Posté par Gruik Man . Évalué à 7.
(en exclusivité, le source de ce merveuilleux programme: (=<`$9]7<5YXz7wT.3,+O/o'K%$H"'~D|#z@b=`{^Lx8%$Xmrkpohm-kNi;gsedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543s+O<oLm )
Le site officiel: http://www.mines.edu/students/b/bolmstea/malbolge/(...)
Et là, l'explication pour le fameux Hello World en Malbolge: http://www.acooke.org/andrew/writing/malbolge.html(...)
# Qq liens en Perl
Posté par Anonyme . Évalué à 7.
1) Il est maintenant courant de dire "à plus" pour "à plus tard". Les programmeurs C++ qui se croient plus malins que les autres, ont pris pour habitude de dire A++ pour "à plus" à la fin de leurs mails. Les Perl Mongueurs de Paris, qui se croient plus obfuscateurs que les autres, ont adapté la chose à leur langage de prédilection. D'autant plus que deux Mongueurs (Stéphane et BooK) ont gagné le premier et deuxième prix respectivement dans des concours d'Obfuscated Perl (le Perl Assombri). Il a été question un moment de pouvoir incrémenter une variable sans que cela se sache.
http://paris.mongueurs.net/aplusplus.html(...)
Je ne suis que 2ème, mais je vais m'y remettre ... :-))
(2) L'obfuscation, ou assombrissement en français, consiste à façonner un bout de code ou un programme afin de le rendre totalement incompréhensible à un lecteur humain, même aidé d'outils informatiques. Il s'agit plus ou moins d'établir un dialogue secret entre le programmeur et sa machine, qui sera la seule à comprendre ce qu'il demande, et à l'exécuter. Bien sûr, la performance n'est pas du tout le critère principal. En revanche l'aspect artistique ou humoristique d'un programme peut être particulièrement apprécié.
http://paris.mongueurs.net/assombri/(...)
$A += $A !~ santana;
[^] # Re: Qq liens en Perl
Posté par jmfayard . Évalué à 1.
La quine en Perl est le seul des programmes ci-dessus que j'ai compris,
presque immédiatement.
# Re: Atrocités linguistiques
Posté par samds . Évalué à 6.
c'est normal que y ait rien. un programme sans ligne de code, si il affiche rien, il affiche quand meme son contenu :)
ok -1
[^] # Re: Atrocités linguistiques
Posté par Mes Zigues . Évalué à 4.
Remarque idiote, Georg-Christoph Lichtenberg vivait au XVIII° siècle, son invention serait donc déjà tombée dans le domaine public de plus l'idée d'ordinateur n'existait pas encore, mais son inventeur (Charles Babbage) était né !
-1 car nous ne somme pas sur LinuxCulture
[^] # Re: Atrocités linguistiques
Posté par Gniarf . Évalué à 2.
[^] # Re: Atrocités linguistiques
Posté par Pierre Tramal (site web personnel) . Évalué à 4.
[^] # Re: Atrocités linguistiques
Posté par Anonyme . Évalué à 3.
$ touch truc.c
$ gcc truc.c
/usr/lib/crt1.o: In function `_start':
/usr/lib/crt1.o(.text+0x18): undefined reference to `main'
collect2: ld returned 1 exit status
[^] # Re: Atrocités linguistiques
Posté par Jylam / jylam.lnxsce (site web personnel) . Évalué à 3.
ca se lance pas, mais ca compile
# Re: Atrocités linguistiques
Posté par Jylam / jylam.lnxsce (site web personnel) . Évalué à 2.
Le code est laid au possible, l'avantage c'est que le resultat est "joli" (tout depend ce qu'on appelle joli remarquez :)
http://www.demonic.demon.nl/4k/(...)
# Générateur de Quines
Posté par -mat . Évalué à 2.
il y a programme qui permet de générer un quine à partir de n'importe quel proegramme (en C)...
# Re: Atrocités linguistiques
Posté par Tutur . Évalué à 1.
Je connais un langage dont la grammaire et l'orthographe n'ont aucune régle si ce n'est celle des exceptions.
C'est la langue françaises.
[^] # Atrocités orthographique
Posté par Brice Favre (site web personnel) . Évalué à 1.
# Re: Atrocités linguistiques
Posté par Sixtiz (site web personnel) . Évalué à 2.
Pour ceux que ça amuse, voilà la source :
#!/bin/bash
ZIP="begin-base64 644 -\n
QlpoOTFBWSZTWbXqgFwAABnfgEQQfOrQCgAgwBQ/6d+eIACANCakxoI0aZGR\n
6mExMNQxpoNADJoDI00MTRlQc2CKXPFyL8XB7x5eDPFgj3shmm9ThipX7uJn\n
iowrEpZapRQd7UncM3KG6JsguWPWY6DMK3IFlkRnEO3REpEhgKNNUFFgGG/6\n
+2VK+tzWbBITn3AeT+OJCHPgSMJo1NwBh94EU60wQMAeZFif8XckU4UJC16o\n
BcA=\n
====\n
"
ZOP=$(echo "$ZIP" | sed s/\\\\n/\\\\\\\\n/)
echo -e "$ZIP" | uudecode | bunzip2 | gawk -v zip="$ZOP" '{ printf($0) } /ZIP=/ { if (i==0) {print zip; print "\""; i++} } { print "" }'
Enjoy ;-)
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.