Ispirato da Non sono la lingua che stai cercando!
Sfida
Scegli due diversi linguaggi di programmazione e scrivi un programma che stampa la seguente riga su stdout (o equivalente):
This program errors out in <the current language> :P
e quindi genera diversi tipi di errore in ciascuna delle due lingue.
Regole
Alcune regole sono prese dalla sfida originale.
- Nell'output, i nomi delle lingue dovrebbero seguire esattamente:
- Il nome elencato su TIO , opzionalmente escluso il numero di versione e / o il nome dell'implementazione (ad esempio se si utilizza
JavaScript (Node.js)
come una delle lingue, è possibile utilizzareJavaScript
per il nome della lingua, ma nonJS
oJavascript
.) - Il nome completo sul sito Web ufficiale (o repository GitHub) se la lingua scelta non è disponibile su TIO.
- Il nome elencato su TIO , opzionalmente escluso il numero di versione e / o il nome dell'implementazione (ad esempio se si utilizza
- Nessuno dei due programmi dovrebbe ricevere alcun input dall'utente.
- È possibile utilizzare i commenti in entrambe le lingue.
- Due versioni diverse della stessa lingua contano come lingue diverse.
- In tal caso, il programma dovrebbe generare il numero di versione principale e, se eseguito su due diverse versioni minori, dovrebbe riportare anche la versione minore.
- Non utilizzare funzioni di versione predefinite (ciò include le variabili che sono già state valutate in fase di esecuzione).
- Due flag di riga di comando diversi nella stessa lingua contano anche come lingue diverse secondo questo meta consenso , purché i flag non includano frammenti di codice (come
-Dblahblah...
in C).- In questo caso, il programma dovrebbe anche generare il flag utilizzato.
- Due errori sono considerati diversi a meno che entrambi gli errori non siano generati dalla stessa semantica (come "divisione per zero", "errore di segmentazione" o "indice fuori intervallo").
- Se il runtime di una lingua non termina dopo un errore, ma segnala l'errore in qualche modo all'utente, si tratta di un errore valido.
- Se una lingua non discrimina i messaggi di errore ma ha un elenco noto di motivi che causano errori, è necessario specificare il motivo, non il messaggio di errore.
Un esempio è><>
, che ha un solo messaggio di erroresomething smells fishy...
, ma la pagina wiki di esolangs ha un elenco di motivi di errore.
- L'errore di sintassi non è consentito a meno che non sia generato chiamando
eval()
o simili. - È consentito lanciare qualcosa manualmente (tramite
throw
(JS),raise
(Python),die
(Perl) o simili), ma tutti sono considerati come un tipo di errore. - È consentito anche l'errore per comando non valido in 2D o golflang (e trattato come un tipo di errore).
Esempi
Python e Ruby
- Python:
This program errors out in Python :P
su stdout, quindi identificatore non definito - Ruby:
This program errors out in Ruby :P
su stdout, quindi indicizza fuori dai limiti
C89 e C99
- C89:
This program errors out in C 89 :P
a stdout, quindi divisione per zero - C99:
This program errors out in C 99 :P
su stdout, quindi errore di segmentazione
Si noti che il numero di versione deve essere sempre separato dal nome della lingua da uno spazio.
Python 2.7.9 e Python 2.7.10
- Python 2.7.9:
This program errors out in Python 2.7.9 :P
su stdout, quindi errore di sintassi su eval - Python 2.7.10:
This program errors out in Python 2.7.10 :P
su stdout, quindi errore chiave su dict
Perl e Perl -n
- Perl:
This program errors out in Perl :P
su stdout, quindi formato orario non valido - Perl
-n
:This program errors out in Perl -n :P
su stdout, quindi prova ad aprire un file che non esiste
Condizioni vincenti
Questo è code-golf , quindi vince il codice più breve in byte. Ma sei sempre incoraggiato a pubblicare una risposta divertente o interessante anche se non molto breve.
This program errors out in ...
contenere tab / spazi misti anziché solo spazi?