Inspiriert von Ich bin nicht die Sprache, die Sie suchen!
Herausforderung
Wählen Sie zwei verschiedene Programmiersprachen und schreiben Sie ein Programm, das die folgende Zeile in stdout (oder ein gleichwertiges Programm) ausgibt:
This program errors out in <the current language> :P
und erzeugt dann unterschiedliche Arten von Fehlern in jeder der beiden Sprachen.
Regeln
Einige Regeln sind der ursprünglichen Herausforderung entnommen.
- In der Ausgabe sollten die Namen der Sprachen genau wie folgt lauten:
- Der in TIO aufgeführte Name , optional mit Ausnahme der Versionsnummer und / oder des Implementierungsnamens (z. B. wenn Sie
JavaScript (Node.js)
eine Ihrer Sprachen verwenden, könnenJavaScript
Sie den Namen für Ihre Sprache verwenden, aber nichtJS
oderJavascript
.) - Den vollständigen Namen finden Sie auf der offiziellen Website (oder auf GitHub Repo), wenn Ihre Sprache bei TIO nicht verfügbar ist.
- Der in TIO aufgeführte Name , optional mit Ausnahme der Versionsnummer und / oder des Implementierungsnamens (z. B. wenn Sie
- Keines der Programme sollte Eingaben vom Benutzer entgegennehmen.
- Sie können Kommentare in beiden Sprachen verwenden.
- Zwei verschiedene Versionen derselben Sprache zählen als verschiedene Sprachen.
- In diesem Fall sollte das Programm die Hauptversionsnummer ausgeben und bei Ausführung auf zwei verschiedenen Nebenversionen auch die Nebenversion melden.
- Sie sollten keine vorgefertigten Versionsfunktionen verwenden (dies schließt Variablen ein, die bereits zur Laufzeit ausgewertet wurden).
- Zwei verschiedene Befehlszeilen-Flags in derselben Sprache zählen ebenfalls als verschiedene Sprachen gemäß diesem Metakonsens , sofern die Flags keine Codefragmente enthalten (wie
-Dblahblah...
in C).- In diesem Fall sollte das Programm auch das verwendete Flag ausgeben.
- Zwei Fehler werden als unterschiedlich betrachtet, es sei denn, beide Fehler werden durch dieselbe Semantik generiert (z. B. "Division durch Null", "Segmentierungsfehler" oder "Index außerhalb des Bereichs").
- Wenn die Laufzeit einer Sprache nach einem Fehler nicht beendet wird, der Fehler jedoch auf irgendeine Weise an den Benutzer gemeldet wird, handelt es sich um einen gültigen Fehler.
- Wenn eine Sprache die Fehlermeldungen nicht unterscheidet, aber eine bekannte Liste der Fehlerursachen hat, müssen Sie den Grund und nicht die Fehlermeldung angeben.
Ein Beispiel ist><>
, das nur eine Fehlermeldung enthältsomething smells fishy...
, aber die Wiki-Seite von esolangs enthält eine Liste der Fehlerursachen.
- Syntaxfehler sind nur zulässig, wenn sie durch Aufrufen
eval()
oder ähnliches generiert werden . - Manuelles Werfen (über
throw
(JS),raise
(Python),die
(Perl) oder ähnliches) ist erlaubt, aber alle werden als eine Art von Fehler angesehen. - Fehler durch ungültigen Befehl in 2D oder Golflang sind ebenfalls zulässig (und werden als eine Art von Fehler behandelt).
Beispiele
Python und Ruby
- Python:
This program errors out in Python :P
zu stdout, dann undefinierter Bezeichner - Ruby:
This program errors out in Ruby :P
Zu stdout, dann außerhalb der Grenzen indexieren
C89 und C99
- C89:
This program errors out in C 89 :P
auf Standard , dann Division durch Null - C99:
This program errors out in C 99 :P
Zu Standard, dann Segmentierungsfehler
Beachten Sie, dass die Versionsnummer immer durch ein Leerzeichen vom Namen der Sprache getrennt sein muss.
Python 2.7.9 und Python 2.7.10
- Python 2.7.9:
This program errors out in Python 2.7.9 :P
Zu stdout, dann Syntaxfehler bei eval - Python 2.7.10:
This program errors out in Python 2.7.10 :P
nach stdout, dann key error on dict
Perl und Perl -n
- Perl:
This program errors out in Perl :P
zu stdout, dann ungültiges Zeitformat - Perl
-n
:This program errors out in Perl -n :P
zu stdout, dann versuchen Sie, eine Datei zu öffnen, die nicht existiert
Gewinnbedingung
Das ist Code-Golf , also gewinnt der kürzeste Code in Bytes. Aber Sie werden immer aufgefordert, eine Antwort zu schreiben, die Spaß macht oder interessant ist, auch wenn sie nicht sehr kurz ist.
This program errors out in ...
gemischte Tabulatoren / Leerzeichen anstelle von Leerzeichen enthalten?