В сущности, люди регулярно сталкиваются с рядом особо сложных задач, изучаемых программистами. Зачастую нам приходится принимать решения в условиях неопределенности, временных ограничений, неполной информации и быстро меняющейся реальности. В некоторых подобных случаях даже новейшие компьютерные технологии пока не могут предложить нам эффективные и всегда верные алгоритмы. Для определенных ситуаций, как оказывается, таких алгоритмов еще не существует. Но даже в тех случаях, для которых тот самый идеальный алгоритм еще не найден, битва нескольких поколений ученых с наиболее труднорешаемыми жизненными задачами тоже принесла свои плоды. Эти выводы и правила, полученные ценой огромных усилий, идут вразрез с нашими привычными понятиями о рациональности и напоминают исключительно строгие предписания математика, который пытается изобразить мир четкими ровными линиями. Нам говорят: «Не надо рассматривать все имеющиеся варианты», «Не ведись на выгоду каждый раз», «Иногда можно и дров наломать», «Путешествуй налегке», «Пусть все подождет», «Доверься своей интуиции и не раздумывай слишком долго», «Расслабься», «Подкинь монетку», «Прощай, но не забывай», «Будь честен с самим собой».
И все же жить по заветам компьютерной науки не так уж и плохо. Ведь, в отличие от большинства советов, ее мудрость имеет обоснования.
Разработка алгоритмов для компьютеров изначально была предметом исследования на стыке двух дисциплин – математики и инженерии. Составление алгоритмов для людей тоже не лежит в плоскости какой-либо одной науки. Сегодня разработка алгоритмов опирается не только на достижения информатики, математики и инженерии, но и на такие смежные научные области, как статистика и операционные исследования.
Проводя параллель между алгоритмами для техники и алгоритмами для людей, нам также следует обратиться к научным ресурсам когнитивистики, математики, экономики и других наук. Авторы этой книги хорошо знакомы с междисциплинарными исследованиями в этих отраслях. Прежде чем защитить дипломную работу в области исследования английского языка, Брайан изучал компьютерные технологии и философию, а карьеру построил на стыке всех трех специальностей. Том посвятил годы изучению психологии и статистики, прежде чем стал профессором Калифорнийского университета в Беркли, где теперь уделяет почти все свое время исследованию взаимосвязей между мыслительной деятельностью человека и вычислительными операциями.
Однако никто не может быть экспертом сразу во всех научных отраслях, задействованных в разработке алгоритмов для людей. Поэтому в поисках алгоритмов для жизни мы беседовали с людьми, которые придумали самые известные алгоритмы за последние 50 лет. И мы спрашивали, как их исследование повлияло на их же подход к решению жизненных задач – от поиска второй половины до сортировки носков после стирки.