Quantcast
Channel: Найцікавіше на DOU
Viewing all articles
Browse latest Browse all 8115

Память программиста: как запомнить паттерны и Камасутру

$
0
0

Сжалились над «чайником» добрые люди,
объяснили, что значит RTFM — мол,
аббревиатура такая: Read The Fucking Manual.
«Чайник» прислушался к совету, и... прочел Камасутру
(Анекдот)


А лучше бы запомнил — такими мануалами
гораздо удобнее пользоваться по памяти
(Бывалый)



Сразу предупрежу: эту статью недостаточно пробежать глазами. Моя цель — не накормить информационным фастфудом, а облегчить вам жизнь и обеспечить преимуществом над остальными.

От вас лишь требуется выполнить рекомендации. Добросовестно. И если сейчас нет полчаса свободного времени, в течение которых вас ничто не отвлечет — лучше отложите чтение.

Из грязи в князи

О личной эффективности и конкурентном преимуществе говорю не ради красного словца.

Посудите сами. Разве не удобно всю нужную документацию загрузить в голову, чтобы каждый раз не «раскуривать маны»?

А что обычно вы пишете в резюме — образование, таблица скилов, перечень проектов, владение иностранными языками? Список личных качеств, самые важные из которых — «добросовестность в работе» и «умение работать в команде»? Как будто кто-нибудь признается в противоположном... Ну, и чем ваше резюме отличается от сотен других?

А представьте, если где-нибудь в «Дополнительной информации» вы добавите всего одну строчку: «обладаю феноменальной памятью». И кого при прочих равных условиях возьмут на работу?

Это если вас нанимают. А если нанимаете вы? Привыкли восхищаться памятью легендарных «топ-менеджеров» — Македонским, Цезарем, Наполеоном, и считаете их харизму недосягаемым идеалом. Неужели вы думаете, что феноменальная память им была дана от природы? Обратитесь к биографиям. Кто был учителем Александра Великого? Правильно, Аристотель. А кем был Аристотель? Правильно, древним греком. А чем, помимо прочего, примечательны древние греки? Правильно, первыми текстами о мнемотехнике. А что такое мнемотехника? Так о ней же, родимой, дальше речь и пойдет.

Поутру, надев часы, мы забыли про трусы

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

Список этих вопросов может быть бесконечным. На все эти «почему» отвечу: уж точно не потому, что у вас плохая память.

Это не более чем природные ограничения: мы не умеем запоминать определенные виды и последовательность информации. Например, если бы я сейчас назвал вам 10 простейших слов, то запомнить и повторить вы смогли бы лишь 7±2. Откуда такая уверенность? За несколько лет еще никто из сотен участников моих мастер-классов не смог выйти за рамки этого «магического» числа.

Помнить все, и даже больше

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

Современная же мнемотехника позволяет загружать информацию в голову, как в компьютер, и потом со 100% точностью ее воспроизводить — слово в слово, буква в букву, цифра в цифру.

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

На Западе мнемотехника выхолощена до бесполезного суррогата — «спортивного запоминания». Когда одна и та же тусовка чудаков встречается раз год и соревнуется в запоминании клякс, бинарных чисел и другой совершенно бесполезной информации.

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

Некоторые слышали о так называемой «эйдетике». По этой методике учат запоминать что-нибудь совсем простое, вроде списка покупок, соединяя слова в «забавные истории». Хотя мамаши довольны: за тот час, пока ребенок занят, можно спокойно пошопиться.

В общем, наткнется программист на информацию о чемпионате мира по памяти или эйдетике — и совершенно справедливо спросит: «Ну, и что мне с этих клякс и цветных карточек? Как запомнить реальную, нужную инфу — например, вот этот справочник технической документации?».

Потерпите, дальше — самое интересное. Все расскажу. Все покажу. Все сами попробуете.

Шаблоны проектирования и шаблонное проектирование — не одно и то же

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

