Inspiré par je ne suis pas la langue que vous recherchez!
Défi
Choisissez deux langages de programmation différents et écrivez un programme qui imprime la ligne suivante sur stdout (ou équivalent):
This program errors out in <the current language> :P
puis génère un type d'erreur différent dans chacune des deux langues.
Règles
Certaines règles sont tirées du défi d'origine.
- Dans la sortie, les noms de langue doivent suivre exactement:
- Le nom répertorié sur TIO , excluant éventuellement le numéro de version et / ou le nom de l'implémentation (par exemple, si vous utilisez
JavaScript (Node.js)
comme l'une de vos langues, vous pouvez utiliserJavaScript
pour votre nom de langue, mais pasJS
ouJavascript
.) - Le nom complet sur le site officiel (ou repo GitHub) si la langue de votre choix n'est pas disponible sur TIO.
- Le nom répertorié sur TIO , excluant éventuellement le numéro de version et / ou le nom de l'implémentation (par exemple, si vous utilisez
- Aucun des deux programmes ne doit accepter aucune entrée de l'utilisateur.
- Vous pouvez utiliser des commentaires dans l'une ou l'autre langue.
- Deux versions différentes de la même langue comptent comme langues différentes.
- Si cela est fait, le programme doit afficher le numéro de version principale, et s'il s'exécute sur deux versions mineures différentes, doit également signaler la version mineure.
- Vous ne devez pas utiliser de fonctions de version prédéfinies (cela inclut les variables qui ont déjà été évaluées au moment de l'exécution).
- Deux drapeaux de ligne de commande différents dans le même langage comptent également comme des langages différents selon ce méta-consensus , tant que les drapeaux n'incluent pas de fragments de code (comme
-Dblahblah...
en C).- Si cela est fait, le programme devrait également afficher le drapeau utilisé.
- Deux erreurs sont considérées comme différentes à moins que les deux erreurs ne soient générées par la même sémantique (comme «division par zéro», «défaut de segmentation» ou «index hors plage»).
- Si le runtime d'une langue ne se termine pas après une erreur, mais signale l'erreur d'une manière ou d'une autre à l'utilisateur, c'est une erreur valide.
- Si une langue ne discrimine pas les messages d'erreur mais possède une liste connue des raisons qui provoquent l'erreur, vous devez spécifier la raison, pas le message d'erreur.
Un exemple est><>
, qui n'a qu'un seul message d'erreursomething smells fishy...
, mais la page wiki d'esolangs a une liste de raisons d'erreur.
- L'erreur de syntaxe n'est pas autorisée sauf si elle est générée par appel
eval()
ou similaire. - Lancer quelque chose manuellement (via
throw
(JS),raise
(Python),die
(Perl) ou similaire) est autorisé, mais tous sont considérés comme un seul type d'erreur. - L'erreur par commande invalide en 2D ou golflangs est également autorisée (et traitée comme une sorte d'erreur).
Exemples
Python et Ruby
- Python:
This program errors out in Python :P
à stdout, puis identifiant non défini - Ruby:
This program errors out in Ruby :P
stdout, puis index hors limites
C89 et C99
- C89:
This program errors out in C 89 :P
à stdout, puis division par zéro - C99:
This program errors out in C 99 :P
à stdout, puis défaut de segmentation
Notez que le numéro de version doit toujours être séparé du nom de la langue par un espace.
Python 2.7.9 et Python 2.7.10
- Python 2.7.9:
This program errors out in Python 2.7.9 :P
vers stdout, puis erreur de syntaxe sur eval - Python 2.7.10:
This program errors out in Python 2.7.10 :P
à stdout, puis erreur de clé sur dict
Perl et Perl -n
- Perl:
This program errors out in Perl :P
vers stdout, puis format d'heure invalide - Perl
-n
:This program errors out in Perl -n :P
pour stdout, puis essayez d'ouvrir un fichier qui n'existe pas
Condition gagnante
Il s'agit de code-golf , donc le code le plus court en octets l'emporte. Mais vous êtes toujours encouragé à poster une réponse amusante ou intéressante même si elle n'est pas très courte.
This program errors out in ...
contenir des tabulations / espaces mixtes au lieu de seulement des espaces?