amarao (amarao_san) wrote,
amarao
amarao_san

Category:

Качественная разница между программой и скриптом

Хорошо написанная программа правильно (семантически) обрабатывает ошибки. Если ей в кофиге написали "х.." вместо запятой, то она не только пишет "unknown state" для state machine конфига, но ещё и объясняет, что из этого вытекает. Мол, "у конфига неправильный формат". Если программа гуманная, то она ещё и напишет имя файла конфига. А если гуманный программист, то она не просто напишет "неправильный формат", но и покажет на первое место, в котором "всё сломалось". Аналогично обрабатываются и остальные ошибки. Вместо ENOENT нам объяснят, что не получилось сделать на языке предметной области. Например, "температурный датчик не доступен".

Скрипт же, наоборот, предусматривает обработку ошибок по-умолчанию cat /etc/foo|do|mangle >save если нет /etc/foo, покажет общее сообщение, не объясняя, что такое foo. Если у do что-то не получится, то оно либо ничего не скажет (кроме кода возврата), либо напишет что-то своё.

Предполагается, что пользователь скрипта оперирует той же семантической моделью, что и автор этого скрипта. Они вместе понимают, что нет "температурного датчика", а есть /dev/sensors/thermal/3, что есть сокеты, pipe'ы и т.д. Если кто-то для удобства пользователя скрипта скроет "отладочную информацию", то это вызовет раздражение.

Наоборот, если программист для программы ошибку не обработает, а отдаст пользователю невнятный трейс на три страницы, то это вызовет такое же раздражение.

Соответственно, скрипт, который начинает обрабатывать ошибки - это уже программа. Программа, которая ошибки не обрабатывает - скрипт. При этом размер мало на что-то влияет, ключевым тут является вопрос, в одной ли семантической модели находится пользователь и программа/скрипт.
Tags: программирование
Subscribe

  • Админская мудрость

    Когда вывод strace на башовый скрипт становится понятнее самого скрипта, граница разумности давно пройдена.

  • Rules of internet

    Rule 34. There is porn of it. Rule 35. It's used to mine cryptocurrencies.

  • CI без сервера

    А вот у меня есть такой запрос: я хочу иметь CI-подобный инструмент (задачи/автоматически вычисляемые зависимости порядка выполнения, параметры,…

  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 1 comment