Знаю, некоторые скажут, что главное сейчас — по-быстрому писать рабочий код, и умные книжки читать некогда. Но все мои клиенты-айтишники, далеко не последние люди в профессии, утверждают обратное: шаблоны проектирования надо знать. И не только потому, что вопросы о них в обязательном порядке задают на каждом собеседовании.

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

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

Да, и если упомянули Джона Влиссидеса, обратимся дальше ко всей «банде четырех» сразу — их легендарной книге «Design Patterns: Elements of Reusable Object-Oriented Software».

System requirements, или давайте договоримся

Учтите следующее:

1. Мнемотехника опирается преимущественно на наглядно-образное мышление. Конечно, все виды мышления — и наглядно-действенное, и наглядно-образное, и словесно-логическое, будучи различными уровнями познания, представляют стороны единого процесса. Без словесно-логического мышления мы не сформируем нужный нам наглядный образ. Но вот само запоминание осуществляется с помощью образов.

2. Когда мозг видит два соединенных предмета, он с легкостью фиксирует эту связь. И с такой же легкостью фиксирует связь двух образов в воображении. Потом достаточно представить один образ — стимул, чтобы увидеть следом второй — реакцию. Это — базовый механизм запоминания.

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

4. Иллюстрации моделируют работу вашего воображения. Достаточно лишь их внимательно разглядывать. Я расскажу потом, как именно, но общие рекомендации такие: каждое изображение вам придется открывать в новом окне. Это о критериях из п. 3 — мелкие образы мозг не запоминает. По этой же причине не советую пытаться разглядывать изображения на смартфоне. На планшете — еще куда ни шло, но вот на смартфоне — точно нет.

5. Так как это моделирование, мне пришлось использовать свои образы. В дальнейшем вы будете работать со своими — они всегда лучше запоминаются и вспоминаются. А пока же будьте готовы к тому, что мозг может противиться запоминать мои, чужие для вас образы.

6. Начнете со мной, с моих иллюстраций. Продолжите сами, в своем воображении. Мне важно научить вас. И для этого вы должны пробовать сами.

7. Когда я учился в вузе, мы ходили в библиотеки и конспектировали книги, то есть, выписывали самое важное. Потом появилась возможность ксерокопировать, и маркером выделять на копиях самое важное. Сейчас самое важное выделяют в электронном виде. Способы разные, идея одна — конспектируют только самое важное. Мнемотехнику еще называют техникой внутреннего конспектирования. «Внутреннего» — потому что записываете прямо в память. «Конспектирования» — потому что записываете самое важное. Запоминать все от первой до последней буквы — глупо, не рационально, и мало того, вредит пониманию. Разбираясь с текстом, большая часть информации запомнится сама собой, непроизвольно. Помогает и смысл, и контекст. Поэтому специально запоминаем только тезисы, и только то, что ну никак не хочет запоминаться само.

8. Степень точности запоминания определяйте сами. Иногда достаточно своими словами изложить последовательность информации. А иногда требуется воспроизвести дословно, вплоть до номеров страниц. Сейчас нецелесообразно спорить, почему я предлагаю запомнить это, а не то. Разберем общие принципы. А потом с их помощью запомните все, что хотите.

9. Мнемотехника позволяет не только запомнить, но и понять. То, что у гениев исключительно развито наглядно-образное мышление, — не совпадение. Если бы Эйнштейн не увидел себя сидящим на луче света, он бы не создал теорию относительности. И Тесла не был бы «человеком, который изобрел XX век», если бы не собирал свои турбины в воображении. Но сейчас предполагается, что вы разбираетесь в материале. Иначе, если мы с помощью образов будем еще и запоминать каждое определение, вроде «под паттернами проектирования понимается описание взаимодействия объектов и классов, адаптированных для решения общей задачи проектирования в конкретном контексте», то мы точно выйдем за рамки того получаса, о котором я говорил вначале. Да, мнемотехника — самый эффективный способ понять определение, но сейчас речь идет о ситуациях, когда смысл паттернов вы знаете, но забываете и путаете их названия, назначение, мотивацию, применимость или другие компоненты их описаний. В общем, сегодня пишем «шпору», а не учим. Причем пишем прямо в мозг.

