Боб Салливан - Эффект плато. Как преодолеть застой и двигаться дальше
Почему число 127 настолько важно для некоторых программ? Подобно числу 10 для наших пальцев, оно считается пограничным значением. Обычная математика говорит нам, что результат сложения 1 и 127 (1 + 127) должен быть равен 128. Однако порой в компьютерной математике результат оказывается равным минус 128, то есть минимальному значению, которое могут удерживать бинарные переключатели. Иными словами, это все равно что выпрямленный палец, означающий 11, однако выглядящий как один.
Как только Хью увидел число 127 на экране самолетной развлекательной системы, он понял, что у него есть отличный шанс вызвать целочисленное переполнение системы. Затем, исключительно в интересах науки, он нажал кнопку «+» еще один раз. Внезапно на экране на какой-то момент показалось число 128, а затем экран погас.
Тут же выключился экран сидевшего рядом с ним пассажира.
Погасли экраны и у пассажиров перед ним и за ним.
Через секунду выключилась вся развлекательная система в самолете.
После нескольких минут ворчания некоторых пассажиров бесстрастный бортпроводник перегрузил систему, и все вернулось к нормальному состоянию. А Хью приземлился с новыми знаниями о «Тетрисе» (и числе 127).
Как мог производитель упустить из виду эту проблему?
Вполне возможно, что игра тестировалась тысячи раз, а потом и использовалась десятки тысяч раз, и проблема не проявилась. Однако она существовала, причем всегда. Мы, как люди, написавшие немало программ, вполне понимаем, почему традиционные методы тестирования программ не замечали эту проблему. Тестеры склонны идти по пути, прописанному в документе, называемом спецификацией. В этих документах обычно пишется что-то типа «При входном значении системы, равном A, мы ожидаем получить результат B». Затем проводятся тесты, предполагающие ввод A и проверку, появляется ли на выходе B. Зачастую такие тесты кодифицируются для того, чтобы их можно было проводить почти автоматически. К примеру, для ввода A инструкция выглядит как «Нажмите маленькую кнопку со значком принтера», а исход B был описан как «Из принтера должно выйти несколько листов бумаги с напечатанным на них документом». Существует также тестирование в свободной форме, часто называемое исследовательским{31}, при котором тестеры думают и действуют как обычные пользователи. Привычные пути работы тестеров проводят к тому, что они упускают из виду редко встречающиеся, но потенциально разрушительные проблемы. В случае развлекательной системы на борту самолета типичный пользователь должен был ограничиться нажатием огромных кнопок «+» и «−» на экране, однако оказалось, что система содержит ужасную ошибку, способную остановить всю работу.
В наши дни для тестирования технологий все чаще приглашаются фаззеры, которые отвечают за выявление некоторых из самых опасных ошибок в системах{32}. Они находят проблемы, которые просто не умеет находить обычный тестер. Фаззинг позволяет пробиться через огромное количество плато в области тестирования. Фаззеры подвергают систему шоку и игнорируют все правила. При отсутствии такой «встряски» сбои в программах становятся невосприимчивыми к «пестицидам», которыми мы их поливаем, а суперсбои терпеливо ждут момента, когда смогут нанести свой коварный удар в самое неподходящее время. Онемение и бесчувственность – это проблема, не ограничивающаяся программированием. Разнообразие, присущее фаззингу, позволяет преодолеть это онемение, а эффективность данного метода не ограничена выявлением ошибок в программах. В сущности, вы можете использовать самую сложную из известных человеку систем – его собственное мышление.
Позвольте провести один интересный эксперимент. Прочитайте приведенный ниже список, но только один раз:
1) страус;
2) арахисовое масло;
3) компьютерная программа;
4) осьминог;
5) плащ;
6) сэндвич;
7) лимон;
8) закат;
9) кредитная карта;
10) холодильник.
Для большинства людей запоминание списка из десяти объектов после однократного взгляда представляется довольно сложной задачей. Даже после нескольких изучений или повторений они запомнят лишь элементы из начала и конца списка, да и те быстро выветрятся из памяти. Наша память, как и чувства, склонна игнорировать повсеместное и искать что-то необычное, экстраординарное.
Можете ли вы теперь, не глядя на список, вспомнить, какой элемент был вторым по порядку? Какой порядковый номер был у слова «осьминог»?
Наше мышление не особенно хорошо приспособлено к запоминанию обычных вещей.
Герман Эббингауз, о котором мы уже рассказывали в главе 1, значительно улучшил навыки обучения с помощью повторения, распределенного во времени. Это вполне эффективный подход для механического запоминания, но можем ли мы воспользоваться знанием о том, что наше мышление, как и наши ощущения, склонно активнее реагировать на что-то необычное? Возможно, лучшими источниками информации о том, как избежать плато памяти, могут стать для нас люди, способные делать это постоянно. Найти их можно в местах вроде Чемпионата мира по запоминанию.
В мире существует небольшая группа фанатиков, воспринимающих запоминание как спорт типа футбола или шахмат. Эти спортсмены собираются на различных мероприятиях и соревнуются за титул лучшего в мире. В ходе соревнований часто происходят поистине потрясающие вещи. Так, в 2006 году один из участников, Энди Белл{33}, невероятно быстро запомнил порядок случайным образом перемешанной колоды из 52 карт. Большинству из нас будет сложно запомнить порядок карт в колоде. Даже посмотрев на карты десяток раз, мы сможем запомнить лишь несколько первых. В данном случае техника Эббингауза неприменима, поскольку здесь важна скорость. Для запоминания всех 52 карт большинству людей потребуется потратить на повторение несколько часов (в лучшем случае).
Белл сделал это за 31 секунду.
Тридцать одна секунда! Иными словами, он смотрел на каждую карту меньше половины секунды. В интервью на канале BBC в ответ на вопрос, как ему это удалось, Белл скромно ответил: «Думаю, что у меня такой же мозг, как и у всех остальных, так что это может, в принципе, сделать каждый».
Возможно, он и прав.
Белл использует технику запоминания под названием «метод локуса»{34}, известного еще со времен Древней Греции (слово «локус» происходит от греческого слова, означавшего «местоположение»). Техника полагается на использование знакомого местоположения, например вашего дома. Слова, цифры или другие вещи, которые вы хотите запомнить, привязываются к уже знакомым вам местам в доме.
Изобретение этого метода приписывается Симониду Кеосскому, греческому поэту, которому как-то довелось присутствовать на торжественном ужине в честь одного выдающегося соотечественника. Во время ужина Симонид вышел на улицу – и в это самое время крыша здания обрушилась и похоронила под собой всех остальных гостей. Городские власти попросили Симонида помочь в уточнении личности каждого из погибших. Симонид смог представить себе таблицу рассадки гостей и, двигаясь по ней в своих мыслях, вспомнил, где сидел каждый из гостей. Его ментальное путешествие по таблице позволило привязать людей к местам, за которыми те сидели. Подобное знание – способность привязать объекты к знакомым нам физическим местам для упрощения запоминания – лежит в основе многих современных техник.
Взяв за основу какое-то хорошо знакомое вам физическое местоположение, например комнату в вашем доме, офис или улицу, на которой вы живете, вы можете создать то, что сам Симонид называл дворцом памяти, – набор отправных точек для хранения будущей информации. Например, у вас в ванной комнате есть унитаз, раковина, душ, коврик и дверь. Используя метод Симонида, вы представляете себе, что проходите по этой комнате и выбираете порядок запоминания предметов, находящихся в ней, по часовой стрелке или против нее. К примеру, когда Хью запоминает предметы в своей ванной, двигаясь по часовой стрелке, он сначала видит унитаз, затем раковину (рядом с которой стоит пластиковая чашка с зубными щетками), затем душ, коврик и дверь. Если расставить все эти предметы по порядку, то список будет выглядеть так:
1) унитаз;
2) раковина;
3) душ;
4) коврик;
5) дверь.
Все эти вещи ему знакомы, ему не нужно их запоминать. Он видит их каждый день и может просто закрыть глаза и визуализировать в памяти схему ванной комнаты. Можно сказать, что он создал свой дворец памяти.
Теперь представьте, что у вас есть список новых вещей, которые нужно запомнить, похожий на лист, который мы видели чуть раньше. Чтобы их запомнить, нужно создать их ментальный образ и выстроить какую-то связь между объектами в своем дворце памяти. Главное – придумать самую необычную или даже безумную связь между объектами. Создав в своей голове дворец памяти, вы можете переключиться с запоминания на творчество. Так же как и с запахами и вкусами, наш мозг предрасположен обращать внимание на неожиданное и необычное. Именно по этой причине люди живо хранят в памяти травматичные воспоминания и помнят человека в смешной шляпе или необычных очках, которого когда-то увидели на вечеринке. Наше тело приучено реагировать на странности. Используя объекты из дворца памяти, а также творческие и необычные способы привязать их к тому, что вы хотите запомнить, вы подвергаете свою память шоку и заставляете ее запоминать.