Как стать автором
Обновить

Пользуйтесь подсветкой кода

Время на прочтение 3 мин
Количество просмотров 30K
Это обзор и частичный перевод статьи Advait Sarkar из Computer Laboratory, University of Cambridge «The impact of syntax colouring on program comprehension».

Краткое содержание


Взяли 10 случайных «computer science» студентов-магистров из University of Cambridge (на самом деле 7, так как 3 очкарика оказались частично несовместимы с оборудованием Tobii2 X120 eye tracker). Предложили разбираться с короткими вычислительными задачами на Python (надо было назвать корректный результат выполнения кода). Замеряли время выполнения задач. Не давали ничего записывать на бумажке (только думать, можно вслух). Следили за глазами с помощью упомянутой окулографической системы.

В конце попросили оценить свой опыт в программировании (да, с учетом возможного эффект Даннинга — Крюгера).

Выводы


  • Подсветка помогает быстрее понимать код. На примере 6 задач с общим временем решения в 13 — 20 минут:
    • 8.4 секунды разницы между медианами времени выполнения задачи (с гипотезой, что для больших задач эффект становится заметнее)
    • значительное (на 23 штуки) уменьшение количества переключений внимания (переводов и фиксации взгяда с места чтения на различимо другую область задания)
  • эффективность помощи обратнопропорциональна квалификации (но нелинейно, т.е. не установлено, что когда-то подсветка перестанет помогать)
  • работает только в том случае, если вы знаете что каким цветом подсвечивается
  • мозг может игнорировать подсказки подсветки, если вы «ищете свободным поиском» (т.е. подсветка не мешает размышлять)

Наглядный пример того, как подсветка позволяет сосредотачиваться на содержании кода, меньше внимания уделяя знакомым ключевым словам:



В общем, все хорошо, всем цветов!

Графики, цифры и более подробные выводы из статьи:

1. Время выполнения задач




Гистограмма иллюстрирует сравнение времени выполнения конкретным участником задачи с подсвеченным и обычным кодом.
Учитывая получившееся ненормальное распределение, были посчитаны медианы времени решения задач (WSRT: T = 136, p = 0.047). Разница оказалась в 8.4 секунды в пользу подсветки.

2. Количество «переключений внимания»


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

Например, в момент чтения кода перевод взгляда к разделу «условия» (обычно на область со значениями аргуметов) и возврат к коду — считаются как 2 факта переключения внимания.




На этой гистограмме мы видим сравнение количества «переключений внимания».

Все аналогично: каждая пара столбов — результат для конкретного участника и конкретной пары задач (с подсвеченным и обычным кодом).
Данных меньше, так как пришлось исключить показатели участников в очках: точность распознавания движений глаз пострадала из-за бликов лизн.

Медианы «количества переключений» различаются на 23 переключения в пользу подсвеченного когда (WSRT: T = 13.5, p = 0.045).
Для прочих параметров окулографического анализа, которые предположительно являются необходимыми для понимания и решения задачи (в частности, длительность фиксации внимания на объектах, количество фактов фиксации взгляда на объекте, количество обращений к описанию задачи), оказалось невозможно установить степень влияния подсветки.

3. Влияние квалификации




Чтобы компенсировать ненормальное распределение данных, для анализа использовалось величина «time advantage»: соотношение времени выполнение задачи с неподсвеченным кодом ко времени выполнения ее дубликата с подсвеченным кодом. Каждая точка на диаграмме — выполнение одной пары задач одним участником.

По оси x участники отсортированы по уровню компетентности. Обратите внимание, ось y — логарифмическая: только после ее логарифмической нормализации стала заметна линейная корреляция (r = −0.39, p = 0.033). Технически это означает, что для начинающих программистов подсветка кода важна в большей степени, чем для опытных. Однако это только корреляция, а значит что этот вывод может быть следствием краткости задач и причинно-следственная связь в данном случае требует дополнительных исследований.

Выводы и предположения


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

Стройного теоретического обоснавания этому факту пока нет.

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

Эти большие усилия, вероятно, вызывают дополнительные накладные расходы и вытесняют из рабочей памяти некоторые элементы… такие как значени входных аргуметов (что также может объяснить большее количество фактов переключения внимания при неподсвеченном коде).

Дополнительным примером, подтверждающим эту гипотезу, являются данные, показывающие, что подсветка синтаксиса позволяла некоторым участникам эксперимента сосредотачиваться на меньшей области кода (что и показано на тепловой карте фактов фиксации взгляда):

Теги:
Хабы:
+32
Комментарии 104
Комментарии Комментарии 104

Публикации

Истории

Ближайшие события

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн
Геймтон «DatsEdenSpace» от DatsTeam
Дата 5 – 6 апреля
Время 17:00 – 20:00
Место
Онлайн