Вдохновленный я не тот язык, который вы ищете!
Вызов
Выберите два разных языка программирования и напишите программу, которая выводит следующую строку в стандартный вывод (или эквивалентный):
This program errors out in <the current language> :P
а затем генерирует различные виды ошибок в каждом из двух языков.
правила
Некоторые правила взяты из оригинальной задачи.
- В выводе должны точно следовать названия языков:
- Имя, указанное в TIO , возможно, за исключением номера версии и / или имени реализации (например, если вы используете
JavaScript (Node.js)
один из ваших языков, вы можете использовать егоJavaScript
для названия языка, но неJS
илиJavascript
.) - Полное имя на официальном сайте (или GitHub Repo), если ваш язык не доступен на TIO.
- Имя, указанное в TIO , возможно, за исключением номера версии и / или имени реализации (например, если вы используете
- Ни одна из программ не должна принимать никаких данных от пользователя.
- Вы можете использовать комментарии на любом языке.
- Две разные версии одного и того же языка считаются разными языками.
- Если это сделано, программа должна вывести основной номер версии, а если она запущена на двух разных второстепенных версиях, должна также сообщить младшую версию.
- Вы не должны использовать встроенные функции версии (это включает переменные, которые уже были оценены во время выполнения).
- Два разных флага командной строки на одном и том же языке также считаются разными языками в соответствии с этим мета-консенсусом , если флаги не включают фрагменты кода (например,
-Dblahblah...
в C).- Если это сделано, программа также должна вывести используемый флаг.
- Две ошибки считаются разными, если только обе ошибки не генерируются одной и той же семантикой (например, «деление на ноль», «ошибка сегментации» или «индекс вне диапазона»).
- Если среда выполнения языка не завершается после ошибки, но каким-то образом сообщает об ошибке пользователю, это допустимая ошибка.
- Если язык не различает сообщения об ошибках, но имеет известный список причин, которые вызывают ошибку, вы должны указать причину, а не сообщение об ошибке.
Примером может служить><>
только одно сообщение об ошибкеsomething smells fishy...
, но на вики-странице esolangs есть список причин ошибок.
- Синтаксическая ошибка не допускается, если она не генерируется вызовом
eval()
или подобным. - Бросать что-то вручную (через
throw
(JS),raise
(Python),die
(Perl) или подобное) разрешено, но все они рассматриваются как один вид ошибки. - Ошибка недопустимой команды в 2D или golflangs также допускается (и рассматривается как один из видов ошибок).
Примеры
Python и Ruby
- Python:
This program errors out in Python :P
в стандартный вывод, затем неопределенный идентификатор - Ruby:
This program errors out in Ruby :P
в стандартный вывод, затем индексировать за пределы
С89 и С99
- C89:
This program errors out in C 89 :P
в стандартный вывод, затем деление на ноль - C99:
This program errors out in C 99 :P
в стандартный вывод, затем ошибка сегментации
Обратите внимание, что номер версии всегда должен быть отделен от имени языка пробелом.
Python 2.7.9 и Python 2.7.10
- Python 2.7.9:
This program errors out in Python 2.7.9 :P
в стандартный вывод, затем синтаксическая ошибка на eval - Python 2.7.10:
This program errors out in Python 2.7.10 :P
в стандартный вывод, затем ключевая ошибка в dict
Perl и Perl -n
- Perl:
This program errors out in Perl :P
в стандартный вывод, затем неверный формат времени - Perl
-n
:This program errors out in Perl -n :P
в стандартный вывод, затем попробуйте открыть файл, который не существует
Выигрышное условие
Это код-гольф , поэтому выигрывает самый короткий код в байтах. Но вы всегда можете опубликовать ответ, который будет веселым или интересным, даже если он не очень короткий.
This program errors out in ...
содержать смешанные табуляции / пробелы вместо просто пробелов?