![](https://habrastorage.org/getpro/habr/upload_files/86d/dcc/669/86ddcc669cb1740be96052c2dd87e027.jpg)
Согласно исследованию - влияние есть, но незначительное. Обучаемость скорее связана с навыками изучения новых языков (не программирования).
Что в первую очередь ассоциируется у вас с программированием? Может быть математика? Большинство знакомых мне программистов не связывают то, чем они занимаются, в первую очередь с математикой. Они скорее говорят о логике. Тем не менее, идея о том, что навыки программирования связаны со способностями к математике, остается живой даже среди программистов.
Совсем недавно было опубликовано исследование Вашингтонского университета. В нем исследователи сделали вывод о том, что развитые математические навыки не являются надежным показателем того, что человек быстро и просто научится программировать.
Кроме этого ученые выявили кое-что еще: предрасположенность к изучению иностранных языков сильно влияет на способность обучения программированию. И речь именно о лингвистических языках, а не о языках программирования. Сходство между английским, немецким или французским языками и языками программирования может объяснить полученные результаты.
Можно сказать, что как и в «настоящих» языках, в языках программирования существует грамматика. Кроме того, они состоят из настоящих слов и требуют, чтобы вы формулировали идеи - часто вербально.
Но как проводилось это исследование?
В качестве языка программирования для изучения был выбран Python - хороший выбор для новичков. Поэтому хорошо подходит для участников исследования, которые никогда раньше не писали код.
Перед тем, как исследовать способности участников изучать Python, были проведены несколько тестов: умение считать, языковые способности и общие когнитивные способности (способность к поиску решений, способность к обновлению рабочей памяти, объем рабочей памяти).
Примем языковые способности (language aptitude) как некий фактор человека, суммирующий навыки, любовь и предрасположенность к изучению новых языков.
Для изучения Python участники прошли онлайн-курс на одном известном ресурсе. В каждом сеансе они открывали для себя концепции Python - функции, условия, списки и так далее. Во время этих занятий участники могли попросить дать им подсказку или решение целиком.
В конце каждого занятия их просили заполнить тест на то, что они только что изучали. Кроме того, наблюдая за каждым участником, исследователи могли рассчитать скорость обучения. Далее изучались правильность заполнения теста и то, как часто участники обращались за помощью.
После всех занятий по Python участники прошли тест на лексику - назначение конкретных функций в языке. Также их протестировали в рамках структуры кода и попросили написать финальный проект: «Камень, ножницы, бумага».
Все эти факторы были сведены к одному: общей способности научиться программировать. Вот полученные доказанные типы предикторов и результаты в целом:
Языковые способности - лучший предиктор продуктивности обучения.
Успешность в программировании в наибольшей степени определялась общими когнитивными способностями; на втором месте - языковые способности.
Разница языков?
Исследование проводилось на базе Python, и автор в конце задает вопрос: каковы были бы результаты, если бы вместо Python был выбран более сложный язык? В то время как Python имеет низкий порог вхождения, другие языки - нет.
Я думаю, что при использовании другого языка вполне могли бы получиться иные результаты. Тем не менее, кажется, что все языки программирования - это, в конце концов, просто языки, которые нужно выучить на начальном этапе. Когда словарный запас известен, не должно быть много различий при реализации одних и тех же небольших программ. По крайней мере, не на самых популярных языках.
С другой стороны, разница действительно существует при сравнении различных возможностей языков программирования. Написать программу Python в стиле Python, несомненно, проще, чем писать программу на C в стиле С (субъективно). Разные языки предлагают разные функции. И эти функции требуют разного количества когнитивных усилий.
А что вы думаете об этом?