Zainspirowany nie jestem językiem, którego szukasz!
Wyzwanie
Wybierz dwa różne języki programowania i napisz program, który wypisze następującą linię na standardowe wyjście (lub równoważne):
This program errors out in <the current language> :P
a następnie generuje inny rodzaj błędu w każdym z dwóch języków.
Zasady
Niektóre zasady pochodzą z oryginalnego wyzwania.
- W danych wyjściowych nazwy języków powinny dokładnie następować:
- Nazwa wymieniona w TIO , opcjonalnie z wyłączeniem numeru wersji i / lub nazwy implementacji (np. Jeśli używasz
JavaScript (Node.js)
jednego z języków, możesz użyćJavaScript
nazwy swojego języka, ale nieJS
lubJavascript
.) - Pełna nazwa na oficjalnej stronie internetowej (lub repozytorium GitHub), jeśli Twój wybrany język nie jest dostępny w TIO.
- Nazwa wymieniona w TIO , opcjonalnie z wyłączeniem numeru wersji i / lub nazwy implementacji (np. Jeśli używasz
- Żaden program nie powinien pobierać żadnych danych wejściowych od użytkownika.
- Możesz używać komentarzy w dowolnym języku.
- Dwie różne wersje tego samego języka liczą się jako różne języki.
- Jeśli tak się stanie, program powinien wypisać numer wersji głównej, a jeśli działa na dwóch różnych wersjach podrzędnych, powinien również zgłosić wersję podrzędną.
- Nie należy używać wstępnie wbudowanych funkcji wersji (obejmuje to zmienne, które zostały już ocenione w czasie wykonywania).
- Dwie różne flagi wiersza poleceń w tym samym języku również liczą się jako różne języki zgodnie z tym meta konsensusem , o ile flagi nie zawierają fragmentów kodu (takich jak
-Dblahblah...
w C).- Jeśli tak się stanie, program powinien również wypisać używaną flagę.
- Dwa błędy są uważane za różne, chyba że oba błędy są generowane przez tę samą semantykę (takie jak „dzielenie przez zero”, „błąd segmentacji” lub „indeks poza zakresem”).
- Jeśli środowisko wykonawcze języka nie kończy działania po błędzie, ale w jakiś sposób zgłasza błąd użytkownikowi, jest to prawidłowy błąd.
- Jeśli język nie dyskryminuje komunikatów o błędach, ale ma znaną listę przyczyn, które powodują błąd, musisz podać przyczynę, a nie komunikat o błędzie.
Przykładem może być><>
tylko jeden komunikat o błędziesomething smells fishy...
, ale strona wiki esolangs ma listę przyczyn błędów.
- Błąd składniowy jest niedozwolony, chyba że zostanie wygenerowany przez wywołanie
eval()
lub w podobny sposób. - Rzucanie czymś ręcznie (przez
throw
(JS),raise
(Python),die
(Perl) lub podobny) jest dozwolone, ale wszystkie są uważane za jeden rodzaj błędu. - Błąd przez nieprawidłowe polecenie w 2D lub golflangs jest również dozwolony (i traktowany jako jeden rodzaj błędu).
Przykłady
Python i Ruby
- Pyton:
This program errors out in Python :P
do standardowego, a następnie niezdefiniowanego identyfikatora - Ruby:
This program errors out in Ruby :P
na standardowe wyjście, a następnie indeksuj poza granicami
C89 i C99
- C89:
This program errors out in C 89 :P
na standardowe wyjście, a następnie dzielenie przez zero - C99:
This program errors out in C 99 :P
do standardowego, a następnie do błędu segmentacji
Należy pamiętać, że numer wersji powinien zawsze być oddzielony od nazwy języka spacją.
Python 2.7.9 i Python 2.7.10
- Python 2.7.9:
This program errors out in Python 2.7.9 :P
na standardowe wyjście, a następnie błąd składniowy na eval - Python 2.7.10:
This program errors out in Python 2.7.10 :P
na standardowe wyjście, a następnie błąd klucza podczas dyktafonu
Perl i Perl -n
- Perl:
This program errors out in Perl :P
do standardowego, a następnie nieprawidłowego formatu czasu - Perl
-n
:This program errors out in Perl -n :P
na standardowe wyjście, a następnie spróbuj otworzyć plik, który nie istnieje
Warunki wygranej
To jest golf golfowy , więc wygrywa najkrótszy kod w bajtach. Ale zawsze zachęcamy Cię do opublikowania odpowiedzi, która jest zabawna lub interesująca, nawet jeśli nie jest bardzo krótka.
This program errors out in ...
zawierać mieszane tabulatory / spacje zamiast spacji?