teamat (teamat) wrote,
teamat
teamat

Отладка. Несколько советов.

Контр-адмирал ВМС США и один из авторов языка COBOL, покойная Грейс Хоппер, утверждала, что слово “bug” появилось в программировании во время первого крупного цифрового компьютера – Mark I. Разбираясь с причинами неисправности компьютера, программисты нашли в нем крупного мотылька, замкнувшего какую-то цепь, и с тех пор вину за все компьютерные проблемы стали сваливать на насекомых. Вне программирования же это слово уходит корнями как минимум во времена Томаса Эдисона.
Вообще говоря, ошибки их поиск, устранение и предупреждение важная часть процесса разработки программ, которой при подготовке специалистов обычно уделяют незаслуженно мало внимания. Действительно, я не могу припомнить, что бы в каком либо из изучаемых мною учебных планов какого либо имеющего отношение к программированию факультета, какого либо вуза отдельным пунктом был бы вынесен цикл лекций о проблемах отладки, возможно и бывает пара докладов, но на этом все и ограничивается. Максимум что обычно сообщается по этому поводу – отлаживайтесь брэйк пойнтами. Однако это серьезное упущение в полноте читаемых курсов, в некоторый проектах отладка занимает 50% общего времени разработки. Таким образом, студент, а в последствии специалист зачастую вынужден изобретать концепции отладки заново. Ужасная трата времени и сил.
Здесь я постараюсь дать несколько дельных советов по отладке и предупреждению ошибок, надеюсь они помогут вам при случае.
Лучший способ создания качественной программы заключается в тщательной выработке требований, грамотном проектировании и кодировании. Отладка на самом деле средство крайнего случая. Вообще, о чем говорит наличие дефекта? Исходя из того, что оно нежелательно, это говорит о том, что вы не полностью понимаете программу. Все же, программа должна делать то что нужно. Если вы не до конца понимаете указания которые даете компилятору, вскоре всего вскоре начнете программировать методом проб и ошибок. В таком случае дефекты неизбежны. Вам не нужно учиться исправлять ошибки, нужно знать как их избегать. Однако люди несовершенны и даже прекрасные программисты допускают ошибки. Вы можете попробовать изучить собственные ошибки, подумать как их можно было предотвратить, содержит ли код другие такие ошибки. Следует изучить программу, над которой работаете, изучить качество своего кода, убедиться, что он удобочитаем, для другого человека, как его можно улучшить. Учитывая что на отладку уходит солидная часть времени разработки программы, время потраченное на осмысление того, удачно ли выбрана вами стратегия отладки и изменение процесса отладки может сослужить вам большую службу. Тоже самое можно сказать о самом способе исправления ошибок. Подумайте, вносите ли вы простые исправления используя частные случаи, которые устраняют в основном симптомы, но не причину, или вы совершаете системные исправления, точно определяя и устраняя причины проблем?
В своем бессмертном творении Данте отвел нижний круг ада самому Сатане. Но с тех пор кое что изменилось, сейчас Сатана делит нижний круг с программистами, не умеющими эффективно отлаживать программы. Он мучает их, заставляя отлаживать код используя популярные, но не эффективные принципы:
Например для нахождения дефектов можно разбросать по программе команды печати и изучить выходные данные. Если так выявить ошибку не удается, можно попробовать изменить тот или иной участок кода, авось что получится. Если вы точно не знаете что делает программа, программирование становится более увлекательным. Советую запастись колой и чипсами, потому что за монитором вам придется провести всю ночь.
Сатана в бесконечной своей щедрости выделили часть ада программистам, отлаживающимся опираясь на суеверия. В каждой группе есть программист, бесконечно сражающийся с демоническими компьютерами, таинственными дефектами компилятора, скрытыми дефектами языка, которые проявляются только в полнолуние, заколдованными текстовыми редакторами, которые неправильно сохраняют код… Это и есть «суеверное программирование».
Следует запомнить одну вещь. Если написанная вами программа не работает, ошибка лежит на вашей совести, а компьютер с компилятором ни в чем не виноваты.
К счастью существуют более эффективные способы отладки, чем гадание. Отладка программы основанная на размышлении о проблеме на много эффективнее чем танцы с бубном вокруг системного блока. Лучшие программисты не гадают, как исправить дефект, они используют интеллектуальный подход и научные методы.
Можно еще долго вести разговоры об отладке, это на много более глубокий вопрос чем может показаться с первого взгляда. Если кому-то интересно более подробное изучение проблемы, могу посоветовать эти книги:
- Mayers, Glenford J. “The Art of Saftware Testing”. NY: John Wiley & Sons, 1979.
Это классика жанра, одна из глав которой посвящена отладке
- Agans, David J. “Debugging: The Nine Indispensable Rules for Finding Even the Most Elusive Software and Hardware Problems.” Amacom, 2003.
В этой книге рассматриваются общие принципы отладки, независящие ни от языка, ни от среды.
Subscribe
  • Post a new comment

    Error

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