Как представить то, что невозможно представить

«Банда четырех» классифицирует паттерны на «порождающие», «структурные» и «паттерны поведения». К первым относятся «Абстрактная фабрика», «Строитель», «Фабричный метод», «Прототип» и «Одиночка». Их и возьмем. Другие паттерны оставим для «домашней работы».

Хорошо, что имена им придумали за нас. Авторы признаются: «Нахождение хороших имен было одной из самых трудных задач при составлении каталога». Использовать имена удобно — сославшись на имя, можно сразу описать проблему проектирования, ее решения и их последствия, это позволяет проектировать на более высоком уровне абстракции, с помощью словаря паттернов можно вести обсуждение с коллегами, упоминать паттерны в документации, в тонкостях представлять дизайн системы.

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

Поэтому «Абстрактную фабрику» увидим так:

«Строителя» закодируем в крюк строительного крана:

«Фабричный метод» представим в виде кабины фабричной машины:

«Прототип»:

«Одиночка»:

Каждому сверчку по своему шестку

Пока мы только закодировали информацию в образы. Но сказать, что мы запомнили информацию, можно будет только тогда, когда сможем обращаться к ней произвольно. Когда доступ к информации есть в любой момент. А не так, как обычно — в нужный момент не можем вспомнить, или вспоминаем случайно. Как та женщина с хозяйственными сумками, которая вспомнила о том, что не купила яйца, глядя на распахнувшего перед ней плащ эксгибициониста.

Мы говорили, что мозг запоминает связь между двумя образами. В нашем случае «фабрика», «крюк», «кабина», «прототип» и «евро» — вторые образы в таких связках. Образы, всплывающие в воображении в ответ на стимулирующие образы.

С образами-реакцией все понятно. Они — наша конечная цель. А какие образы будут стимулами? Вариантов несколько. Например, можно связать «Фабрику» с «Крюком», «Крюк» с «Кабиной», «Кабину» с «Прототипом», «Прототип» с «Евро». И глядя в воображении на «Фабрику», будет вспоминаться «Крюк», «Крюк» вытянет «Кабину», и т.д.

Но в нашем случае удобно поступить так, как написал Цицерон еще в 55 г. н. э. в диалоге «Об ораторе»:

«Следует держать в уме картину каких-нибудь мест, и по этим местам располагать воображаемые образы запоминаемых предметов. Таким образом, порядок сохранит порядок предметов, а образ предметов означит самые предметы, и мы будем пользоваться местами как воском, а изображениями — как надписями».

То есть в качестве стимулов мы возьмем те образы, которые уже находятся у вас в голове — предметы хорошо знакомого вам интерьера.

Например, вне зависимости от того, как давно вы закончили школу — пять лет назад, десять, двадцать, как я, или сорок, вы одинаково хорошо помните свой школьный спортзал. Вот здесь раздевалка, потом зал, тут канаты, там турники... Легко?

Когда будете работать самостоятельно, мысленно в хорошо знакомых помещениях сверху вниз и слева направо выделите достаточное количество образов-стимулов. Выделять образы надо последовательно, чтобы потом так же последовательно вспоминать образы-реакции, чтобы «порядок мест хранил порядок вещей». Причем, выделяемые образы уже естественно объединены в группы — комнаты или зоны, и каждую такую комнату можно отводить под запоминание конкретных блоков информации.

Возьмем вот эту комнату:

Образы начнем выделять с той стены, где телевизор. Всю эту зону отведем под «порождающие» паттерны. А перемещаясь по часовой стрелке дальше по комнате, под «структурные» можно взять, например, кресло, под паттерны «поведения» — столик, под другую информацию — диван, полку, окно... Запоминать специально, где какая группа паттернов расположена — излишне, это запомнится само собой.

Итак, часть комнаты:

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

