Существует давнее убеждение, что математика и программирование идут рука об руку, но что, если это неправильно? Новые исследования показывают, что значение имеет способность к естественному языку.
Программисты с самого начала имели склонность к математике, и математические способности долгое время использовались для прогнозирования успеха в обучении программированию. Что, если корреляция была полностью обусловлена предвзятостью, которая была введена потому, что первые программисты были математиками? Как только люди, ориентированные на математику, вошли в дисциплину, они, как правило, ставили задачи, которые требовали знания математики-действительно ли это так?
Последний исследователь работает на небольшой выборке, 36 человек, но результаты интересны. Однако есть некоторые вещи, которые не совсем соответствуют действительности:
«Исследование, описанное здесь, мотивировано концептуальным сдвигом парадигмы, а именно тем, что обучение использованию современных языков программирования напоминает изучение естественного языка, такого как французский или китайский, во взрослом возрасте. В частности, мы утверждаем, что исследования нейрокогнитивных основ способностей к программированию в значительной степени упустили тот факт, что языки компьютерного программирования разработаны так, чтобы напоминать коммуникационную структуру программиста (человеческие языки), идея, которая была впервые формализована Хомским более 50 лет назад.»
Многие программисты, включая меня, сказали бы, что это наблюдение указывает на глубокое непонимание того, что такое язык программирования и что такое программирование. Как язык программирования не может походить на коммуникационную структуру программиста-тоже очень хороший вопрос.Вы также можете добавить, что математика использует язык, относящийся к той же категории, что означает, что способности к естественному языку должны коррелировать с математическими способностями.
Язык программирования, выбранный для исследования, был Python, и отчасти причина в том, что он больше похож на естественный язык в использовании отступов, а не фигурных скобок для группировки операторов и слов, а не символов. Испытуемые не имели предыдущего опыта программирования, и им было предложено пройти уроки Codecademy. Их обучение оценивалось по скорости обучения, основанной на результатах модульного теста, субъективно оцененной игре и результатах теста с множественным выбором. В качестве предикторов использовались тест на знание современного языка, умение считать и некоторые показатели общих когнитивных способностей. В дополнение к этим «традиционным» тестам был включен подход к ЭЭГ, чтобы добавить некоторые нейропсихометрические данные в исследование:
«…участники прошли пятиминутное электроэнцефалографическое сканирование, которое регистрировало электрическую активность их мозга, когда они расслаблялись с закрытыми глазами. В предыдущих исследованиях Прат показал, что паттерны нейронной активности, когда мозг находится в состоянии покоя, могут предсказать до 60% вариативности скорости, с которой кто-то может выучить второй язык (в данном случае французский).»
Важность этого заключается в том, что у нас есть мера, которая коррелирует с изучением второго языка. Неясно, коррелирует ли эта мера также с математическими способностями.
Результаты поразительны. Когда дело доходит до скорости обучения, тест на языковые способности предсказал большую часть различий, а когда его сопоставили с нейропсихометрией, осталось лишь небольшое количество вариаций, которые можно объяснить численностью. Когда дело доходит до точности программирования, кажется, что общие когнитивные способности имеют наибольшее значение — чем вы умнее, тем вы точнее. То же самое относится и к прохождению теста множественного выбора с некоторой помощью нейропсихометрии.
Так должны ли мы отбросить наши давние предрассудки и принять тот факт, что языковая способность важнее?
Я думаю, что ответ-нет, и что требуется гораздо больше исследований. Первое, что, очевидно, не совсем правильно, — это использование счета в качестве меры математических способностей. Способность к арифметике-это не то же самое, что способность работать с символами.
Во-вторых, анализ использовал пошаговую регрессию и четко выбрал языковые способности в качестве лучшего предиктора скорости обучения. Если бы языковые способности в разумной степени коррелировали с численностью, любая предсказательная способность, которой они обладали, уже была бы израсходована. Это не доказательство того, что умение считать не является хорошим предиктором скорости обучения. Чтобы понять, какова на самом деле позиция, нужна полная корреляционная матрица и, возможно, причинно-следственный анализ.
Кроме того, существует тот факт, что языковые способности действительно оказывают сильное влияние только на скорость обучения, а не на точность или конечные полученные знания. Может быть, это как-то связано с тем, что во время обучения задействовано чтение, в то время как в других измерениях это не так важно. Может быть, как только чтение выходит за рамки картины, языковые способности становятся менее важными?
Возможно, языковые способности помогают вам изучать в целом, а не только язык программирования.
Одно совершенно ясно — нам нужно гораздо больше исследований в этой области, поднимая вопрос, почему это не делается?