Popoff
popoff.donetsk.ua
Какой скрипт на языке PHP можно назвать "бредом"?
Тут возник вопрос о том, является ли приведенный пример скрипта бредом. Одни говорили, что это бред, я же позволил себе соменваться в бредовости скрипта, видя в поведении этого скрипта логичность. Дабы не возникало недоразумений по поводу того, какую программу относить к бредовой, предлагаю формализовать процедуру определения бредовости скрипта на PHP и ввести определение термина "бред".
Черновой вариант определения:
БРЕД - это скрипт на PHP, который удовлетворяет хотя бы одному любому условию:
1. скрипт не выполняется корректно (выдает какую бы то ни было ошибку, предупреждение или notice) в последней актуальной версии интерпретатора PHP
2. можно придумать пример исходных данных, на котором скрипт выдаст не ожидаемый результат
3. можно придумать пример исходных данных, на котором кроме ожидаемого действия скрипт выполнит хотя бы одно любое другое, не ожидаемое действие
4. можно придумать пример исходных данных, на котором скрипт не отработает корректно (выдаст какую бы то ни было ошибку, предупреждение или notice) в последней актуальной версии интерпретатора PHP
5. в скрипте использованы недокументированные возможности интерпретатора PHP
6. Стиль написания скрипта гипотетически может привести к появлению ошибок (не ожидаемый результат, не ожидаемое дополнительное действие или некорректная отработка) при его использовании в составе других скриптов; использование такого скрипта требует дополнительной концентрации внимания на том, как этот скрипт следует использовать, что бы ошибки не возникали; можно придумать другой скрипт, функционально идентичный исследуемому, при использовании которого потребуется меньшая концентрация внимания на деталях его использования.
Справедливости ради следует указать на возможные сложности при определении бредовости скрипта:
1. вроде, не видно
2,3,4. Если придумать такой пример, то бредовость скрипта доказана. Но, поскольку часто этот пример оказавается нетривиальным, может возникнуть желание исходить из того, что по умолчанию такого примера нет. В таком случае не понятно, относить ли к бреду те скрипты, для которых такой пример есть, но придумать его не удается.
5. Можно легко показать, что в документации что-то написано. Показать же, что в ней что-то НЕ написано не так-то просто: искомое может быть написано в другом месте, в которое мы не посмотрели. В таком случае не понятно, относить ли к бреду те скрипты, в которых использованы возможности, эти возможности в документации описаны, но найти это описание не удается?
6. Если привести пример скрипта, который функционально идентичен исследуемому и при использовании которого требуется меньшая концентрация внимания, то бредовость исследуемого скрипта доказана. Однако, как и в предыдущих двух случаях, этот скрипт может оказаться не столь тривиальным, и тогда не понятно, относить ли к бредовым те скрипты, для которых существуют более "хорошие" функционально идентичные варианты, но ни один вариант не удается придумать. Кроме того, не понятно, как определить, что в одном случае требуется меньшая "концентрация внимания", чем в другом.
Тут возник вопрос о том, является ли приведенный пример скрипта бредом. Одни говорили, что это бред, я же позволил себе соменваться в бредовости скрипта, видя в поведении этого скрипта логичность. Дабы не возникало недоразумений по поводу того, какую программу относить к бредовой, предлагаю формализовать процедуру определения бредовости скрипта на PHP и ввести определение термина "бред".
Черновой вариант определения:
БРЕД - это скрипт на PHP, который удовлетворяет хотя бы одному любому условию:
1. скрипт не выполняется корректно (выдает какую бы то ни было ошибку, предупреждение или notice) в последней актуальной версии интерпретатора PHP
2. можно придумать пример исходных данных, на котором скрипт выдаст не ожидаемый результат
3. можно придумать пример исходных данных, на котором кроме ожидаемого действия скрипт выполнит хотя бы одно любое другое, не ожидаемое действие
4. можно придумать пример исходных данных, на котором скрипт не отработает корректно (выдаст какую бы то ни было ошибку, предупреждение или notice) в последней актуальной версии интерпретатора PHP
5. в скрипте использованы недокументированные возможности интерпретатора PHP
6. Стиль написания скрипта гипотетически может привести к появлению ошибок (не ожидаемый результат, не ожидаемое дополнительное действие или некорректная отработка) при его использовании в составе других скриптов; использование такого скрипта требует дополнительной концентрации внимания на том, как этот скрипт следует использовать, что бы ошибки не возникали; можно придумать другой скрипт, функционально идентичный исследуемому, при использовании которого потребуется меньшая концентрация внимания на деталях его использования.
Справедливости ради следует указать на возможные сложности при определении бредовости скрипта:
1. вроде, не видно
2,3,4. Если придумать такой пример, то бредовость скрипта доказана. Но, поскольку часто этот пример оказавается нетривиальным, может возникнуть желание исходить из того, что по умолчанию такого примера нет. В таком случае не понятно, относить ли к бреду те скрипты, для которых такой пример есть, но придумать его не удается.
5. Можно легко показать, что в документации что-то написано. Показать же, что в ней что-то НЕ написано не так-то просто: искомое может быть написано в другом месте, в которое мы не посмотрели. В таком случае не понятно, относить ли к бреду те скрипты, в которых использованы возможности, эти возможности в документации описаны, но найти это описание не удается?
6. Если привести пример скрипта, который функционально идентичен исследуемому и при использовании которого требуется меньшая концентрация внимания, то бредовость исследуемого скрипта доказана. Однако, как и в предыдущих двух случаях, этот скрипт может оказаться не столь тривиальным, и тогда не понятно, относить ли к бредовым те скрипты, для которых существуют более "хорошие" функционально идентичные варианты, но ни один вариант не удается придумать. Кроме того, не понятно, как определить, что в одном случае требуется меньшая "концентрация внимания", чем в другом.