Теперь каждый из выделенных образов соединяем с образами-паттернами. Открываем изображения в новом окне и внимательно разглядываем соединения образов по 5-7 секунд.Сейчас разглядываем на иллюстрациях, а при самостоятельной работе — в воображении.

«Левый край полки» + «Фабрика»:

«Середина полки» + «Крюк», который в тени, и поэтому кажется черным:

«Книги» + «Кабина»:

«Телевизор» + «Прототип»:

«Столик» + «Евро»:

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

Таким образом вы сможете запоминать последовательности чего угодно — понятий, тезисов выступлений, покупок, встреч, дел, товаров и пр. Последовательности какой угодно длины — не только 23 элемента, что обычному человеку уже кажется невозможным, а 123 или 1023. Не важно, сколько их в списке.

Причем сможете воспроизводить в прямом и обратном порядке, выборочно, каждое второе, третье, пятое, десятое слово или слово по его порядковому номеру. Как? Да точно так же! Вспомните сформированную картину и начните считывать информацию с конца, со столика под телевизором. Получится так же легко. А если надо вспомнить третий паттерн, доходите в воображении до книг, видите на них «Кабину» и говорите: «Фабричный метод!».

Ну да ладно, не это сейчас главное. Идем дальше.

Камень — ножницы — бумага

Перейдем к запоминанию описаний паттернов на примере «Абстрактной фабрики».

«Банда четырех» придерживается единого принципа, и описание каждого паттерна разбивает на 13 разделов. Такой подход позволяет единообразно представить информацию, облегчает изучение, сравнение и применение паттернов. И опять же, специально запоминать последовательность разделов я бы не стал. Она — всегда одна и та же, поэтому запомнится непроизвольно. А название, смысл раздела будет и так понятен по конкретному его содержанию — запоминаемым образам.

Рассмотреть успеем только первые пять разделов «Абстрактной фабрики». Дальше будете действовать по аналогии.

Все разделы «Абстрактной фабрики» теоретически возможно разместить в виде образов сверху вниз и слева направо на частях самой «Фабрики». Но, разделов много, а я рекомендую запоминать на части одного образа не более пяти других образов. И, скорее всего, вы будете использовать понятие «Абстрактная фабрика» неоднократно. Образ «Фабрика» станет повторяться в комбинациях с другими образами. А если вы раз и навсегда запомните на него другие образы, то использовать такую «Фабрику» станет проблематично.

Поэтому образы — разделы описания надо запомнить на другие стимулирующие образы. На образы, выделенные в интерьере, уже нельзя — середина полки, книги, телевизор и столик заняты. А как тогда?

Получим их другим путем — с помощью ассоциативного ряда. Когда я слышу слово и вижу образ «Фабрика», у меня на языке и в воображении мгновенно появляется «Горючее». Когда мне говорят «Горючее», сразу вспыхивает «Жаровня», «Жаровня» — «Жаркое», «Жаркое» — «Бутылка вина», «Бутылка вина» — «Бокал вина»:

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

Конечно, ваш ассоциативный ряд будет другим. «Фабрика» может ассоциироваться с телевизионным проектом «Фабрика звезд», а не с горючим. Горючее — не с жаровней, а с двигателем, и т. д.

Продолжать ассоциативный ряд вы тоже будете по-разному. После «Бокала вина», например, «Особь противоположного пола». Ну а дальше — «Жили они долго и счастливо», и так далее до «Умерли в один день». По мере необходимости расширяйте систему стимулирующих образов. Благо, между «Жили» и «Умерли» — бесконечное их число. А если образы все-таки закончатся, поиск можно продолжить уже по ту сторону.

Первый раздел «Название и классификация паттерна»: «Абстрактная фабрика — паттерн, порождающий объекты». Прочитав в глоссарии, что «объект — имеющаяся во время выполнения сущность, в которой хранятся данные и процедуры для работы с ними», «паттерн, порождающий объекты» я закодирую в виде коробки с подарком.

Дальше вы уже знаете — «Коробку с подарком» соединяем с «Горючим» и внимательно разглядываем, открыв их в новом окне:

