LINUX.ORG.RU

История изменений

Исправление DRVTiny, (текущая версия) :

Ошибки, связанные с несоответсвием типов, по статистике, не превышают 2% от числа возможных ошибок.

Я знаю об этом, и меня тоже удивляет, почему вся индустрия разработки так помешана на проверке типов, словно всё остальное работает просто идеально (особенно usability приложений, если они не дай Б-г должны как-либо общаться с пользователем).

Вопрос сугубо о том, что на вход приложения извне намеренно или чисто случайно могут прийти совсем не те данные, которые оно, приложение, может и должно обрабатывать. Условно: в рамках API в поле JSON'а вам прислали «Войну и мир» вместо булевой переменной. А вы пока осознали, что something went wrong - уже даже успели эту переменную пару раз скопировать, использовать как «флажок». Или вам прислали температуру по Цельсию даже ниже -273 градусов, и вы её честно попытались установить.

Проблема Perl'а в том, что все декларативные проверки для очистки taints-переменных (переменных, приезжающих извне и по умолчанию содержащих неведомый f*ng shit, пока не доказано обратное) - даются очень дорого. Хотелось бы для таких вещей хотя бы частично реализацию в коде самого интерпретатора или сторонних XS-модулей.

При этом заметьте, что если собственно забыть о taints'е, а все о нём и забывают как раз, то нет адекватных средств проверить на входе в функцию - а надо ли вообще чекать параметры или нет. А это приводит уже к полному кошмару, когда вызывается цепочка функций, в каждой из которых переменную так или иначе на что-нибудь тестируют. Или к ещё худшему кошмару, когда не тестируют нигде, и оно работает ровно до первой бажной системы на другой стороне обмена или до первого скриптикидиса (они нынче чаще не живые люди, кстати, а вполне себе AI).

Параноидальные проверки - приводят к тормозам, отсутствие проверок - приводит к непредсказуемым последствиям, когда ломается логика приложения, особенно неявная логика, построенная на оптимистичных предположениях о сущности переменных.

Perl5 предлагает слабую альтернативу в виде очистки переменных (можно хотя бы один раз их проверять, а не бесконечное количество раз). Но кто вообще об этом помнит и кто этим пользуется?

Исходная версия DRVTiny, :

Ошибки, связанные с несоответсвием типов, по статистике, не превышают 2% от числа возможных ошибок.

Я знаю об этом, и меня тоже удивляет, почему вся индустрия разработки так помешана на проверке типов, словно всё остальное работает просто идеально (особенно usability приложений, если они не дай Б-г должны как-либо общаться с пользователем).

Вопрос сугубо о том, что на вход приложения извне намеренно или чисто случайно могут прийти совсем не те данные, которые оно, приложение, может и должно обрабатывать. Условно: в рамках API в поле JSON'а вам прислали «Войну и мир» вместо булевой переменной. А вы пока осознали, что something went wrong - уже даже успели эту переменную пару раз скопировать, использовать как «флажок». Или вам прислали температуру по Цельсию даже ниже -273 градусов, и вы её честно попытались установить.

Проблема Perl'а в том, что все декларативные проверки для очистки taints-переменных (переменных, приезжающих извне и по умолчанию содержащих неведомый f*ng shit, пока не доказано обратное) - даются очень дорого. Хотелось бы для таких вещей хотя бы частично реализацию в коде самого интерпретатора или сторонних XS-модулей.

При этом заметьте, что если собственно забыть о taints'е, а все о нём и забывают как раз, то нет адекватных средств проверить на входе в функцию - а надо ли её перепроверять то, что прислали или не надо. А это приводит уже к полному кошмару, когда вызывается цепочка функций, в каждой из которых переменную так или иначе на что-нибудь тестируют. Или к ещё худшему кошмару, когда не тестируют нигде, и оно работает ровно до первой бажной системы на другой стороне обмена или до первого скриптикидиса (они нынче чаще не живые люди, кстати, а вполне себе AI).

Параноидальные проверки - приводят к тормозам, отсутствие проверок - приводит к непредсказуемым последствиям, когда ломается логика приложения, особенно неявная логика, построенная на оптимистичных предположениях о сущности переменных.

Perl5 предлагает слабую альтернативу в виде очистки переменных (можно хотя бы один раз их проверять, а не бесконечное количество раз). Но кто вообще об этом помнит и кто этим пользуется?