Найти в Дзене
МЫСЛИ В ПУТИ

А ВЫ ЗНАЕТЕ ЧТО ТАКОЕ БАГОЛОГИЯ?

Оглавление

Багология (bugology) - наука, изучающая программные ошибки.

Не путать с еще одной багологией (bagology) - наукой о женских сумочках!

Теория ошибок

Некоторые общие вводные:

Определение: Будем называть языком ошибок правила, в обход которых пишутся программы.

Аксиома: Ошибки так же неисчерпаемы, как и атом.

Требовать и эффективности, и гибкости от одной и той же программы - всё равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чём-то одном из двух.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство.
Выдавать глобальные идеи - это удовольствие; искать отвратительные маленькие ошибки - вот настоящая работа.
Как только проект окончательно принят, он становится устаревшим в смысле своих концепций.
Настойчивость руководителя может определить график выполнения задания, но не в состоянии определить срок его действительного завершения.
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование.
Пользователь не знает, чего он хочет, пока не увидит то, что он получил.
На пустом диске можно искать вечно.
Если отладка - процесс удаления ошибок, то программирование должно быть процессом их внесения.
Компьютеры бесподобны: за несколько минут они могут совершить такую грандиозную ошибку, какую не в состоянии сделать множество людей за многие месяцы.

Аксиома: В любой программе есть ошибки.

Закон пропорциональности: Чем более программа необходима, тем больше в ней ошибок.

Следствие: Ошибок не содержит лишь совершенно ненужная программа.

Фундаментальный закон теории ошибок: На ошибках учатся.

Следствие 1: Программист, написавший программу, становится ученым.

Следствие 2: Чем больше программист делает ошибок, тем быстрее он становится ученым.

Следствие 3: Крупный ученый-программист никогда не пишет правильные программы.

Замечание: На то он и ученый.

Указание начинающему программисту: Если вы с первого раза сумели написать программу, в которой транслятор не обнаружил ни одной ошибки, сообщите об этом системному программисту. Он исправит ошибки в трансляторе.

Закон находимости ошибок: Программист может обнаружить ошибку только в чужой программе.

Следствие: Ошибке не все равно, кто ее обнаружит.

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

Принцип матёрого программиста: Ошибка? Это не ошибка, это системная функция.

Свойство четности ошибок. Если написанная программа сработала правильно, то это значит, что во время ее работы выполнилось четное число ошибок или программист не понял задания.

Следствие. Чтобы получать правильные результаты, следует в каждой ветви программы предусмотреть четное число ошибок.

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

Определение глобальности ошибок.Ошибка называется глобальной, если поглощает все локальные по отношению к ней ошибки.

Закон экономии ошибок.Чем более глобальную ошибку вы допустите, тем меньше будет общее число действующих ошибок.

Язык ошибок

  • Ошибки могут следовать друг за другом.
  • Ошибки могут следовать друг за другом. От перестановки двух эквивалентных ошибок результат не меняется (коммутативность эквивалентных ошибок).
  • Две последовательные ошибки можно объединить в одну, более сильную.
  • Не любую сильную ошибку можно разбить на две более слабых.
  • Некоторые ошибки сами могут содержать ошибки (не путать с четными ошибками). В такие минуты у неопытного программиста может сложиться впечатление, что его программа работает правильно. Опытные программисты активно используют такие моменты во время приемо-сдаточных испытаний.
  • Неделимая ошибка называется устранимой. Установить, что ошибка неделима невозможно.
  • Одинаковые ошибки необязательно делать каждый раз, достаточно сделать одну, а затем лишь обращаться к ней по мере необходимости из любого места программы.
  • Ошибки допускают многократное вложение друг в друга.
    Две одинаковые вложенные ошибки называются четной ошибкой и ошибкой не являются.
  • Передача управления от одной ошибки к другой может осуществляться как по определенному условию, так и безусловно (в последнем случае ошибка называется безусловной).
  • Ошибки могут образовывать циклы. Наиболее устойчивый из них бесконечный.
  • Ошибки могут вызывать друг друга и сами себя (рекурсивность ошибок).
  • Программа, предназначенная для перевода программ с языка высокого уровня на машинный язык, при переводе порождает ошибки. Ошибки, которые содержались в исходном описании, переводятся безошибочно.
  • Ошибки могут размножаться. Невероятно, но некоторые ошибки могут исчезать. К счастью - ненадолго.
  • Заключительный совет тем, кто до него добрался: До начала работы над проектом следует тщательно продумать все необходимые ошибки и связи между ними. Это значительно упростит работу над ошибками в самом проекте.

Поддержите канал

Если вам понравилось - подпишитесь, чтобы не пропустить самое интересное и поддержите статью лайком 👍

Вам не сложно, а мне будет приятно! Спасибо.