Все новости и события
Статья19 июля, 15:07 МСК

Программирование и его влияние на мозг

главное фото
Как устроен мозг программиста?

Автор оригинала: Joel Lee. Перевод: VK Team

Выбирайте первый язык программирования с умом
1. Программирование влияет на ваши когнитивные модели

Важно ли, с какого языка программирования вы начали свой путь в этой профессии? Да! Звучит нечестно, правда? Как ни крути, а большинство из нас познакомились с программированием ещё в школе, и первый язык нам навязывали. Я начал с языка С. Те, кто постарше меня, первыми изучали Fortran, COBOL или BASIC. А те, кто младше? Вы наверняка начинали с Java или Python.

 Вне всяких сомнений, структура языка программирования влияет на образ мышления. Эдсгер Дейкстра, один из влиятельнейших учёных в сфере информатики, знал об этом, когда сказал: «Инструменты, которые мы используем, оказывают глубокое (и подспудное) влияние на наши мыслительные привычки, и, следовательно, на наши мыслительные способности».

Затем он сказал:
«COBOL уродует разум; его преподавание нужно расценивать как уголовное преступление».

И ещё:
«Практически невозможно научить хорошо программировать студентов, которые раньше изучали BASIC: как потенциальные программисты они умственно искалечены, без надежды на восстановление».

Ой.

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

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

Обратите внимание на это исследование стилеметрии кода и расшифровку лекции, посвящённой той же проблематике.

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

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

Здесь много исследований, но один смысл
2. Программирование помогает укрепить здоровье мозга

Мозг часто сравнивают с мышцей, которую нужно постоянно тренировать, чтобы оставаться умным и сообразительным. Так ли это? И если да, то можно ли считать программирование ментальным упражнением, достаточным для укрепления здоровья мозга?

Авторы метаисследования 1991 года хотели выяснить «влияние компьютерного программирования на когнитивные результаты», и обнаружили, что студенты, имевшие опыт программирования, при тестировании когнитивных способностей набирают на 16 перцентильных баллов больше, чем студенты без опыта программирования.

В ходе более крупного исследования 1999 года подтвердилось, что «интеллектуальная деятельность препятствует снижению [когнитивных] способностей». Но также авторы отметили, что, возможно, снижение когнитивных способностей может привести к уменьшению вовлечённости в интеллектуальную деятельность.

Авторы ещё более крупного исследования 2009 года пришли к тому же выводу, и предположили, что «люди, участвующие в деятельности, стимулирующей мозг, в последующие годы могут снизить вероятность [и даже оттянуть начало] болезни Альцгеймера и прочих видов слабоумия». К стимулирующей мозг деятельности отнесли чтение, письмо, головоломки, настольные и карточные игры, исполнение музыки.

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

Конечно, эта тема требует большего количества исследований, но всё же трудно представить себе такую умственную деятельность, которая требует больше сил и больше сосредоточена на изучении, чем программирование.

Хотя все упомянутые исследования и не доказывают, что интеллектуальная деятельность делает нас умнее или способнее, однако результаты говорят о том, что трудные когнитивные задачи как минимум улучшают текущее состояние мозга и значительно снижают вероятность деградации. Бытует точка зрения, что учиться программированию никогда не поздно, и описанные исследования лишь подтверждают это мнение. Программирование идёт на пользу!

Программисты задействуют оба полушария мозга
3. Программирование — это не одни лишь математика с логикой

В исследовании 2014 года с помощью функционального МРТ изучалась активность мозга программистов, которые старались понять и проработать фрагменты кода. Выяснилось, что при изучении исходного кода задействованы пять областей мозга:
- BA 6: средняя лобная извилина (внимание, язык, рабочая память);
- BA 21: средняя височная извилина (семантический поиск в памяти);
- BA 40: нижняя теменная доля (рабочая память);
- BA 44: нижняя лобная извилина (рабочая память);
- BA 47: нижняя лобная извилина (язык, рабочая память).  То есть при работе с исходным кодом в основном задействованы те части мозга, которые обычно связаны с обработкой языка, памятью и вниманием.

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

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

Конечно, исследование не было всеобъемлющим, и его авторы указывают:
- В эксперименте использовались фрагменты кода меньше чем на 20 строк, а время работы с ними ограничивалось, то есть этот код не был особенно трудным для испытуемых.
- Результаты исследования свидетельствуют не о том, что языки программирования сродни иностранным языкам, а лишь о задействовании тех же разделов мозга.
- Испытуемые не писали код, а при этом могут быть задействованы другие области мозга, чем при анализе уже имеющегося кода.