Книга Включите свою рабочую память на полную мощь - Росс Эллоуэй
Шрифт:
Интервал:
Закладка:
Как же тогда Абухадиджех пишет свои программы? Очень просто: вместо того чтобы запоминать программы целиком или по частям, он оперирует имеющимися блоками кода, составляя из них программу, подобно тому как шахматист двигает фигуру за фигурой, чтобы выиграть. Скажем, ему нужно написать программу, обеспечивающую доступ к электронной почте по паролю. Первый блок программы должен сверить введенный пароль с правильным, второй – обеспечить доступ к электронному почтовому ящику в случае введения правильного пароля, а третий – заблокировать доступ к почте, если пароль неверный. Вместе эти блоки образуют одну программу. Если собрать их неправильно, программа может вести себя непредсказуемо: заблокировать доступ при правильном пароле или, наоборот, впустить пользователя по неправильному паролю. Но если вы четко знаете, какие функции выполняет тот или иной блок, то гарантированно получите надежную программу доступа к электронной почте.
Более того, как и в случае с шахматными блоками Сьюзен Полгар, блоки программного кода можно разделить на более и менее эффективные. Феррос Абухадиджех смог создать сайт ytinstant.com так быстро потому, что не распылялся на мелкие детали, а держал в уме целостную картину. Как вы знаете, шахматные блоки, основанные на отношениях между фигурами, запоминаются гораздо легче, чем блоки, основанные на точном расположении фигур на шахматной доске. Точно так же Феррос считает, что блоки программного кода нужно стараться использовать с наибольшей эффективностью. Иными словами, необходимо стремиться к простоте везде, где только возможно.
Чтобы стало понятнее, Феррос объясняет, что существует два уровня программирования: высокий и низкий. Высокоуровневое программирование представляет собой читабельный текст с описанием основных функций программы. Специалист, составляющий такие тексты, называется техническим писателем. При их составлении не рекомендуется увлекаться техническими подробностями, чтобы не нарушить целостность текста. Для уточнения отдельных моментов существуют сноски, которые обычно располагаются в нижней части страницы или в конце статьи. Чтобы избежать чрезмерного усложнения высокоуровневого текста, опытные программисты, такие как Абухадиджех, широко используют низкоуровневые сноски. К примеру, чтобы описать возведение числа в квадрат в высокоуровневом тексте, не нужно подробно расписывать саму операцию (х2 = х × х). Достаточно просто написать sq (для обозначения возведения в квадрат) и дать определение операции sq в низкоуровневом тексте.
Как известно, чем больше объем информации, тем выше вероятность перегрузки дирижера рабочей памяти. При составлении программ Феррос использует простые блоки (к примеру, блок sq) и подробно расписывает их только после того, как готов набросок программы. Таким образом дирижер рабочей памяти контролирует процесс создания программы и помогает не упускать из виду конечную цель. Феррос Абухадиджех может определить качество работы программиста по тем блокам, которые он использует. Менее опытные программисты часто включают низкоуровневую информацию в высокоуровневый текст. Это свидетельствует о том, что специалист не способен в полной мере дифференцировать уровень сложности того или иного блока, а значит, существует опасность запутаться в деталях и упустить главное. Если бы Феррос расписывал каждую сноску при создании сайта ytinstant.com, он никогда не справился бы с заданием за три часа. Только благодаря упрощению его рабочая память смогла сосредоточиться на поиске оригинального решения.
Упрощение – это только часть методики Ферроса Абухадиджеха, которая принесла ему славу суперпрограммиста. Второй частью является прием, описанный Сьюзен Полгар. Как вы помните, он заключается в том, чтобы начинать игру с конца. Так же, как и Сьюзен, Феррос начинает программировать с постановки задачи, а затем шаг за шагом выясняет, как достичь желаемого результата. Он считает, что этот прием можно описать как строительство дома наоборот, когда начинают с крыши и заканчивают фундаментом.
Принцип действия этого приема Феррос Абухадиджех объясняет на примере создания программы для проверки орфографии. Крышей, или конечной целью, в данном случае является нахождение и выделение цветом тех слов, в которых были допущены ошибки. Как известно, крыша держится на балках. В роли балок в этом случае будет выступать код, который проанализирует все слова в документе и найдет те из них, которые написаны неправильно. Затем нужны стены, чтобы держать балки. Стенами послужит орфографический словарь. И наконец, самое главное – фундамент, то есть набор правил, по которым программа будет определять, верно ли написаны слова. Закончив с основными составными частями дома, можно приступать к написанию кода для нахождения и выделения неправильно написанных слов. Таким образом Феррос последовательно проходит все этапы строительства наоборот: от крыши до фундамента. Создание программы с конца позволяет ограничить количество возможных вариантов и разгрузить рабочую память. На каждом этапе работы Феррос четко представляет себе, как закодировать те или иные функции. При этом его рабочая память следит за тем, чтобы конструкция получилась прочной и надежной.
Чему же мы можем поучиться у таких гениев рабочей памяти, как Рудигер Гамм, Доминик О’Брайен, Сьюзен Полгар и Феррос Абухадиджех? Мы можем взять на вооружение их методики запоминания: коды, связки и блоки. Только они помогут справиться с бесконечными потоками информации, беспрерывно обрушивающейся на нас каждый день. Например, если вам нужно быстро умножить числа без калькулятора, примените методику блоков Рудигера Гамма. При запоминании больших объемов информации воспользуйтесь методом связок Доминика О’Брайена. А если вы хотите сдать работу в срок, создать новый продукт или сделать головокружительную карьеру, начните с конца и упрощайте, как Сьюзен Полгар и Феррос Абухадиджех.
Больше всего в перечисленных методиках нас привлекает то, что ими очень просто овладеть. Главное – практика. Возьмите за правило выполнять упражнения для овладения выбранной методикой каждый день. Тогда через некоторое время вы непременно почувствуете, что ваша рабочая память улучшилась и вам стало легче справляться с большими объемами информации. Предлагаем вашему вниманию ряд упражнений, которые помогут овладеть методиками запоминания с помощью кодов, связок и блоков.
Алгоритм, разработанный Рудигером Гаммом, заключается в том, чтобы последовательно перемножать числа слева направо, а затем складывать полученные результаты.
Пример 1. Умножение двузначного числа на однозначное.
Для того чтобы найти произведение 53 × 6, нужно выполнить следующие действия:
50 × 6 = 300;
3 × 6 = 18;
300 + 18 = 318.
Вычисления в уме позволяют активно задействовать рабочую память для того, чтобы не сбиться и помнить промежуточные результаты.
Упражнение 1
Решите указанные примеры по методике Рудигера Гамма (правильные ответы даны в конце этой главы):