November 23, 2016

Критерий Поппера

Никогда не работайте с солипсистами.

Солипсизм — это такой вид личной философия, когда человек думает, что мир устроен именно так, как ему представляется, и всё крутится вокруг него. В психологии это явление называют эгоцентризмом.

Когда приходишь к программисту-солипсисту с багом он говорит:
— У меня на моей машине всё работает! или
— Я подтвердил это на нескольких машинах. Ничего не знаю.

Дизайнер-солипсист скажет:
— Думаю, приём будет работать. На моем опыте это срабатывало всегда.

Никакой тени сомнения. Голая уверенность и ориентация на подтверждения. Давайте посмотрим отчего это вредно.

Философ Карл Поппер сформулировал критерий научности, известный также как критерий Поппера. Критерий требует, чтобы научная теория или гипотеза не были принципиально неопровержимыми. Это означает, что доказать что-то можно лишь в случае, когда теоретически возможно поставить эксперимент, опровергающий высказывание или положения теории. Если такой эксперимент провести невозможно или утверждающий не удосуживается его провести, теория считается ненаучной, а высказывание не имеет научного обоснования. Так, например, теория о существовании бога является ненаучной, потому что невозможно поставить эксперимент, показывающий отсутствие бога.

Давайте разберёмся как помогает критерий Поппера на примере. Представим, что мы эксплуатируем автомобиль с системой сигнализацией, позволяющей запускать двигатель на расстоянии. Представим также, что у нас нет инструкции от автомобиля и сигнализации. Мы обнаруживаем, что после запуска двигателя удалённо, он глохнет после того как мы попадаем в автомобиль.

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

  • двигатель глохнет в какой-то момент, после того как мы попадаем в салон;
  • на брелке сигнализации есть индикатор обратного отсчета времени разогрева двигателя;
  • двигатель глохнет, когда ключ не в замке зажигания.

На основании этих наблюдений мы можем сформулировать первые гипотезы.

  1. Двигатель останавливается при отсутствующем ключе в замке зажигания по завершению обратного отсчёта, а мы обнаруживаем себя в машине как раз к тому времени.
  2. Двигатель останавливается от того, что мы производим какое-то действие с органами управления автомобилем, когда в замке зажигания нет ключа.

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

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

Итак, программист, утверждающий о том, что что-то где-то работало, некомпетентен, потому что применяет метод индукции, там, где нужно идти методом отсечений неверных предположений.

Дизайнер, голословно утверждающий, что приём, который он придумал, будет работать, в общем случае ошибается, потому что действует на основании опыта, сработавшего в ряде экспериментов в прошлом. Сработает ли он в будущем — вопрос. В простых случаях — да. В случае комплексных открытых систем — неизвестно.

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