¡Inspirado por no soy el idioma que estás buscando!
Reto
Elija dos lenguajes de programación diferentes y escriba un programa que imprima la siguiente línea en stdout (o equivalente):
This program errors out in <the current language> :P
y luego genera diferentes tipos de error en cada uno de los dos idiomas.
Reglas
Algunas reglas se toman del desafío original.
- En la salida, los nombres de los idiomas deben seguir exactamente:
- El nombre que figura en TIO , excluyendo opcionalmente el número de versión y / o el nombre de implementación (por ejemplo, si lo usa
JavaScript (Node.js)
como uno de sus idiomas, puede usarloJavaScript
para su nombre de idioma, pero noJS
oJavascript
). - El nombre completo en el sitio web oficial (o repositorio de GitHub) si su idioma de elección no está disponible en TIO.
- El nombre que figura en TIO , excluyendo opcionalmente el número de versión y / o el nombre de implementación (por ejemplo, si lo usa
- Ninguno de los programas debe recibir ninguna entrada del usuario.
- Puede usar comentarios en cualquier idioma.
- Dos versiones diferentes del mismo idioma cuentan como idiomas diferentes.
- Si se hace esto, el programa debería generar el número de versión principal y, si se ejecuta en dos versiones menores diferentes, también debería informar la versión menor.
- No debe usar funciones de versión preconstruidas (esto incluye variables que ya se han evaluado en tiempo de ejecución).
- Dos banderas de línea de comando diferentes en el mismo idioma también cuentan como idiomas diferentes según este meta consenso , siempre que las banderas no incluyan fragmentos de código (como
-Dblahblah...
en C).- Si se hace esto, el programa también debería generar la bandera utilizada.
- Dos errores se consideran diferentes a menos que ambos errores sean generados por la misma semántica (como "división por cero", "falla de segmentación" o "índice fuera de rango").
- Si el tiempo de ejecución de un idioma no se cierra después de un error, pero informa el error de alguna manera al usuario, es un error válido.
- Si un idioma no discrimina los mensajes de error pero tiene una lista conocida de los motivos que causan el error, debe especificar el motivo, no el mensaje de error.
Un ejemplo es><>
, que tiene un solo mensaje de errorsomething smells fishy...
, pero la página wiki de esolangs tiene una lista de razones de error.
- El error de sintaxis no está permitido a menos que se genere mediante una llamada
eval()
o similar. - Lanzar algo manualmente (a través de
throw
(JS),raise
(Python),die
(Perl) o similar) está permitido, pero todos se consideran un tipo de error. - También se permite el error por comando no válido en 2D o golflangs (y se trata como un tipo de error).
Ejemplos
Python y Ruby
- Python:
This program errors out in Python :P
a stdout, luego identificador indefinido - Ruby:
This program errors out in Ruby :P
para stdout, luego indexar fuera de límites
C89 y C99
- C89:
This program errors out in C 89 :P
a stdout, luego división por cero - C99:
This program errors out in C 99 :P
a stdout, luego falla de segmentación
Tenga en cuenta que el número de versión siempre debe estar separado del nombre del idioma por un espacio.
Python 2.7.9 y Python 2.7.10
- Python 2.7.9:
This program errors out in Python 2.7.9 :P
a stdout, luego error de sintaxis en eval - Python 2.7.10:
This program errors out in Python 2.7.10 :P
a stdout, luego error clave en dict
Perl y Perl -n
- Perl:
This program errors out in Perl :P
a stdout, luego formato de hora no válido - Perl
-n
:This program errors out in Perl -n :P
para stdout, luego intente abrir un archivo que no existe
Condición ganadora
Este es el código de golf , por lo que gana el código más corto en bytes. Pero siempre se le anima a publicar una respuesta que sea divertida o interesante, incluso si no es muy corta.
This program errors out in ...
contener tabulaciones / espacios mixtos en lugar de solo espacios?