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

в 10:52, , рубрики: Интересное, кодинг, переводы, Программирование

Недавно я принимал участие в психологическом эксперименте для программистов. Мой друг, Майк Хансен, занимался исследованием того, как разные люди разбирают программы. Его целью было выяснение того, какие из функций в IDE помогают программистам разбираться с тем, с чем они имеют дело, и как это может быть использовано для создания систем, способных улучшить качество ПО.

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

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

Если честно, то после просмотра видео я был больше всего впечатлен тем, насколько мой мозг работает похоже на компьютер. Сначала я просматриваю текст всей программы, а затем я начинаю ее интерпретировать. В этой программе есть два вызова функции between, следом за которым идет вызов функции common. Во время первого вызова between я потратил много времени на перевод моих глаз с точки вызова на определение функции. А вот когда мои глаза наткнулись на ту же функцию еще раз, мне хватило лишь одного быстрого взгляда.

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

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

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

Если вам вдруг случится быть в Блумингтоне, то обязательно примите участие в эксперименте Майка. Мало того, что это будет дико весело, так вам еще и дадут 10$ за участие.

Автор: Go4Yachiyo

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js