Користуйтеся підсвічуванням коду

Це огляд і частковий переклад статті 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). Технічно це означає, що для початківців програмістів підсвічування коду важлива більшою мірою, ніж для досвідчених. Однак це тільки кореляція, а значить, що цей висновок може бути наслідком стислості завдань і причинно-наслідковий зв'язок у цьому випадку вимагає додаткових досліджень.

Висновки і припущення

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

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

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

Ці большие зусилля, імовірно, викликають додаткові накладні витрати і витісняють з робочої пам'яті деякі елементи… такі як значення вхідних аргуметов (що також може пояснити велику кількість фактів перемикання уваги при неподсвеченном коді).

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



Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.