Назначение «предоставляет интерфейс для создания семейств взаимосвязанных или взаимозависимых объектов, не специфицируя их конкретных классов» представлю в виде «Узла-банта», который соединю с «Жаровней»:

«Известен также под именем Kit (инструментарий)»? Правильно — «Кит», которого прямо на «Жаркое» и положим:

Мотивацию «Клиенты вызывают эти операции для получения экземпляров виджетов, но при этом ничего не знают о том, какие именно классы используют. Стало быть, клиенты остаются независимыми от выбранного стандарта внешнего облика» закодируем «Венецианской маской», которую расположим на бутылке:

На бокале вина сидели кубик, цепочка, автомат и ледник

Давайте теперь покажу, как запомнить блок из нескольких информационных сообщений.

Раздел «Применимость» мы должны запомнить на «Бокале вина». Но этот раздел состоит из четырех сообщений. Поэтому в «Бокале вина» выделяем четыре части — верхний край, чаша, ножка и подставка:

Сообщение о том, что «Абстрактную фабрику» следует использовать, когда «система не должна зависеть от того, как создаются, компонуются и представляются входящие в нее объекты» закодируем в виде «Кубика Рубика», и поместим его на первую часть бокала:

«Входящие в семейство взаимосвязанные объекты должны использоваться вместе, и вам необходимо обеспечить выполнение этого ограничения» — «Цепь»:

«Система должна конфигурироваться одним из семейств составляющих ее объектов» — «Томми-ган». «Чикагская пишущая машинка», с помощью которой мафиозные «семьи» «конфигурировали» свой бизнес:

«Хотите предоставить библиотеку объектов, раскрывая только их интерфейсы, но не реализацию» — «Верхушка айсберга»:

В завершение полюбуйтесь на всю конструкцию целиком:

Повторение — не учение

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

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

Мнемонисты повторяют не для запоминания, а для припоминанияинформации. Обычные люди, надеясь выучить, повторяют путем повторного восприятия информации — банальной «зубрежкой». Мнемонист же повторяет исключительно по памяти, припоминая ранее сформированные образы, и с каждым таким повторением информация все надежнее закрепляется в памяти. Потом образы-подсказки уже не нужны — информация помнится как бы «сама собой».

Овчинка стоит выделки

Если не прислушаться к совету в начале статьи и «проскроллить» ее, в глазах зарябит от обилия текста и графики. И кто-то подумает: «Уж лучше я буду запоминать как обычно».

«Как обычно» — значит никак. Или запоминать так, как я описал, или совсем никак.

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

Давайте подсчитаем, сколько времени займет выполнение того, что я так долго описывал.

На кодирование информации в образ вы потратите где-то 5 секунд. На фиксирование связи двух образов у вас уйдет тоже приблизительно 5 секунд. Тратить время на формирование стимулирующих образов не придется, потому что они у вас и так в голове — то ли это предметы интерьера, то ли это образы ассоциативного ряда.

Считаем, сколько получается «кодирований-соединений»: «Левый край полки — Фабрика», «Середина полки — Крюк», «Книги — Кабина», «Телевизор — Прототип», «Столик — Евро», «Горючее — Подарок», «Жаровня — Узел», «Жаркое — Кит», «Бутылка — Маска», «Край бокала — Кубик», «Чаша бокала — Цепь», «Ножка бокала — Пулемет», «Подставка бокала — Айсберг». Итого — 13.

13 умножаем на 10 секунд — получаем 2 минуты 10 секунд. Давайте еще накинем с учетом того, что пару раз надо смотреть на все образы сразу — в комнате и на бокале. Уверен, трех минут вам хватит за глаза и за уши.

Всего 3 (!) минуты. А когда навык сформирован — и того меньше. Другие занимаются мазохизмом, пытаясь запомнить «как обычно», а вы легко и непринужденно перемещаетесь по образам, как по файлам компьютера, считывая с них информацию. Разве не круто?


Viewing all articles
Browse latest Browse all 8115

Trending Articles