|
2 | 2 | [//]: # (Version:1.0.0)
|
3 | 3 | Отладка это краеугольный камень профессии программиста. Основное значение слова "debug" это "устранять ошибки", но значение, которое имеет реальный вес, это "видеть, как исполняется программа, изучая ее код". Программист, который не умеет эффективно отлаживать, слеп.
|
4 | 4 |
|
5 |
| -Те идеалисты, которые считают, что дизайн, анализ, теория сложности вычислений и подобное более фундаментальны, чем отладка, не являются работающими программистами. Работающий программист не живет в идеальном мире. Даже если вы идеальны, вы окружены и вынуждены работать с кодом, который написан в больших корпорациях, организациях вроде GNU и вашими коллегами. Большая часть этого кода неидеальна, и она неидеально задокументирована. Без способности видеть исполнение этого кода, малейшее несоответствие выбьет вас из колеи. Часто увидеть это можно только с помощью эксперимента, то есть, отладки. |
| 5 | +Те идеалисты, которые считают, что дизайн, анализ, теория сложности вычислений и подобное более фундаментальны, чем отладка, вряд ли являются работающими программистами. Работающий программист не живет в идеальном мире. Даже если вы идеальны, вы окружены и вынуждены работать с кодом, который написан в больших корпорациях, организациях вроде GNU и вашими коллегами. Большая часть этого кода неидеальна, и она неидеально задокументирована. Без способности видеть исполнение этого кода, малейший баг выбьет вас из колеи. Часто увидеть исполнение можно только с помощью эксперимента, то есть, отладки. |
6 | 6 |
|
7 |
| -Отладка больше занимается исполнением программ, чем самими программами. Если вы купите программное обеспечение от большой компании, то обычно вам не доведется увидеть сам код. Но все равно будут возникать моменты, когда программа не соответствует документации, либо документация просто ничего не говорит о конкретном поведении программы. Распространенный и яркий пример: сбой всей операционной системы во время работы. Обычно вы при работе создаете ошибку, изучаете собственный код и понятия не имеете, откуда возникла ошибка. Неизбежно это ведет к мысли о том, что вы делаете что-то не то, либо возникает некое обстоятельство, которое вы не учитываете в программе. Иногда трюк с изучением исходного кода помогает. Иногда нет, и тогда вы должны перейти к отладке. |
| 7 | +Отладка больше касается исполнения программ, чем самих программ. Если вы купите программное обеспечение от большой компании, то как правило вам не доведется увидеть сам код. Но все равно будут моменты, когда программа не соответствует документации, либо документация просто ничего не говорит о конкретном поведении программы. Распространенный и яркий пример: сбой всей операционной системы во время работы. Обычно вы при работе создаете баг, изучаете собственный код и понятия не имеете, как он возник. Неизбежно это ведет к мысли о том, что вы делаете что-то не то, либо возникает некое обстоятельство, которое вы не учитываете в программе. Иногда трюк с изучением исходного кода помогает. Иногда нет, и тогда вы должны перейти к отладке. |
8 | 8 |
|
9 |
| -Чтобы понять, как исполняется программа, вы должны иметь возможность запустить ее и наблюдать ход исполнения. Иногда ошибка видна визуально, например, если она отображается на экране или между событиями в программе очевидна непредусмотренная задержка. Во многих других случаях, ошибка связана с факторами, которые нельзя наблюдать непосредственно, например, с состоянием переменных, конкретными строками кода, исполняющиеся в данный момент, либо с утверждениями внутри сложной структуры данных. Эти скрытые факторы надо выяснить. |
| 9 | +Чтобы понять, как исполняется программа, вы должны иметь возможность запустить ее и наблюдать ход исполнения. Иногда баг виден визуально, например, если он отображается на экране или между событиями в программе очевидна непредусмотренная задержка. Во многих других случаях, баг связан с факторами, которые нельзя наблюдать непосредственно, например, с состоянием переменных, конкретными строками кода, исполняющиеся в данный момент, либо с утверждениями внутри сложной структуры данных. Эти скрытые факторы надо выяснить. |
10 | 10 |
|
11 | 11 | Распространенные методы изучения "внутренностей" программы можно поделить на:
|
12 | 12 |
|
13 |
| -- Использование отладчика, |
14 |
| -- Printlining --- внесение временных модификаций в программу, обычно выводящих информацию о ее текущем состоянии, |
15 |
| -- Логирование --- создание постоянного интерфейса, который выводит ход исполнения программы в виде отчета. |
| 13 | +- Использование отладчика |
| 14 | +- Вывод в консоль - внесение временных модификаций в программу, обычно выводящих информацию о ее текущем состоянии |
| 15 | +- Логирование - создание постоянного интерфейса, который выводит ход исполнения программы в виде отчета |
16 | 16 |
|
17 |
| -Отладчики это прекрасное средство, когда они стабильны и доступны, но printlining и логирование гораздо важнее. Отладчики часто отстают от развития языков программирования, так что они могут быть доступны не в каждый момент времени. К тому же, некоторые отладчики могут незначительно изменять ход исполнения программы, поэтому применять их в этих случаях непрактично. Наконец, существуют виды отладки, такие как проверка утверждений в большой структуре данных, которые требуют написания нового кода и изменения хода исполнения программы. Таким образом, это важно знать, как пользоваться отладчиками, когда они доступны, но критично важно уметь использовать два оставшихся метода отладки. |
| 17 | +Отладчики это прекрасное средство, когда они стабильны и доступны, но вывод в консоль и логирование гораздо важнее. Отладчики часто отстают от развития языков программирования, так что они могут быть доступны не в каждый момент времени. К тому же, некоторые отладчики могут незначительно изменять ход исполнения программы, поэтому применять их в этих случаях непрактично. Наконец, существуют виды отладки, такие как проверка утверждений в большой структуре данных, которые требуют написания нового кода и изменения хода исполнения программы. Так что важно знать, как пользоваться отладчиками, когда они доступны, но критично важно уметь использовать два оставшихся метода. |
18 | 18 |
|
19 |
| -Некоторые начинающие программиста боятся отладки, если та требует изменения кода. Это можно понять, это немного похоже на вскрытие с исследовательскими целями. Но вы должны научиться тыкать и дергать свой код, экспериментировать с ним и понимать, что ничего из того, что вы временно делаете с ним, не сделает его хуже. Если у вас есть такой страх, найдите наставника. Мы теряем множество хороших программистов в самом начале их обучения из-за этого страха. |
| 19 | +Некоторые начинающие программиста боятся отладки, если та требует изменения кода. Это можно понять, ведь это немного похоже на вскрытие с исследовательскими целями. Но вы должны научиться вызывать свой код, экспериментировать с ним и понимать, что ничего из того, что вы временно делаете с ним, не сделает его хуже. Если у вас есть такой страх, найдите наставника. Мы теряем множество хороших программистов в самом начале их обучения из-за этого страха. |
20 | 20 |
|
21 | 21 | Следующее: [Как отлаживать, разделяя пространство проблемы](02-How-to-Debug-by-Splitting-the-Problem-Space.md)
|
0 commit comments