Как программирование влияет на мозг: три научных факта
Учёные считают, что программирование не просто нагружает мозг — оно его меняет, заставляет думать иначе. Рассказываем, как именно.
Полина Суворова для Skillbox Media
Программисты на самом деле думают по-особенному. Про это даже целая книга написана: «Думай как программист: введение в решение творческих задач».
Комментирует переводчик
На русском языке эта книга Антона Спрола (V. Anton Spraul) издана под названием «Думай как программист. Креативный подход к созданию кода. C++ версия».
Автор считает, что настоящий программист к решению любой задачи должен подходить организованно: составлять план с учётом своих сильных и слабых сторон и следовать ему.
При этом не обязательно изобретать решение с нуля — важно научиться применять готовые наработки. Но опять же — делать это надо грамотно. То есть не бездумно копировать чужой код, а разбираться в алгоритмах, шаблонах проектирования, учиться видеть общее в разных проблемах.
Сам создатель Apple, Стив Джобс, говорил: «Программирование учит вас думать».
Программисты не просто пишут простыни кода или что-то там разрабатывают. Им приходится решать сложные задачи, подключать логику и мыслить нестандартно. Проявляется это даже в профессиональных шутках.
«Программирование похоже на секс: одна ошибка — и вам придётся поддерживать результат всю жизнь».
Майкл Синц
Комментирует переводчик
В разработке программного обеспечения поддержка (support) — это когда компания-разработчик консультирует пользователей своих продуктов, помогает с настройкой программ и исправляет ошибки в их работе.
Майкл Синц, конечно, не считает ребёнка ошибкой. Он говорит о беспечности и её результате: в одном случае это плохой код, а в другом — дети, которых родители нередко поддерживают всю жизнь.
Учёные много лет копаются в мозгах у программистов, чтобы узнать, что там происходит и чем этот самый программерский мозг отличается от прочих.
В конце концов они выяснили, что программирование как интеллектуальная деятельность влияет на то, как человек думает.
Факт №1
Программирование активизирует центры обучения в мозге
Согласно исследованию доктора Джанет Зигмунд (Janet Siegmund), одного из ведущих мировых экспертов в области создания исследовательских компьютерных программ, анализ программного кода активизирует в мозге сразу пять зон.
Они связаны с обработкой естественного языка, рабочей памятью и вниманием.
Комментирует переводчик
- BA47 — это орбитальная часть нижней лобной извилины. Она отвечает за язык и рабочую память.
- BA44 и BA40 — оперкулярная часть нижней лобной извилины и нижняя теменная доля соответственно. Они отвечают тоже за рабочую память.
- BA6 — средняя лобная извилина (внимание, язык и рабочая память).
- BA21 — средняя височная извилина (семантический поиск в памяти).
То есть при восприятии исходного кода активны части мозга, которые связаны с обработкой языка, памятью и вниманием, и почти не задействованы центры, ассоциированные с математикой и вычислениями.
Когда эти зоны используются часто, нейронных связей между ними становится всё больше и больше. Это похоже на протаптывание тропинки. (По такому же принципу улучшается мышечная память при регулярном повторении монотонных движений.) В результате мозг быстрее реагирует на изменения, а мы быстрее обучаемся.
Комментирует переводчик
Японские учёные в другом эксперименте выяснили, что чем выше квалификация программиста, тем более активны эти зоны и менее нагружены все «неспецифические».
Ещё одно исследование провёл аспирант Университета Джона Хопкинса Юнь-Фэй Люа (Yun-Fei Liua). В нём пятнадцати подопытным программистам делали фМРТ-сканирование.
«Есть так много способов научиться программировать: от самостоятельного обучения до курсов. А вот мозговые зоны у людей, когда они работают с кодом, всегда активизируются одни и те же. Это удивительно», — подвёл итог Юнь-Фэй.
Комментирует переводчик
В этой серии экспериментов учёные сравнивали, какие зоны активируются при анализе программного кода и при решении других задач: на логику, математику и понимание естественного языка.
Выяснилось, что программистские задачки по рисунку активации похожи на логические (левый лобный полюс) и математические (внутритеменная борозда и правый лобный полюс), в то же время при восприятии кода больше включаются «лингвистические» отделы мозга.
Занятия вроде программирования стимулируют мозг, это отличная тренировка для него. Они улучшают способность запоминать информацию и решать задачи.
Поскольку задачи программиста сложны и многогранны, они требуют аппарата себе под стать. Так, написание кода меняет мозг, усиливает нейронную связанность между разными его областями. Есть мнение, что такой мозг лучше способен проявлять креативность, хорошо анализировать проблемы, мыслить логически, да и в целом быстрее обучается.
От переводчика
Любопытство учёных распространяется не только на программистов. Частенько достаётся и шахматистам, и переводчикам-синхронистам, и музыкантам.
Например, в этом исследовании с помощью фМРТ-сканера наблюдали за мозгом профессиональных пианистов.
Снимки показали, что при музыкальной импровизации так же, как и в случае с программированием, активизируются зоны префронтальной коры, отвечающие за речь. Кроме них, активны были сенсомоторные области, а также угловая извилина — она вовлечена в процессы, связанные с восприятием пространства, памятью, вниманием и психическим состоянием человека.
Другие исследователи, Цюньлинь Чэнь (Qunlin Chen) и его коллеги, пошли дальше и решили сравнить музыкальное, литературное и художественное творчество — то есть сразу три вида деятельности.
Эти специалисты Университета штата Пенсильвания провели метаанализ 21 эксперимента, включающего фМРТ-сканирование мозга творческих людей, выявили сходства и различия в рисунке активации зон.
Оказалось, что при всех трёх видах творчества значительно активизировались три отдела мозга, ассоциированные с моторными функциями, рабочей памятью и речью. Две из них упоминались и в исследовании Джанет Зигмунд, а вот моторика при программировании, похоже, играет не такую большую роль. Наверное, потому что мастерство программиста измеряется не числом напечатанных строк кода, а качеством этого кода :)
Факт №2
Программирование меняет мышление
«Инструменты, которыми мы пользуемся, незаметно для нас самих, но неотвратимо влияют на наши ментальные привычки, а значит, и на мыслительные способности».
Эдсгер Дейкстра
Само устройство языка программирования, без сомнения, меняет образ мышления тех, кто с этим языком работает.
Я говорю не просто о написании строчек кода, а об ином мышлении, которое нужно для создания этих строчек. То есть о том, чтобы взять какие-то смутные концепции и превратить их во что-то конкретное и понятное — представить в виде кода, который решает задачу.
Проведём эксперимент. Попробуйте прочесть это сообщение:
«По рзеульаттам илссеовадний Кмедгижобрксо унвиертисета, не иеемт занчнеия, в кокам пряокде рсапожолены бкувы в солве. Галвоне, чотбы преавя и пслоендяя бквуы блыи на мсете. Осатьлыне бкувы мгоут селдовтаь в плоонм бсепордяке, всё рвано ткест чтаитсея без побрелм. Это потмоу, что мы чиатем не кдаужю бкувy по отдльенотси, а всё солво цликеом».
Источник: dictionary.com
Получилось? Конечно же вы поняли смысл текста, несмотря на бардак с буквами. (Это явление называется типогликемией.) А удалось это потому, что обычно люди читают не буквы по отдельности, а слова целиком.
Комментирует переводчик
Это не совсем верно.
1. Кембриджский университет не проводил исследования, о котором автор говорил выше. Этот текст — популярный мем.
2. Не так всё просто и с перестановкой букв: чтобы понять слова, значима не только позиция первой и последней буквы. Важно ещё:
- как далеко друг от друга теперь стоят буквы, бывшие соседними;
- как много в тексте служебных слов: артиклей, союзов и им подобных;
- насколько текст предсказуем, то есть легко ли предугадать следующие слова по контексту.
3. Есть мнение, что, наряду с выделением слов целиком, глаз при сканировании текста всё же считывает и отдельные буквы.
Подход с чтением слова целиком не годится для программирования: там бесполезно писать srting вместо string, несмотря на то, что ваш мозг в любом случае поймёт написанное.
Мне кажется, что эта особенность при работе с кодом, когда читать приходится все отдельные символы, а не слова и предложения сразу, развивает иной способ мыслить.
Это переносится и на более высокие уровни мышления: даже считывая смысл целиком, нельзя забивать на детали. Когда программист пишет код, ему нужно действовать способами, подходящими для опредёленного контекста, — начиная с корректного синтаксиса и правильных названий для всего и вся. Одна маленькая ошибка — и программа не заработает (или будет работать неверно).
Комментирует переводчик
Внимание к деталям пригодится и в повседневной жизни. Если тренировать этот навык не только на работе и чаще «думать как программист», вы не пропустите новый дорожный знак, даже если уже пять лет ездите по одной дороге, а знак поставили только вчера. А ещё не придётся срочно бежать в магазин за переходником, потому что вы по недосмотру купили роутер с китайской вилкой.
Если прислушаться к советам Антона Спрола и перед решением хотя бы самых важных бытовых задач составлять план и учитывать свои сильные и слабые стороны, возможно, вам даже удастся завершить в срок ремонт в квартире. Деньги и стройматериалы не закончатся в самый разгар мероприятий, а соседи снизу не подадут на вас в суд за то, что вы взялись сами устанавливать унитаз (без опыта сантехнических работ) и затопили их.
Кроме того, программирование приучает ожидать подвоха там, откуда не ждали, — пользователи, а до них тестировщики, не всегда используют приложение так, как задумывали его создатели: жмут не на те кнопки и не в то время, вводят некорректные данные и тому подобное. Наверное, поэтому настоящий программист всегда смотрит в обе стороны, прежде чем перейти дорогу. Даже если это дорога с односторонним движением :-)
Львиная доля работы программистов приходится на отладку кода — поиск и исправление ошибок в нём. И тут им тоже приходится быть начеку. Ведь, как говорится в известной шутке, отладку кода можно сравнить с детективом, где программист сразу и следователь, и свидетель, и главный подозреваемый.
В программировании важны не только логика и математика — чтобы создавать что-то новое, нужен творческий подход, умение мыслить нестандартно. Именно в этом направлении и развиваются мыслительные процессы.
Факт №3
Программирование улучшает память и когнитивные навыки
С возрастом ухудшается наша способность запоминать новое и память в целом, но в одном из исследований учёные обнаружили, что «интеллектуальные занятия служат буфером, который сглаживает когнитивный спад».
Проще говоря, занятия, которые требуют значительных умственных усилий, такие как программирование, помогают бороться с потерей памяти и укреплять здоровье мозга.
Комментирует переводчик
К слову, деменция может настигнуть не только в старости: ранняя деменция диагностируется у людей в возрасте от 30 лет. Учёные считают, что риск её снижается, если питаться сбалансированно, поддерживать физическую активность и активность мозга.
Программирование — отличная зарядка для ума. И вряд ли хуже решения кроссвордов, изучения иностранных языков или разгадывания головоломок. Ведь, согласно этому исследованию, программирование соответствует всем критериям мыслительной деятельности, которая действительно улучшает мозг:
- Во-первых, это интенсивная когнитивная деятельность.
- Во-вторых, она интеллектуально трудна.
- И в третьих, она подразумевает изучение чего-то нового.
В человеческом мозге два полушария: левое и правое. Правое отвечает за интуицию и воображение, левое — за аналитическое и логическое мышление.
При программировании задействованы функции обоих полушарий, поэтому оно развивает мозг комплексно. Оно усиливает когнитивные способности, которые отвечают за обучаемость, преодоление интеллектуальных трудностей, запоминание информации.
Комментирует переводчик
Кажется, здесь автор повторяет популярный миф о том, что левое и правое полушария работают по-разному. Эта теория появилась во второй половине XX века с лёгкой руки лауреата Нобелевской премии Роджера Сперри.
Позднее учёные выяснили, что, каким бы делом ни был занят человек, в нём участвуют оба полушария, причём разные зоны — в зависимости от вида деятельности, но вот доминирующих сторон не наблюдается. Например, в этом исследовании нейробиологи сделали магнитно-резонансную томографию тысяче человек, чтобы опровергнуть подобные заблуждения.
По словам Алана Перлиса, лауреата премии Тьюринга и автора языка Алгол, изучение языка программирования меняет восприятие программирования в целом. А если не меняет, то «изучать такой язык разработки не стоит вовсе». Также он заявлял, что «программирование дисциплинирует мышление, учить планировать, уделять внимание деталям и быть самокритичным».
Послесловие от переводчика
Программирование — сложное интеллектуальное занятие, благодаря которому возникают и крепнут связи между различными областями мозга.
Кроме того, при написании кода приходится прилагать дополнительные усилия, чтобы держать в голове задачу целиком и не забывать о деталях — таких, как синтаксис, например.
В итоге программирование не только учит решать нестандартные задачи, оно тренирует навыки, которые нужны в повседневной жизни, — вроде внимания к деталям и бдительности, а ещё служит профилактикой деменции.