Как экспериментировать
Великий Эдсгер Дейкстра красноречиво объяснил, что информатика не является экспериментальной наукой[ExpCS] и не зависит от электронных устройств. Как он выразился в 1960-е годы [Knife]:
...произошло худшее: предмет стал известен как “computer science”, что, собственно говоря, то же самое, что называть хирургию “knife science”. И в сознании людей прочно укоренилось, что “computer science” - это наука о машинах и периферийном оборудовании.
Программирование может и не быть экспериментальной наукой, но у большинства программистов нет возможности заниматься тем, что Дейкстра определил как “computer science”. Мы должны работать в области эксперимента подобно некоторым (но не всем) физикам. Если спустя 30 лет можно будет заниматься программированием без экспериментирования, то это будет великим достижением информатики.
Эксперименты, которые вам придется заниматься, включают:
Тестирование систем на небольших примерах данных, чтобы убедиться в их соответствии документации, либо, чтобы понять их ответы, если документации нет
Тестирование небольших изменений в коде, чтобы удостовериться, что они устраняют баг в программе
Измерение производительности системы в двух различных окружениях из-за несовершенства знаний о их характеристиках производительности
Проверка целостности данных
Сбор статистики, которая может помочь в разрешении сложных и трудновоспроизводимых багов
Я не думаю, что в этом эссе я смогу объяснить, как проектировать эксперименты. Вам придется научиться этому самостоятельно и практиковаться. Я могу предложить два небольших совета.
Первое: старайтесь четко обозначать свои исходные предположения или утверждения, которые вы собираетесь проверить. Очень полезно записывать их, особенно, если вы работаете в коллективе.
Часто вам придется проектировать серию экспериментов, каждый из которых опирается на знания, полученные в результате предыдущего. Таким образом, следует проектировать эксперименты так, чтобы получать как можно больше информации. К сожалению, это противоречит принципу простоты экспериментов. Вам придется развивать свою экспертизу в этой области самостоятельно.
Last updated