Votre défi: rédiger un "programme", pour la langue de votre choix, qui oblige le compilateur / interprète / runtime à produire une erreur lors de la compilation / exécution de votre programme, qui est identique au code source de votre programme.
Règles:
- Votre programme peut être spécifique à une version ou à une implémentation particulière de l'environnement de compilation / interpréteur / exécution de votre langage. Si oui, veuillez préciser les détails.
- Seules les options standard du compilateur / interprète / runtime sont autorisées. Vous ne pouvez pas transmettre d'indicateur étrange à votre compilateur pour obtenir un résultat spécifique.
- Le programme n'a pas besoin d'être valide du point de vue de la syntaxe ou de la sémantique, mais je peux donner une prime à la meilleure soumission syntaxiquement valide.
- Le programme ne doit produire aucune sortie en soi (par exemple, en appelant une fonction d'impression ou de sortie). Toutes les sorties générées lors de la tentative de compilation / exécution du programme doivent provenir du compilateur / interprète / runtime.
- La sortie complète du compilateur / interprète / runtime doit être exactement identique au code source de votre programme.
- Le compilateur / interprète / runtime doit générer au moins un message d'erreur lorsqu'il est appelé avec votre programme.
C'est un concours de popularité . La réponse la plus créative, déterminée par les votes positifs, l'emporte. Si vous pouvez donner un bon cas d'utilisation d' une échappatoire standard, vous pouvez le faire.
popularity-contest
quine
error-message
Nneonneo
la source
la source
Error: Could not find or load main class Q
Réponses:
Ed (1 octet)
Jusqu'à présent, toutes les autres solutions sont longues et laides. Je suppose que cela est dû à la nature de la plupart des messages d'erreur. Mais un bon message d'erreur est élégant dans sa simplicité. Pour cela, ne cherchez pas plus loin que ed.
Enregistrez ceci dans un fichier appelé
edscript
et exécuté aveced < edscript
, ou exécutéed<<<?
. Le résultat:Le point d'interrogation est écrit sur stderr et ed renvoie 1, il s'agit donc d'un message d'erreur. Je me demande pourquoi ed n'est pas très populaire?
Faux (0 octet)
Courez avec
false filename
. Il écrit le code source (c'est-à-dire rien) du programme dans stderr et renvoie 1. Bien sûr, appeler un langage de programmation faux est discutable, et la valeur de zéro octet n'est pas originale, mais je pensais pouvoir l'ajouter également. Il existe probablement un interpréteur pour une langue qui n’imprime aucun message d’erreur et qui pourrait remplacer false.Maintenant, j'aimerais que ce soit du code golf.
la source
Invite de commande Windows
la source
|
aussi.CoffeeScript, valide du point de vue de la syntaxe
Comme testé sur leur site web en utilisant Chrome ou Firefox.
Vous pouvez remplacer
defined
par tout ce qui n'est pas une variable intégrée, mais j'ai trouvé cette version amusante. Malheureusement,undefined is not defined
en particulier ne fonctionne pas comme une quine.Dans CoffeeScript, ce n'est même pas une erreur de syntaxe, car il compile. C'est techniquement une erreur d'exécution en JavaScript, bien qu'ennuyeuse. CoffeeScript est susceptible de produire des quines d’erreurs d’exécution plus intéressantes car beaucoup de phrases amusantes sont du code valide. Par exemple, l'exemple ci-dessus est compilé pour
la source
defined
est pardefined
itiondefined
. Wha ... comment ...?Undefined is not defined
(avec un capitalU
) semble fonctionner lolPython
Spyder
Eh bien, une solution plutôt triviale pour l'EDI Spyder est de lever un
SyntaxError
.Code et sortie identique:
(Python 2.7.8 avec Spyder 2.2.5)
Terminal
Une solution alternative pour Python démarrée à partir de lignes de commande se heurte à un retrait imprévu.
Commander:
Code et sortie identique:
ideone.com
Sur ideone.com, une solution pourrait être la suivante. (Essayez le!)
Code et sortie identique:
(Ceci est pour Python 2. Un exemple pour Python 3 est trivial mais avec 15 lignes de "code" plutôt long.)
Approche générale:
Comment créer sa propre solution en 2 minutes?
Je parie qu'une telle procédure se termine assez rapidement dans la plupart des cas!
la source
SyntaxError: invalid syntax
produit la même chose aussi :)> <> - 25 octets
Dans Fish, toute instruction erronée génère l'erreur: "quelque chose sent le poisson ...". Puisque s n’est pas une commande valide, il se trompe immédiatement.
la source
something smells fishy...
, mais c'estSomething smells fishy...
sur l'interpréteur en ligne. Cela dépend de l'interprète.Windows .EXE, 248 octets
Pas vraiment. Enregistrez sous
quine.txt
, puis renommezquine.exe
(ou téléchargez-le ici ):la source
Espace blanc
J'ai d'abord pensé que c'était clairement impossible. Mais en réalité, c'est aussi trivial. -.-
L'essayer
Oui, mon premier programme d'espaces blancs! ;)
la source
poulet
la source
JavaScript
Puisque différents navigateurs utilisent différents compilateurs JavaScript, ils produisent différents messages. Ce sont cependant des solutions plutôt triviales.
V8 (Chrome 36 / Node.js)
SpiderMonkey (Firefox 31)
Chakra (Internet Explorer 11)
la source
jsc
::Exception: SyntaxError: Unexpected identifier 'identifier'
DCommodore 64 Basic
Lorsqu'il est exécuté sur l'émulateur de votre choix (ou sur un Commodore 64 actuel), produit
En fait, il s’agit d’un programme monoligne à syntaxe valide. Le point d'interrogation est un raccourci pour
PRINT
, etSYNTAX
etERROR
sont des noms de variables valides. L'erreur se produit parce que l'analyseur est confus par la sous-chaîneOR
deERROR
.la source
Microsoft Excel
Formule:
#DIV/0!
Message d'erreur:
#DIV/0!
Pour entrer une formule sans utiliser le signe égal, allez dans Options de compatibilité Excel / Avancé / Lotus et activez Saisie de formule de transition.
la source
#REF!
Bash (32)
Enregistrer dans un fichier nommé
x
:Quand exécuté:
la source
Quine d'erreur de compilation Java 8 (12203 octets)
Généré sur windows + mingw avec java 1.8.0_11 jdk, en utilisant cette commande:
Peut-être pas le plus court, peut-être pas le plus long non plus, plus une preuve de concept. Fonctionne car la sortie d'erreur affiche au plus 100 erreurs.
la source
ArnoldC
Collez le code dans ce compilateur .
la source
IT'S SHOWTIME
est drôle, c’est qu’il est en fait en première ligneTrumpScript - Rendre PPCG encore une fois génial ( TrumpScript )
Lorsque vous essayez d'exécuter cette langue sur un PC Windows, le résultat est toujours le suivant:
Donc, lors de l'exécution de ce programme:
Il ne sera même pas analysé car l'échec de la vérification du système d'exploitation et le message d'erreur. Des exemples peuvent également être donnés pour Mac si quelqu'un les veut haha. Dieu, je voulais utiliser cela dans PPCG depuis un moment maintenant, bien que j'y arrive enfin.
Liste complète des erreurs pouvant être déclenchées à l'aide de spécifications environnementales:
https://github.com/samshadwell/TrumpScript/blob/master/src/trumpscript/utils.py
Réponse bonus: ArnoldC ( ArnoldC )
ArnoldC requiert une déclaration de racine de
IT'S SHOWTIME
, ce qui signifiemain()
:Résultats dans le seul message d'erreur dans ArnoldC ...
Ce qui est en fait ... hilarant. Vous devez l'exécuter de manière non commentée sans traces de pile.
la source
Interprète Z-machine
Testez contre cet interprète populaire . Il existe également une sorte de jeu essentiellement inoffensif hébergé ici.
la source
Julia 0.2.0
Une autre erreur de syntaxe a été trouvée de manière itérative jusqu'à ce qu'un point fixe soit atteint:
la source
Mathematica
A
.
dans Mathematica signifie soit un point décimal, soit une fonctionDot
. Dans ce cas, le.
apparaît à la fin d'une expression et ne peut pas être interprété.la source
C
J'ai appliqué la méthode de copie répétée des messages d'erreur à la source. Il a convergé en 2 cycles. Compilé sur OSX 10.9 avec 'cc -c error.c'.
Remarque: Il ne s'agit pas vraiment d'une réponse, mais d'une méthodologie pour en obtenir une. Le résultat peut varier en fonction de votre système d'exploitation ou de la version de cc utilisée.
La méthode exacte pour obtenir le résultat est d'exécuter les instructions
jusqu'à ce que la sortie cesse de changer.
la source
cc -c error.c 2>out
et ensuitemv out error.c
. Et avec la version de cc que j'ai aujourd'hui, cela prend quelques itérations supplémentaires.cc
; sinon, il est invalide et doit être supprimé conformément aux directives de la communauté.C ++ (g ++)
Le fichier doit être enregistré sous
1.pas
.la source
INTERCALL , 90 octets
Inclut une nouvelle ligne à la fin. Notez que ce n'est pas STDERR, mais comme beaucoup l'ont considéré comme une erreur, je l'ai posté ici.
C'est "l'en-tête obligatoire":
la source
GHCi (interprète / shell Haskell)
Usage:
Ecrivez le code dans un fichier nommé Code et chargez-le avec GHCi.
Un fait intéressant est que, si les mots étaient de véritables identifiants, il s'agirait d'une expression légale (pour autant que cela revienne à une vérification de type). Cela est essentiellement dû au fait qu’il
:
s’agit d’un opérateur intégré,.
utilisé pour les noms qualifiés de modules et d’espaces blancs pour désigner l’application de fonctions.la source
.
n'est pas un opérateur ici. Cela fait partie d'un nom qualifié. Quelle est la version de GHCi?Ruby 2 sur Windows
Code:
Le code a été trouvé en testant et en itérant le processus encore et encore jusqu'à atteindre un point de réparation. Le code doit être à l'intérieur du fichier
"error.rb"
.Démo:
la source
Applescript (dans l'éditeur de script)
la source
AppleScript
Les deux
A
etidentifier
peuvent être des identifiants, AppleScript dit non.la source
C (gcc)
Compiler avec
gcc -Wfatal-errors error.c
.la source
CJam 0.6.2
Essayez-le en ligne.
la source
BBC Basic, 7 octets (ou 0 octet)
Ceci est une entrée valide de 7 octets:
C'est le message d'erreur produit par l'interpréteur lorsqu'il est totalement incapable de comprendre le code.
Par contre, ce n'est pas:
Il s'agit d'un mot clé valide dans BBC Basic qui est censé introduire délibérément une erreur d'un code spécifié dans le programme, mais la syntaxe est incorrecte (aucun code n'est donné.) Par conséquent, il retourne
Syntax error
(qui à son tour revientMistake
lorsqu'il est exécuté).En général, la procédure décrite par Falko dans sa réponse conduit à
Mistake
la base de la BBC. Il y a quelques exceptions. tout ce qui produit les erreursDATA not LOCAL
ouON ERROR not LOCAL
conduit au fameux zéro octet: un code source vide produit un fichier vide.Étant donné que la plupart des messages d'erreur dans BBC basic sont en minuscule (et donc que les mots clés ne sont pas valides), je suis pratiquement sûr que toute entrée non valide mènera à l'une de ces possibilités.
la source
CoffeeScript
Echoue à la première erreur, donc c'est assez facile à faire:
Démo
la source
4ème
Essayez-le ici
C'était étonnamment facile à trouver.
la source