Inspirado por eu não sou o idioma que você está procurando!
Desafio
Escolha duas linguagens de programação diferentes e escreva um programa que imprima a seguinte linha em stdout (ou equivalente):
This program errors out in <the current language> :P
e, em seguida, gera um tipo diferente de erro em cada um dos dois idiomas.
Regras
Algumas regras são retiradas do desafio original.
- Na saída, os nomes dos idiomas devem seguir exatamente:
- O nome listado no TIO , opcionalmente excluindo o número da versão e / ou o nome da implementação (por exemplo, se você usar
JavaScript (Node.js)
como um dos seus idiomas, poderá usarJavaScript
o nome do seu idioma, mas nãoJS
ouJavascript
.) - O nome completo no site oficial (ou repositório do GitHub) se o seu idioma de escolha não estiver disponível no TIO.
- O nome listado no TIO , opcionalmente excluindo o número da versão e / ou o nome da implementação (por exemplo, se você usar
- Nenhum dos programas deve receber nenhuma entrada do usuário.
- Você pode usar comentários em qualquer idioma.
- Duas versões diferentes do mesmo idioma contam como idiomas diferentes.
- Se isso for feito, o programa deverá emitir o número da versão principal e, se estiver executando em duas versões secundárias diferentes, também deverá reportar a versão secundária.
- Você não deve usar funções de versão pré-construídas (isso inclui variáveis que já foram avaliadas em tempo de execução).
- Dois sinalizadores de linha de comando diferentes no mesmo idioma também contam como idiomas diferentes, conforme este meta consenso , desde que os sinalizadores não incluam fragmentos de código (como
-Dblahblah...
em C).- Se isso for feito, o programa também deve exibir a bandeira usada.
- Dois erros são considerados diferentes, a menos que ambos sejam gerados pela mesma semântica (como "divisão por zero", "falha de segmentação" ou "índice fora do intervalo").
- Se o tempo de execução de um idioma não sair após um erro, mas relatar o erro de alguma forma ao usuário, é um erro válido.
- Se um idioma não discrimina as mensagens de erro, mas possui uma lista conhecida dos motivos que causam o erro, você deve especificar o motivo, não a mensagem de erro.
Um exemplo é><>
, que possui apenas uma mensagem de errosomething smells fishy...
, mas a página wiki do esolangs possui uma lista de motivos de erro.
- O erro de sintaxe não é permitido, a menos que seja gerado por chamada
eval()
ou similar. - Lançar algo manualmente (via
throw
(JS),raise
(Python),die
(Perl) ou similar) é permitido, mas todos eles são considerados como um tipo de erro. - O erro por comando inválido em 2D ou golflangs também é permitido (e tratado como um tipo de erro).
Exemplos
Python e Ruby
- Python:
This program errors out in Python :P
para stdout, identificador indefinido - Ruby:
This program errors out in Ruby :P
para stdout, depois indexe fora dos limites
C89 e C99
- C89:
This program errors out in C 89 :P
para stdout, depois divisão por zero - C99:
This program errors out in C 99 :P
para stdout, falha de segmentação
Observe que o número da versão sempre deve ser separado do nome do idioma por um espaço.
Python 2.7.9 e Python 2.7.10
- Python 2.7.9:
This program errors out in Python 2.7.9 :P
para stdout e erro de sintaxe no eval - Python 2.7.10:
This program errors out in Python 2.7.10 :P
para stdout, erro de chave no dict
Perl e Perl -n
- Perl:
This program errors out in Perl :P
para stdout, formato de hora inválido - Perl
-n
:This program errors out in Perl -n :P
para stdout, tente abrir um arquivo que não existe
Condição vencedora
Isso é código-golfe , então o código mais curto em bytes vence. Mas você sempre é incentivado a postar uma resposta que seja divertida ou interessante, mesmo que não seja muito curta.
This program errors out in ...
conter tabulações / espaços mistos em vez de apenas espaços?