Меморизация

Учимся учиться
Наряду с наиболее очевидным факапом школы — запредельно излишней сосредоточенности на повторении неких механических действий, развивающих когда-то полезные, но стремительно устаревающие навыки (письмо ручкой, счёт в уме и в столбик) — в ней был и до сих пор есть менее очевидный, но от того не менее вредный факап.
Упор на заучивание «фактов».
Я сразу оговорюсь, что наиболее вменяемые учителя обычно пытались и наверно до сих пор пытаются от этого уйти — хотя бы в той мере, в которой это позволяет программа.
Но, увы, такое не совсем удаётся даже им. Поскольку тут наличествует системная проблема, которую невозможно решить на персональном уровне — даже если означенная персона всесторонне осознаёт наличие проблемы и знает правильный вариант.
Вообще, причины существования означенного мега-перекоса, подозреваю, в основном такие же, как в анекдоте про потерянные ключи, которые ищут под фонарём, потому что там светлее.
Весьма легко проверить, запомнил ли ученик какой-то набор сведений, а вот понял ли он суть закономерности — сложно, поэтому есть большой соблазн проверять именно первое. И тем самым чисто по эволюционному принципу смещать всю систему именно в эту сторону.
Речь идёт про историю? Давайте запомним даты рождения каких-то там деятелей, даты сражений, перечень сражений, список фамилий в каком-нибудь там конвенте или парламенте и кучу других несомненно крайне важных деталей. Важных самих по себе.
Речь идёт про математику? Надо выучить формулы. И, самое главное, таблицу умножения. Да, задачи тоже как-то там решаются, но даже при решении задач вы не можете пользоваться справочником для поиска формул. Вы не можете подсмотреть в нём константы. Вы даже не имеете право заглянуть в таблицу умножения, которая, на минуточку, когда-то была создана как раз для того, чтобы в неё можно было заглядывать, а не помнить всё наизусть.
Речь идёт про физику? О да, снова формулы. Снова константы. Снова наизусть. Это — главное.
Про географию? Вам обязательно надо заучить столицы всех стран мира. Названия географических объектов. Уметь по памяти нарисовать, где какая страна находится. Выдать перечень того, что там производят. Всё в таком духе.
Тут кто-то спросит, а разве знания — это не оно? Ведь от этого зависит кругозор человека. Как ещё-то обучаться? Это ж, иначе, люди совсем безграмотными будут.
Штука в том, что для запоминания отлично подходит компьютер и несколько хуже, но подходит, бумага с чернилами. Мозг же для запоминания «фактов», внезапно, подходит совсем плохо.
И, кроме того, запоминание «фактов» бесполезно, хоть и гораздо проще проверяется.
Чисто технически мозг устроен так, что между одновременно возбуждающимися нейронами начинает прорастать связь. Если они регулярно одновременно возбуждаются, то связь прорастёт от начала и до конца, что будет приводить к возбуждению одного нейрона при возбуждении другого (правильнее было бы говорить о группах нейронов, но для простоты пусть будет просто пара).
Прошу, кстати, заметить: связь именно что физически прорастает. На неё можно даже посмотреть в микроскоп.
Каждый нейрон из какой-то пары изначально может возбуждаться при наблюдении какого-то события. Регулярное одновременное возбуждение таких нейронов скорее всего означает, что и события происходят одновременно — между ними есть какая-то связь, а поэтому и мозгу нужна ассоциативная связь между ними. Грубо говоря, надо подозревать наступление второго события, даже если мы его не наблюдаем, а наблюдаем только первое.
Иными словами, мозг заточен именно под расшифровку закономерностей. Да, в него можно запихнуть и «факты» тоже, но не как данные в компьютер, который запомнит всё точно и навсегда, хотя и не понимает, про что это всё, а как некую ассоциацию.
Именно поэтому, кстати, даже если вы заучили стихотворение, то вам гораздо проще будет вспомнить его с начала, а не с середины. И тем более, не с середины какой-то строфы. Середина строфы будет вспоминаться только если она сама по себе распозналась, как самоценная мысль. В ином же случае вы скорее всего начнёте вспоминать строфу с её первых слов.
Однако в стихотворении слова увязаны между собой и, если вы понимаете его смысл, вам будет гораздо проще его запомнить, чем просто зарифмованный набор бессвязных слов. Тем более, тех слов, которые вы вообще не понимаете (например, транскрипцию с неизвестного вам языка).
Мозг даже в «заучивании» пытается найти закономерность. Оттуда очевидная простота запоминания мнемоник для последовательностей и мощь других, ещё более хитрых методов запоминания — в том числе, запоминания набора слов — тоже базирующихся на построении ассоциативных связей (хотя и совершенно бессмысленных).
И вот тут наступает факап: школа имеет тенденцию награждать именно за запоминание — в том числе, того, что для запомнившего является просто набором слов.
Да, какие-то даты. Какие-то фамилии. Их, потратив кучу сил и трахнув собственный мозг в противоестественной позе, можно зазубрить, оттарабанить на уроке, получив высокую оценку (а если вы не всё это заучили, то оценка будет низкой, даже если вы отлично поняли все взаимосвязи).
Зазубрить. И через неделю с неизбежностью забыть.
Почему? Потому что мозг экономит ресурсы. И не только экономит ресурсы, но и сохраняет собственную целостность. Если нейроны перестают одновременно возбуждаться, то либо предположение о связности событий было ошибочным, либо отслеженная связь бесполезна. Эта связь со временем рассасывается.
Тоже, прошу заметить, физически рассасывается.
Не потому, что этот ученик плохой и ленивый, а потому, что мозг в принципе так устроен. Ему вообще наплевать на заучивание — им люди занимаются лишь очень малую часть времени своего существования на этой планете, и поэтому человеческий мозг под такое перестроиться ещё не успел.
Будь ученик мега-отличником, даже у него после школы из зазубренного останется лишь малая горстка не рассосавшихся «фактов». За редким исключением, почти случайный набор фактов.
Которые, к тому же, почти бесполезны.
Ну, просто потому, что столицу любого государства вы можете за пять секунд найти в Википедии. И потому, что перемножить два числа вы за те же пять секунд можете на калькуляторе.
«Не, ну а что же тогда учить?!» — возопят на этом месте многие. «Зачем география, если есть извозчики, да?».
И я вам отвечу. Отвечу предложением ответить.
Что происходило в Европе во времена Ивана Грозного? А в Америке? Откуда вообще люди узнали, что именно происходило?
Как доказать, что сумма квадратов синуса и косинуса равна единице?
Из чего следует закон сохранения импульса?
Откуда взялись горы?
Каковы обязательные условия эволюционного процесса?
Почти наверняка большинство не ответит ни на один вопрос без гугления, и лишь ничтожное количество людей ответит на все.
Хотя каждый из ответов на эти вопросы гораздо важнее знания каких угодно дат или названий географических объектов и даже таблицы умножения.
Потому что всё это — закономерности. Не факты, нет, они — обобщения фактов.
И вот их как раз мозг запоминает гораздо лучше. И одновременно с тем их изучение — в смысле обретения их понимания — для мозга гораздо интереснее, что сильно способствует интересу к учёбе вообще и расширению кругозора.
Заучивание числа пи до десятого знака не интересно и бессмысленно. Гораздо важнее знать, как это число вообще можно вычислить. С какими закономерностями оно связано. Как связаны между собой эти закономерности.
Понимание эволюционного процесса гораздо важнее запоминания названий ста видов птиц.
Понимания взаимосвязи давления газа с движением молекул в нём гораздо важнее, чем знание наизусть численного значения универсальной газовой постоянной или даже уравнения Менделеева-Клайперона.
Да, разумеется, если вы этим не будете пользоваться, то и это вы тоже с неизбежностью забудете — не надо строить иллюзий. Однако утратить умение разбираться с закономерностями уже гораздо сложнее.
Стёршуюся из памяти константу вам не удастся восстановить, иначе как заглядыванием в справочник, но вот формулу для решения квадратного уравнения вы при желании вполне сможете вывести. Если тренировались делать именно вот это, а не занимались вместо этого техническим заучиванием чисел, имён и прочих вещей.
Навык зазубривания, конечно, тоже развивается при постоянном практиковании зазубривания. Однако этот навык вам больше никогда не пригодится.
Даже если вы вдруг будете работать учёным или инженером, вам не доведётся что-то там зазубривать. Реально, то, что постоянно используется, запомнится само, а остальное вам по-любому придётся подсматривать в справочниках.
Пригодится разве что воспоминание о том, что что-то такое вообще есть.
Нет, я тоже в школьные годы, хотя и испытывал суровый скепсис по поводу зашкаливающей разумности учителей, всё-таки иногда им в чём-то верил, а потому тоже думал, что «вот наступит взрослая жизнь и тогда-то все эти, казавшиеся бесполезными, навыки мне пригодятся». Но нет. Не пригодились.
К сожалению, большинство школьных учителей и методологов никогда не занимались ничем, кроме преподавания, а потому просто не знают, как устроены реальные рабочие процессы.
Я, вот, почти тридцать лет занимался программированием. Думаете, я знаю наизусть каждую функцию из стандартной библиотеки тех языков, которые использую? Конечно, нет. И никто не знает — этих функций там многие тысячи.
И я, и все остальные помнят то, чем пользуются часто, а остальное подсматривают в гугле, мануалах, справочниках, учебниках.
Да, у меня большой опыт, поэтому я в ряде случаев понимаю, что функция, которая делает вот это, наверняка должна где-то быть, поскольку она явно нужна не одному мне.
Но как она называется? Где лежит? В каком порядке в неё передаются параметры?
Ну, я, конечно, до некоторой степени предполагаю её название и примерное место, где её надо искать: это — следствие понимания самих закономерностей в языках программирования. Однако я, разумеется, не помню её наизусть. И никогда даже не пытался заучить все функции.
И так везде: используемое постоянно — запоминается, редкое — подсматривается.
Мало того, если я помню сигнатуру функции наизусть, то это экономит мне максимум минуту. Но вот понимание каждой из закономерностей — недели и месяцы. А системы закономерностей — годы. На что тогда разумнее потратить время? На зазубривание названий функций или на изучение закономерностей?
То же касается и навыков. Вполне понятно, что, когда не было калькуляторов, а считать (например, при торговле) уже было надо, запомненная таблица умножения изрядно экономила время. Но при наличии калькуляторов и компьютеров она уже не делает этого.
Почему же её учат? А просто потому, что её реально заучить и легко проверять.
Задумайтесь вот о чём: на таблице умножения ведь математика не заканчивается. В ней ещё есть, например, извлечение квадратных корней, взятие логарифмов и синусов. И для всего этого тоже есть таблицы, которые в своё время были просто офигенным прорывом, поскольку экономили поистине титаническое количество времени.
Почему вас не заставляют заучивать и эти таблицы тоже? Реже пригождаются? О нет, в инженерии оно нужно постоянно. В физике — постоянно. В статистике — постоянно.
Их не заставляют учить, поскольку это просто не в человеческих силах. Даже сам преподаватель не смог бы их запомнить, а потому проверка «знаний» учеников превратилась бы в усердный труд по сверке результатов контрольных со значениями в толстенных справочниках. Что, к тому же, выглядело бы уже как совсем очевидное лицемерие: требование помнить то, что даже сам не помнишь.
Всё это — ровно такой же поиск ключей под фонарём.
Следующий вопрос. Вас долгое время дрючили делением в столбик. Без балды, сам алгоритм этого процесса весьма интересен и разобраться с ним полезно, однако вас это заставляли делать многие годы. Вы уже давно понимали этот алгоритм, но вас всё равно продолжали заставлять пользоваться именно им, а не более простым вариантом: взять калькулятор/компьютер и поделить на нём. Вы тратили время не на решение задач, а на выполнение одних и тех же чисто технических операций.
Зачем? Вы ведь всё равно не начали делить быстрее калькулятора.
Для общего развития?
ОК.
Как я уже говорил, на четырёх арифметических действиях математика не кончается. Вычислите, пожалуйста, без калькулятора, скажем, квадратный корень из двадцати девяти.
Вы не сможете это сделать. Причём, даже если вы сейчас загуглите, у вас уйдёт нехилое время, чтобы понять, как это работает. Просто потому, что вам никто никогда не рассказывал про этот алгоритм. И про ему подобные.
Да, вас заставляли оттачивать деление в столбик, но ничего не сказали про способы вычисления результатов других операций. Вы не знаете, как вычислять квадратный корень. Как вычислять логарифм. Как вычислять синус. Хотя для всего этого совершенно точно существуют алгоритмы — ведь таблицы для этих операций были каким-то образом составлены, да и калькулятору для вычисления результата тоже без алгоритма никак.
Ну так и что было бы полезнее для означенного общего развития? Зачем-то годами повторять одну и ту же уже давно понятную операцию или посмотреть на целое множество таких операций? Разораться не с одной, а с несколькими? Понять их общие закономерности? Подходы к их построению?
Причём тут, надо отметить, всё столь круто, что этих алгоритмов не знают не только ученики, но и даже сами учителя. Реально, можете на родительском собрании поинтересоваться у учителя математики вашего ребёнка, как вычислить квадратный корень. Пусть даже хотя бы примерно — сам подход, без деталей. Что для этого надо делать?
Я слышал версию, что натаскивание на деление с умножением нужно, чтобы «быстро прикинуть в уме». Это мне весьма странно: ведь любой не абсолютно тривиальный случай на компьютере вы «прикинете» гораздо быстрее, где тут экономия времени-то?
Но пусть даже без компьютера: «физики делают так». Да нет, физики, даже без компьютера, «быстро прикидывают» только порядок величины. А для этого даже таблица умножения не особо-то нужна (ну, если не считать оной умножение десяти на десять и ещё пару—тройку простейших случаев, вида 2*5, 2*2 и т.п.)
Программисты? Да кому из них это нужно, если любые «магические константы» в коде — это фэйл и факап?
Инженеры? Ну, быть может, однако там обычно тоже нужен либо порядок величины, либо точное значение, которое тоже в нетривиальных случаях в уме вычислять опасно, поскольку ошибка может оказаться очень дорогостоящей.
Бухгалтеры? Да это только самые тупые из них при наличии материальной ответственности будут считать в уме.
Но вот с закономерностями уже всё иначе: умение их выводить, умение собирать их из более простых блоков — крайне важное. Причём немаловажно и уметь это делать при помощи наиболее простых и надёжных из имеющихся в наличии способов: лучше на бумажке, чем в уме; лучше на логарифмической линейке/по таблице, чем на бумажке; лучше на калькуляторе, чем на логарифмической линейке; лучше в спецсофте на компьютере, чем на калькуляторе.
Причём оно верно не только в точных и естественных науках, но и, например, в истории. Там тоже важнее понимать закономерность событий, а не помнить разрозненные факты о неких отдельно взятых их деталях. С чем, увы, у школы на выходе тоже полный швах.
Чего там, у вас, вот, почти все десять—одиннадцать школьных лет были уроки литературы и русского. Ну и как, вы сможете написать рассказ? Стихотворение? Да блин, хотя бы более-менее связную статью?
Неужели эти навыки для «общего развития» вообще не важны, но зато очень важно уметь пересказать мнение Белинского о какой-то там книге? Чего, впрочем, сейчас никто, один хрен, повторить уже не сможет.
Или что, для общего развития реально важно зазубрить все нюансы склонений и спряжений русского языка, но совершенно не важно понимать, чем аналитический язык отличается от синтетического? Какими методами восстанавливают мёртвые языки? Как и за счёт чего языки меняются?
В школьные годы — особенно в ранние — я почти не отдавал себе отчёта, насколько именно вот эти вещи важнее того, что мне рассказывают в школе. Просто потому, что про них в основном даже и не заикались. Даже если речь всё-таки заходила о какой-то закономерности, она преподносилась как богоданный факт: «учёные всё это открыли, а вы просто зазубрите это, как священное писание».
Видимо, предполагалось, что ученики в принципе не способны понять методы, которыми учёные что-то там открывают. Ведь источники этих божественных откровений, как правило, не знали даже сами учителя.
Пожалуй, единственным светлым местом среди всего этого была математика, где всё-таки иногда показывалось, что теорема Пифагора не была сниспослана богами нам, простым смертным, а простые смертные, вообще говоря, всё-таки могут вывести её сами.
Впрочем, даже на математике всё это было весьма эпизодическим. На большинстве же других предметов об этом даже не заходила речь. Самый максимум: «Ньютон открыл этот закон». Как открыл? Какие обоснования? Как это вообще делается? Не спрашивайте — вам что, мало ссылки на Великого Учёного? Вы хотите оспорить его авторитет?
И что же получается в результате этого яростного развития кругозора через заучивания фактов и общего развития через повторение однотипных механических действий? Полная неспособность большинства окончивших школу хотя бы даже помыслить о том, что они могут самостоятельно что-то там открыть, вычислить, вывести, сконструировать. Или хотя бы проверить на адекватность.
Страна, заряжающая баночки перед телевизором — вот результат этого подхода.
Заданный школой тип мышления воспроизводится и дальше: не надо проверять, разбираться, пробовать, осмыслять — следует на глазок оценить, кто из вон тех чуваков выглядит авторитетнее, и ему просто поверить. Потому что именно он из божественного откровения знает всю правду о положении вещей. После этого надо заучить его слова и повторять их, как попугай.
Но зато, да, почти все умеют писать ручкой по бумаге и даже считать в столбик. И ещё помнят несколько дат произвольных исторических событий. Не зря, не зря было потрачено время. Общее развитие, всё такое.
МЕМОРИЗАЦИЯ СОБЫТИЙ КАК СПОСОБ ВЛИЯНИЯ НА ОБЩЕСТВЕННОЕ СОЗНАНИЕ Текст научной статьи по специальности «Социологические науки»
Аннотация научной статьи по социологическим наукам, автор научной работы — Абдулаева Элита Султановна, Курбанова Лидия Увайсовна
В статье представлен теоретический анализ феномена меморизации , как одного из компонентов формирования исторической памяти в контексте ее влияния на состояние общественного сознания в современном мире. Актуализация проблематики связана с динамикой глобализационных процессов, остро обозначивших сегодня проблемы консолидации общества, преодоления межэтнических и социокультурных конфликтов, нестабильности, разногласий религиозного и идеологического толка, что заставляет взглянуть на них через призму исторической памяти, культурных традиций, коммеморативных практик и их роли в сохранении национальной идентичности и снижения социальной напряженности в условиях глобализации. Результатом представленного исследования стал вывод о социальной природе исторической памяти, в которой процессы меморизации носят идеологически ангажированный характер, когда прошлое предстает не в его фактическом и неизменном виде, а исходя из общественно-политического запроса дня сегодняшнего, тем самым формируя «нужный» вектор социального развития.
i Надоели баннеры? Вы всегда можете отключить рекламу.
Похожие темы научных работ по социологическим наукам , автор научной работы — Абдулаева Элита Султановна, Курбанова Лидия Увайсовна
ПОЛИТИКА ПАМЯТИ В ПОСТСОВЕТСКИЙ ПЕРИОД: МЕМОРИАЛЬНЫЙ ЛАНДШАФТ ПАМЯТИ О ГРАЖДАНСКОЙ ВОЙНЕ В КАЗАХСТАНЕ
События и образы прошлогов исторической и культурной памяти
РЕЦЕНЗИЯ НА МОНОГРАФИЮ Е. В. ВОЛКОВА, Н. С. ЖУРАВЛЕВОЙ, И. В. СИБИРЯКОВА «“ЛЕНИНГРАДА ЧЕРНОМОРСКИЙ БРАТ”: СЕВАСТОПОЛЬ В СОВЕТСКОЙ КУЛЬТУРНОЙ ПАМЯТИ»
ДИАЛЕКТИКА ОТНОШЕНИЙ КОЛЛЕКТИВНОЙ ПАМЯТИ И ИСТОРИИ: PRO ET CONTRA
К вопросу о механизмах исторической памяти
i Не можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.
MEMORIZATION OF EVENTS AS A WAY TO INFLUENCE PUBLIC CONSCIOUSNESS
The theoretical analysis of the phenomenon of memorization as one of the components of the formation of historical memory in the context of its influence on the state of public consciousness in the modern world is presented. The actualization of the problems is connected with the dynamics of globalization processes, which have sharply identified today the problems of consolidation of society, overcoming interethnic and socio-cultural conflicts, instability, religious and ideological differences, which makes us look at these issues through the prism of historical memory, cultural traditions, commemorative practices and their role in preserving national identity and reducing social tension in the context of globalization. The result of the presented research was the conclusion about the social nature of historical memory, in which the processes of memorization are ideologically biased, when the past appears not in its actual and unchanged form, but based on the socio-political demand of today, thereby forming the «necessary» vector of social development.
Текст научной работы на тему «МЕМОРИЗАЦИЯ СОБЫТИЙ КАК СПОСОБ ВЛИЯНИЯ НА ОБЩЕСТВЕННОЕ СОЗНАНИЕ»
Абдулаева Элита Султановна
кандидат философских наук, доцент кафедры теории и технологии социальной работы, Чеченский государственный университет имени А.А. Кадырова elita8881@mail.ru
Курбанова Лидия Увайсовна
доктор социологических наук, профессор кафедры теории и технологии социальной работы,
Чеченский государственный университет имени А.А. Кадырова medna59@mail.ru
Elita S. Äbduiayeva
Candidate of Philosophical Sciences, Associate Professor of the Theory and Technologies of Social Work, Chechen State University name of A.A. Kadyrov elita8881@mail.ru
Lidiya U. Kurbanova
Doctor of Sociology Sciences, Professorof the Department Theory and Technology of Social Work, Chechen State University name of A.A. Kadyrov medna59@mail.ru
как способ влияния на общественное сознание
Аннотация. В статье представлен теоретический анализ феномена меморизации, как одного из компонентов формирования исторической памяти в контексте ее влияния на состояние общественного сознания в современном мире. Актуализация проблематики связана с динамикой глобализационных процессов, остро обозначивших сегодня проблемы консолидации общества, преодоления межэтнических и социокультурных конфликтов, нестабильности, разногласий религиозного и идеологического толка, что заставляет взглянуть на них через призму исторической памяти, культурных традиций, комме-моративных практик и их роли в сохранении национальной идентичности и снижения социальной напряженности в условиях глобализации. Результатом представленного исследования стал вывод о социальной природе исторической памяти, в которой процессы меморизации носят идеологически ангажированный характер, когда прошлое предстает не в его фактическом и неизменном виде, а исходя из общественно-политического запроса дня сегодняшнего, тем самым формируя «нужный» вектор социального развития.
Ключевые слова: историческая память, образы прошлого, меморизация, коммеморация, политика памяти, общественное сознание.
Memorization of events
as a way to influence public consciousness
Annotation. The theoretical analysis of the phenomenon of memorization as one of the components of the formation of historical memory in the context of its influence on the state of public consciousness in the modern world is presented. The actualization of the problems is connected with the dynamics of globalization processes, which have sharply identified today the problems of consolidation of society, overcoming inter-ethnic and socio-cultural conflicts, instability, religious and ideological differences, which makes us look at these issues through the prism of historical memory, cultural traditions, commemorative practices and their role in preserving national identity and reducing social tension in the context of globalization. The result of the presented research was the conclusion about the social nature of historical memory, in which the processes of memorization are ideologically biased, when the past appears not in its actual and unchanged form, but based on the socio-political demand of today, thereby forming the «necessary» vector of social development.
Keywords: historical memory, images of the past, memorization, commemoration, memory policy, public consciousness.
Актуальность представленной темы обусловлена, прежде всего, реалиями нынешнего социально-исторического контекста, в котором в условиях глобальных трансформационных процессов, охватывающих все без исключения области человеческого бытия, остро встают проблемы консолидации общества, преодоления
этнокультурных, религиозных, идеологических противостояний, социальных конфликтов и всеобщей напряженности. Подобное состояние социальной нестабильности актуализирует в сознании человека и общества необходимость духовной рефлексии, поиска смыслов и ценностей, способных стабилизировать, упорядочить хаотичную
динамику общественных процессов и сохранить целостность и устойчивость различных социальных групп1.
С этой точки зрения, память, как механизм преемственности, проводник и связующее звено между прошлым и будущим, выступает формой объективации человеческой истории в настоящем, и на фоне глубинных трансформаций дня сегодняшнего обретает, ни много ни мало, миссионерское звучание.
В рамках представленной статьи особый интерес для нас представляет феномен меморизации (коммеморации), как одного из наименее изученных направлений гуманитарных исследований, и, одновременно, одного из актуальнейших в современном социокультурном пространстве, обозначенном с легкой руки П. Нора, как «мемориальная эпоха» или «бум памяти» [3].
Ретроспективно прослеживая весь ход цивилиза-ционного развития, мы отмечаем, что память и история общества всегда находились в состоянии непростого взаимного противостояния, близкого к отчуждению и всегда балансирующего в рамках дихотомии «память-забвение». В этой связи, невольно вспоминаются труды М.К. Лавабра, где столь точно охарактеризована связь памяти и социальной истории: «память. славится умением тихо, но искренне сопротивляться тогда, когда политические власти грубо обращаются с историей и манипулируют прошлым» [1, с. 233]. Лавабр описывает память как концепт некой мифологизированной легенды, отражающей эмоционально-оценочное отношение индивидуума или общности к пережитому прошлому; отношение это формируется на реалиях текущего момента и, самое главное, на запросах и установках господствующей в конкретный период идеологии. Отсюда понятно, что воспоминания могут то приукрашиваться, то придаваться забвению, то выступать не столько историческим фактом, сколько концептуальным ядром тех стремлений, которые воплощают в жизнь власть имущие.
Подобный взгляд на природу коллективной памяти, которая выступает ключевым механизмом социальной принадлежности, идентичности индивидуумов и общностей, породил в гуманитари-стике целый ряд концепций, связанных с осмыслением взаимодействия памяти и истории и их воплощении в новом социально-философском направлении — «memory studies», родоначальником которого стал Морис Хальбвакс. Позиция автора относительно того, что реконструкция образов прошлого всегда имеет социально обусловленные предпосылки, послужила развитию новой мемориальной парадигмы, которая на рубеже второго и третьего тысячелетия становится одной из востребованных к исследованию тем. Основной идеей Хальбвакса является тезис о том, что носителем памяти может быть, как отдельный индивид, так и коллективы — семья, социальная группа, нация в целом.
Таким образом, память отдельного человека, и память социальной группы социально детерминированы, согласно исследователю [4].
Исходя из указанного умозаключения, то, что на протяжении долгого времени было принято считать индивидуальным, оказалось, на самом деле, социальным.
Очевидно, что непрерывное обращение к прошлому, диалог с ним — фактор определяющий развитие любой общности, и в этом смысле, память, как индивидуальная, так и коллективная, становится одним из определяющих конструктов, опосредующих формирование и развитие социального бытия.
Каждый период истории отражает образы прошлого через призму дня настоящего, любые воспоминания прорастают в сознании человека в том варианте, который продиктован ситуацией «здесь и сейчас»; новые условия, «прирастая» к историческим контекстам, наслаиваясь на них и интегри-руясь с ними, формируют новые смыслы, образы, нарративы, создавая всякий раз подвижную среду для развития общественного сознания [4].
Особенно остро проблематика памяти актуализируется в кризисные времена, когда общественные процессы подвергаются кардинальным сдвигам, и прежние картины мира уступают место новым, рушатся старые мировоззренческие смыслы, которые не в состоянии «слиться» с новой реальностью. Именно в такой бифуркационной точке оказался мир на рубеже XX-XXI вв. Сложившаяся сегодня социокультурная и политическая повестка, характеризующаяся тотальной дестабилизацией общественного бытия, диктует нам новые установки, в том числе, и касающиеся взаимодействия между прошлым, настоящим и будущим [1].
Попав в переломную стадию развития, мы изо всех сил ищем те связующие нити, те скрепы, которые станут почвой для сохранения баланса и социальной идентичности. И у человечества нет иного пути обрести устойчивость и уверенность, как вновь и вновь обращаться к истории, воспоминаниям и опыту прошлого, черпая в них то значимое и актуальное именно «сейчас», что смогло бы в галопирующем потоке инноваций заново осмыслить такие, ставшие архаичными понятия, как «традиция», «след», «забвение», «память» и т.п.
Концепции памяти, зародившиеся еще в первые десятилетия века ХХ, к сегодняшнему дню оформились в новую memory — парадигму в фокусе внимания которой находятся вопросы, связанные с соотношением таких социально-философских категорий, как память и история, память и общественное сознание, память и идентичность [7]. В мемориальном дискурсе актуализировались проблемы сохранения и трансляции информации о прошлом, исторической и коллективной памяти, способов обращения с историей и репрезентация
1 Исследование выполнено за счет гранта Российского научного фонда № 23-28-00698.
образов прошлого в контексте современных реалий.
В этой связи, социально значимым аспектом исследований становится исследование феноменов меморизации, коммеморативных практик и исторической политики. Большинство исследователей едины во мнении, что историография, целью которой является структуризация разрозненных образов и событий пошлого, облекая их в форму упорядоченных нарративов, опирается, в первую очередь, на идеологический вектор текущего исторического момента, рассматривая всю цепь предшествующих событий сквозь призму господствующих в той или иной общности социально-политических целей и задач [5]. Поэтому неслучайно интерес авторов настоящей статьи представляет рассмотрение феноменов мемори-зации и забвения, их соотношения как механизмов формирования коллективного единства и возможности нивелирования социальных противостояний и напряженности.
Теоретико-методологической основой исследования выступает корпус актуальных источников в области memory studies: концепции памяти, как социокультурного феномена и, теории, касающиеся взаимосвязи коллективной исторической памяти с идеологией, историей и коллективным сознанием.
Методология исследования мемориальных практик основывается на социокультурном и исто-рико-сравнительном анализе, и объединяет феноменологический и конструктивистский подходы.
Исследование памяти, как таковой, в научном познании является одним из ведущих направлений, начиная с античности. Однако вплоть до Х1Х века, она рассматривалась исключительно как процесс, связанный с психикой человека, как проявление индивидуального сознания, как статичный феномен, выполняющий функцию хранения информации. Лишь в начале XX века происходит кардинальный пересмотр взглядов на феномен памяти, когда появляются первые концепции, ориентированные на понимание памяти, как объекта социально-философского осмысления. Такой подход к осмыслению памяти показал, что она — отнюдь, не константная категория, инициированная сугубо субъективными психическими процессами индивида, а, вполне себе, внешне детерминированный процесс запоминания (или забытья), обусловленный актуальными социокультурными реалиями, текущей конъюнктурой, и политико-идеологическими запросами, господствующими в данной, конкретной социальной общности на данном историческом отрезке [4].
Новое видение концепта «память», зародившееся в первых десятилетиях ХХ века, уже к концу столетия оформилось в самостоятельное научное направление — memory studies, объединившем в себе представителей самых различных гуманитарных направлений: социологии,
философии, культурологии, антропологии, психологии и проч.
До сегодняшнего дня понятийный аппарат «парадигмы памяти» является основным предметом гуманитарных дискуссий, также, как и методология исследовательского поля остается вопросом открытым, неоднозначным и местами противоречивым; интересно, что, чем активнее пополняется массив теоретических изысканий, тем более запутанным и хаотичным становится методологический аппарат проблематики.
Выделяя в качестве определения коллективного измерения памяти различные термины — «коллективная», «историческая», «социальная», «культурная память» — разные авторы либо отождествляют их, либо строго дифференцируют, единогласно принятого понимания памяти как социального феномена в memory studies сегодня нет [1].
Попытки упорядочить такой терминологический хаос и определиться с соотношением предлагаемых дефиниций, стоит рассматривать, все-таки, как положительный маркер, демонстрирующий естественный и закономерный исследовательский процесс формирования новой «парадигмы памяти» [3].
Уже сегодня становится понятно, что предлагаемые концепты, логичнее всего, рассматривать в их взаимодополняющем соотношении — они не синонимичны, но и не полярны — каждый из них описывает разные, но неотъемлемые друг от друга характеристики коллективного измерения памяти.
В формирующихся социальных реалиях начала XXI века особую практическую значимость приобрела задача сохранения целостности и обеспечения преемственности накопленного народами социально-культурного опыта. Обращение к такому опыту и его активное использование становится важнейшим условием выработки устойчивого иммунитета против угрозы разрушения их социальной и этнокультурной идентичности [9]. Социологический анализ ее механизмов, особенностей формирования и эволюции, путей и способов воздействия на общество в целом и на сознание отдельных индивидов и социальных групп позволяет глубже понять многомерную социальную реальность и обеспечить возможность эффективного социального управления, планирования и прогнозирования.
Значимость обращения к проблеме исторической памяти многократно возрастает в ситуации масштабных информационных войн, которые в последние годы ведутся с максимальной интенсивностью и ожесточением. Информационная война направлена на уничтожение либо, что еще более опасно, переформатирование исторической памяти народа, наполнение его общественного сознания чуждыми и деструктивными для него ценностями, образами, мифами [7].
1. Абдулаева Э.С. Влияние виртуальной реальности на бытие и сознание человека / Э.С. Абдулаева // В сборнике: Социальная реальность виртуального пространства. материалы IV Международной научной конференции. Иркутск, 2022. С. 8-12.
2. Лавабр М.К. Память и политика: о социологии коллективной памяти / М.К. Лавабр; Ред. Е. В. Филиппова, М. Шуаре // Психоанализ и науки о человеке. М. : Прогресс-Культура, 1996. С. 233-244.
3. Мегилл А. Историческая эпистемология : научная монография / А. Мегилл; Пер. М. Кукар-цевой, В. Катаева, В. Тимонина. М. : «Канон+» РООИ «Реабилитация», 2007. 480 с.
4. Нора П. Проблематика мест памяти / П. Нора, М. Озуф, Ж. де Пюимеж, М. Винок; Пер. с фр. Д. Хапаева// Франция-память. СПб. : Издательство С.-Петерб. ун-та, 1999. С. 17-50.
5. Хальбвакс М. Коллективная и историческая память / М. Хальбвакс // Неприкосновенный запас. 2005. № 2-3 (40-41). URL : https://magazines. gorky.media/nz/2005/2/kollektivnaya-i-istoricheska yapamyat.html (дата обращения 01.02.2022).
6. Мишалова Е.В. Исторический нарратив как форма организации и репрезентации исторического знания / Е.В. Мишалова // Epistemology & Philosophy of Science. 2012. № 1. URL : https:// cyberleninka.ru/article/n/istoricheskiy-narrativ-kak-forma-organizatsii-i-reprezentatsii-istoricheskogo-znaniya (дата обращения 02.04.2023).
7. Мысливец Н.Л. Историческая память как социокультурный феномен: опыт социологической реконструкции / Н.Л. Мысливец, О.А. Романов // Вестник РУДН. Серия: Социология. 2018. № 1. URL : https://cyberleninka.ru/article/n/istoricheskaya-pamyat-kak-sotsiokulturnyy-fenomen-opyt-sotsiolo gich eskoy-rekonstruktsii (дата обращения 02.04.2023).
8. Савельев А.Е. Концепции памяти: история развития и современные исследования / А.Е. Савельев // Вестник КРУ МВД России. 2012. №2 (16). URL : https://cyberleninka.rU/article/n/kontseptsii-pa myati-istoriya-razvitiya-i-sovremennye-issledovaniya (дата обращения 02.04.2023).
9. Youth extremist attitudes driven by destabilization of traditional culture / E.S. Abdulaeva, L.U. Kurba-nova, Z.Ya. Umarova, Kh.L. Nalgieva, Z.R. Akh-madova // Individual and Society in the Global Era. 2019. P. 85-92.
1. Abdulayeva E.S. The influence of virtual reality on human existence and consciousness / E.S. Abdulayeva // In the collection: The social reality of virtual space. materials of the IV International Scientific Conference. Irkutsk, 2022. P. 8-12.
2. Lavabr M.K. Memory and politics: on the sociology of collective memory // Psychoanalysis and human sciences / M.K. Lavabr; Ed. E.V. Filippova, M. Shuare. M. : Progress-Culture, 1996. P. 233-244.
3. MegillA. Historical epistemology : scientific monograph / A. Megill; Transl. M. Kukartseva, V. Ka-taeva, V. Timonina. M. : «Canon +» ROOI «Rehabilitation», 2007. 480 p.
4. Nora P. Problematics of places of memory / P. Nora, M. Ozuf, J. de Puimezh, M. Vinok / Transl. from French: D. Hapaeva // France-memory. SPb. : Publishing House of St. Petersburg University, 1999. P. 17-50.
5. Halbvaks M. Collective and historical memory / M. Halbvaks // Inviolable reserve. 2005. № 2-3 (4041). URL : https://magazines.gorky.media/nz/2005/2/ kollektivnaya-i-istoricheskayapamyat.html (date of the application 01.02.2022).
6. Mishalova E.V. Historical narrative as a form of organization and representation of historical knowledge / E.V. Mishalova // Epistemology & Philosophy of Science. 2012. № 1. URL : https://cyber-leninka.ru/article/n/istoricheskiy-narrativ-kak-forma-organizatsii-i-reprezentatsii-istoricheskogo-znaniya (date of the application 02.04.2023).
7. Myslivets N.L. Historical memory as a socio-cultural phenomenon: the experience of sociological reconstruction / N.L. Myslivets, O.A. Romanov // Vest-nik RUDN. Series: Sociology. 2018. № 1. URL : https://cyberleninka.ru/article/n/istoricheskaya-pa-myat-kak-sotsiokulturnyy-fenomen-opyt-sotsiolog-icheskoy-rekonstruktsii (date of the application 02.04.2023).
8. SavelyevA.E. Concepts of memory: history of development and modern research / A.E. Savelyev // Bulletin of the KRU of the Ministry of Internal Affairs of Russia. 2012. № 2(16). URL : https://cyberlenin ka.ru/article/n/kontseptsii-pamyati-istoriya-razvitiya-i-sovremennye-issledovaniya (date of the application 02.04.2023).
9. Youth extremist attitudes driven by destabilization of traditional culture / E.S. Abdulaeva, L.U. Kurba-nova, Z.Ya. Umarova, Kh.L. Nalgieva, Z.R. Akh-madova // Individual and Society in the Global Era. 2019. P. 85-92.
меморизация
МЕМОРИЗАЦИЯ и, ж. mémoriastion устар.? f. Запоминание. <Проверяются> мышечная энергия, чувствительность, скорость реакции, меморизация и другие формы умственной работы. Природы 1934 7 30.
Исторический словарь галлицизмов русского языка. — М.: Словарное издательство ЭТС http://www.ets.ru/pg/r/dict/gall_dict.htm . Николай Иванович Епишкин epishkinni@mail.ru . 2010 .
- Обратная связь: Техподдержка, Реклама на сайте
- Путешествия
Экспорт словарей на сайты, сделанные на PHP,
WordPress, MODx.
- Пометить текст и поделитьсяИскать в этом же словареИскать синонимы
- Искать во всех словарях
- Искать в переводах
- Искать в ИнтернетеИскать в этой же категории
Поделиться ссылкой на выделенное
Прямая ссылка:
… Нажмите правой клавишей мыши и выберите «Копировать ссылку»
Что такое мемоизация? Как и когда использовать мемоизацию в JavaScript и React
Всем привет! В этой статье мы поговорим о мемоизации (запоминании), методе оптимизации, который может помочь сделать тяжелые вычислительные процессы более эффективными.
Мы начнем с разговора о том, что такое мемоизация (запоминание) и когда его лучше всего реализовать. Позже мы приведем практические примеры для JavaScript и React.
Оглавление статьи
- Что такое мемоизация
- Как она работает
- Пример мемоизации в JavaScript
- Пример мемоизации в React
4.1 Pure components
4.2 PureComponent class
4.3 Компонент высшего порядка memo
4.4 Когда использовать хук useCallback
4.5 Когда использовать хук useMemo
4.6 Когда использовать мемоизацию - PS от автора перевода
Что такое мемоизация
В программировании мемоизация — это метод оптимизации, который делает приложения более эффективными и, следовательно, более быстрыми. Он делает это, сохраняя результаты вычислений в кэше и извлекая ту же информацию из кэша в следующий раз, когда она потребуется, вместо того, чтобы вычислять ее снова.
Проще говоря, метод состоит в том, чтобы сохранить в кэше выходные данные функции и заставить функцию проверять, находится ли каждое требуемое вычисление в кэше, прежде чем вычислять его.
Кэш — это просто временное хранилище данных, в котором хранятся данные, чтобы будущие запросы на эти данные могли обслуживаться быстрее.
Мемоизация — это простой, но мощный трюк, который может помочь ускорить наш код, особенно при работе с повторяющимися и тяжелыми вычислительными функциями.
Как она работает
Концепция мемоизации в JavaScript основана на двух концепциях:
- Замыкания: Комбинация функции и лексической среды, в которой эта функция была объявлена. Вы можете прочитать больше о них здесь и тут.
- Функции высшего порядка: Функции, которые работают с другими функциями, либо принимая их в качестве аргументов, либо возвращая их. Подробнее о них вы можете прочитать здесь.
Пример мемоизации в JavaScript
Чтобы прояснить эту тумбу-юмбу, мы воспользуемся классическим примером последовательности Фибоначчи.
Последовательность Фибоначчи — это набор чисел, который начинается с единицы или нуля, за которым следует единица, и продолжается на основе правила, согласно которому каждое число (называемое числом Фибоначчи) равно сумме двух предыдущих чисел.
Это выглядит примерно так:
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, …
Допустим, нам нужно написать функцию, которая возвращает n-й элемент в последовательности Фибоначчи. Зная, что каждый элемент является суммой двух предыдущих, рекурсивное решение может быть следующим:
const fib = n =>
Если вы не знакомы с рекурсией, это просто концепция функции, которая вызывает саму себя, с каким-то базовым кейсом, чтобы избежать бесконечного цикла (в нашем случае, если (n
Если мы вызовем нашу функцию, подобную fib(5), под капотом наша функция будет выполняться следующим образом:

Видите, что мы выполняем fib(0), fib(1), fib(2) и fib(3) несколько раз. Что ж, это именно та проблема, которую помогает решить кэширование результатов вычислений.
При кэшировании нет необходимости пересчитывать одни и те же значения несколько раз – мы просто сохраняем каждое вычисление и возвращаем то же значение, когда оно потребуется вновь.
При использовании мемоизации наша функция будет выглядеть примерно следующим образом:
const fib = (n, memo) => < memo = memo || <>; if (memo[n]) return memo[n]; if (n
Что мы делаем в первую очередь, так это проверяем, получили ли мы объект memo в качестве параметра. Если мы этого не сделали, мы установили его как пустой объект:
memo = memo || <>
Затем мы проверяем, содержат ли ключи переменной memo значение, которое мы получаем в качестве параметра. Если это так, мы просто вернем его. Вот где происходит волшебство. Нет необходимости в дополнительной рекурсии, как только мы сохраним наше значение в memo. =)
if (memo[n]) return memo[n]
Если у нас еще нет значения в memo, мы снова вызываем fib, но теперь передаем memo в качестве параметра, поэтому вызываемые нами функции будут использовать те же запоминаемые значения, что и в «исходной» функции. Обратите внимание, что мы добавляем конечный результат в кэш перед его возвратом.
return memo[n] = fib(n-1, memo) + fib(n-2, memo)
И это все! С помощью двух строк кода мы внедрили запоминание и значительно улучшили производительность нашей функции!
Пример мемоизации в React
В React мы можем оптимизировать наше приложение, избегая ненужного повторного рендеринга компонентов с помощью запоминания. Как я уже упоминал в статье об управлении состоянием в React, компоненты повторно рендерятся из-за двух вещей:
- Изменения состояния
- Изменение props
Это именно та информация, которую мы можем «кэшировать», чтобы избежать ненужных повторных рендеров.
Но прежде чем мы перейдем к коду, давайте разберем некоторые важные понятия.
Pure components
React поддерживает либо классовые, либо функциональные компоненты.
- Functional component — это обычная функция JavaScript, которая возвращает JSX
- Class component — это класс JavaScript, который расширяет React.Component и возвращает JSX внутри метода рендеринга.
И что же тогда представляет собой pure component? Что ж, основываясь на концепции чистоты в парадигмах функционального программирования, функция считается чистой, если:
- Её возвращаемое значение определяется только его входными значениями
- Её возвращаемое значение всегда одинаковое для одинаковых входных значений
Точно так же React Component считается чистым, если он отображает один и тот же вывод для одного и того же состояния и props.
Функциональный чистый компонент может выглядеть следующим образом:
// Pure component export default function PureComponent() < return ( My name is ) >
Мы передаем два props, а компонент отображает их. И рендеринг будет всегда одинаковым для одинаковых props.
Рассмотрим другой пример, мы добавляем случайное число к каждому prop перед рендерингом. Тогда результат может быть другим, даже если prop останутся прежними, так что это не будет считать чистым компонентом.
// Impure component export default function ImpurePureComponent() < return ( My "impure" name is ) >
Те же примеры с использованием React.Component:
// Pure component class PureComponent extends React.Component < render() < return ( My "name is ) > > export default PureComponent;
// Impure component class ImpurePureComponent extends React.Component < render() < return ( My "impure" name is ) > > export default ImpurePureComponent;
PureComponent Class
Для создания класса PureComponents для реализации меморизации React предоставляет базовый класс PureComponent.
Компоненты класса, расширяющие класс React.PureComponent имеет некоторые улучшения производительности и оптимизации рендеринга. Это связано с тем, что React реализует для них метод shouldComponentUpdate() с неглубоким сравнением props и состояний.
Давайте рассмотрим это на примере. Здесь у нас есть компонент класса, который представляет собой счетчик, с кнопками для изменения этого счетчика, добавляющего или вычитающего числа. У нас также есть дочерний компонент, которому мы передаем «name», представляющий собой строку.
import React from "react"; import Child from "./child"; class Counter extends React.Component < constructor(props) < super(props); this.state = < count: 0 >; > handleIncrement = () => < this.setState(prevState =>< return < count: prevState.count - 1 >; >) >; handleDecrement = () => < this.setState(prevState =>< return < count: prevState.count + 1 >; >) >; render() < console.log("Parent render"); return ( /> ) >; > export default Counter;
Дочерний компонент — это чистый компонент, который просто отображает полученный prop.
import React from "react"; class Child extends React.Component < render() < console.log("Skinny Jack") return ( ) > > export default Child;
Обратите внимание, что мы добавили логирование в обоих компонентах, так что мы получаем консольные сообщения каждый раз, когда они отображаются. И, говоря об этом, угадайте, что происходит, когда мы нажимаем кнопки увеличения или уменьшения? Наша консоль будет выглядеть следующим образом:

Дочерний компонент выполняет повторный рендеринг, даже если он получает один и тот же prop.
Чтобы внедрить мемоизацию и оптимизировать эту ситуацию, нам необходимо расширить React.PureComponent компонента в нашем дочернем компоненте, например:
import React from "react"; class Child extends React.PureComponent < render() < console.log("Skinny Jack") return ( ) > > export default Child;
После этого, если мы нажмем кнопку увеличения или уменьшения, наша консоль будет выглядеть следующим образом:

Просто начальный рендеринг дочернего компонента и никаких ненужных повторных рендеров, когда prop не изменился. Проще простого. 😉
При этом мы рассмотрели компоненты класса, но в функциональных компонентах мы не можем расширить класс React.PureComponent. Вместо этого React предлагает один HOC (High-Order Component) и два хука для работы с мемоизацией.
Компонент высшего порядка memo
Если мы преобразуем наш предыдущий пример в функциональные компоненты, мы получим следующее:
import < useState >from 'react'; import Child from "./child"; export default function Counter() < const [count, setCount] = useState(0); const handleIncrement = () =>setCount(count+1); const handleDecrement = () => setCount(count-1); return ( /> ) >
import React from 'react'; export default function Child() < console.log("Skinny Jack") return ( ) >
Это вызвало бы ту же проблему, что и раньше, если бы дочерний компонент повторно отображался без необходимости. Чтобы решить эту проблему, мы можем обернуть наш дочерний компонент в компонент memo более высокого порядка, например, следующим образом:
import React from 'react'; export default React.memo(function Child() < console.log("Skinny Jack"); return ( ) >)
Компонент более высокого порядка или HOC аналогичен функции более высокого порядка в javascript. Функции более высокого порядка — это функции, которые принимают другие функции в качестве аргументов ИЛИ возвращают другие функции. В React HOC берут компонент как prop и манипулируют им с какой-то целью, фактически не изменяя сам компонент. Вы можете представить это как компоненты-оболочки.
В этом случае memo выполняет ту же работу, что и Pure Component, избегая ненужного повторного отображения компонентов, которые он оборачивает.
Когда использовать хук useCallback
Важно отметить, что memo не работает, если prop, передаваемый компоненту, является функцией. Давайте реорганизуем наш пример, чтобы увидеть это:
import < useState >from 'react'; import Child from "./child"; export default function Counter() < const [count, setCount] = useState(0); const handleIncrement = () =>setCount(count+1); const handleDecrement = () => setCount(count-1); return ( /> ) >
import React from 'react'; export default React.memo(function Child() < console.log("Skinny Jack"); return ( <> Really Skinny Jack >) >)
Теперь наш prop — это функция, которая всегда регистрирует одну и ту же строку, и ваша консоль снова будет выглядеть следующим образом:

Это связано с тем, что на самом деле при повторном рендеринге каждого родительского компонента создается новая функция. Итак, если создается новая функция, это означает, что у нас есть новый prop, и это означает, что наш дочерний компонент также должен быть повторно отрисован.
Чтобы справиться с этой проблемой, react предоставляет useCallback хук. Мы можем реализовать его следующим образом:
import < useState, useCallback >from 'react'; import Child from "./child"; export default function Counter() < const [count, setCount] = useState(0); const handleIncrement = () =>setCount(count+1); const handleDecrement = () => setCount(count-1); return ( , []) > /> ) >
И это решает проблему ненужного повторного рендеринга дочерних элементов.
Что делает useCallback, так это удерживает значение функции, несмотря на повторный рендеринг родительского компонента, поэтому дочерний prop останется прежним до тех пор, пока значение функции также остается прежним.
Чтобы использовать его, нам просто нужно useCallback хук вокруг объявляемой нами функции. В массиве, присутствующем в хуке, мы можем объявить переменные, которые будут инициировать изменение значения функции, когда переменная тоже изменится (точно так же, как работает useEffect).
const testingTheTest = useCallback(() => < console.log("Tested"); >, [a, b, c]);
Когда использовать хук useMemo
useMemo — это хук, очень похожий на useCallback, но вместо кэширования функции useMemo будет кэшировать возвращаемое значение функции.
В этом примере useMemo будет кэшировать число 2:
const num = 1; const answer = useMemo(() => num + 1, [num]);
В то время как useCallback закеширует () => num + 1
const num = 1; const answer = useCallback(() => num + 1, [num]);
Вы можете использовать useMemo очень похожим образом на memo HOC. Разница в том, что useMemo — это хук с массивом зависимостей, а memo — это HOC, который принимает в качестве параметра необязательную функцию, использующую props для обновления компонента с условием.
Более того, useMemo кэширует значение, возвращаемое между рендерами, в то время как memo кэширует весь react компонент между рендерами.
Когда использовать мемоизацию
Мемоизация в React — хороший инструмент, который нужно иметь в своем арсенале, но это не то, что вы должны использовать везде. Эти инструменты полезны для работы с функциями или задачами, требующими больших вычислений.
Мы должны отдавать себе отчет в том, что в фоновом режиме все три этих решения также увеличивают накладные расходы на наш код. Поэтому, если повторный рендеринг вызван задачами, которые не требуют больших вычислительных затрат, возможно, лучше решить его другим способом или оставить в покое.
Я рекомендую эту статью Кента К. Доддса для получения дополнительной информации по этой теме.
PS от автора перевода
Благодарю Вас если вы дочитали до этого момента. Меня зовут Руслан и я работаю Typescript Backend разработчиком. Это мой первый перевод для Хабра, поэтому буду благодарен любым комментариям и замечаниям.