Pull to refresh

Как мы читаем код

Reading time2 min
Views48K
В рамках исследований движений глаза Майк Хансен и Эрик Холк провели любопытный эксперимент. Используя айтрекер Tobii TX300 частотой 300 Гц, они сравнили поведение глаз опытного и начинающей программистов при чтении кода программы Python, вывод которой являлся вопросом поставленной задачи.

В результате съемки данных для «новичка» было получено следующее видео.



Видеозапись «бывалого» (Эрика).



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

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

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

В то время, как на скорость выполнения задачи у «опытных» влияют названия, «новички» не демонстрируют значительных различий в продолжительности выполнения при изменении ассоциируемости имен переменных. Хорошо видно, как около 1:30 «новичок» узнала знакомый ей алгоритм, после чего она собирает внимание на нужных числах, не отвлекаясь на проход случайных строчек, доходит до common и оставляет лишнюю запятую.

Целью исследования является помощь исследовательскому сообществу психологии и программирования, которому недостает моделей процессов, происходящих в мозге программиста. Майк хочет создать вычислительную познавательную модель программиста, которая будет в состоянии «читать» код так же, как это делал бы живой человек. Такая модель могла бы помочь проводить анализ базы кода, что позволило бы заменить или дополнить такие показатели, как количество строк кода или цикломатическая сложность.

Майк Хансен всё ещё набирает для участия в эксперименте добровольцев, владеющих Python и проживающих в Блумингтоне, штат Иллинойс.
Tags:
Hubs:
If this publication inspired you and you want to support the author, do not hesitate to click on the button
Total votes 97: ↑91 and ↓6+85
Comments21

Articles