Программисты делятся на противостоящие лагеря: тот, кто носит прическу, заявляет: «Мне не нужна IDE», а другой — «дайте мне все инструменты, которые вы можете!». То, что вы думаете о раскраске синтаксиса, вероятно, зависит от того, к какой группе вы тяготеете. Теперь у нас есть давно назревшие исследования, которые дают нам неопровержимые факты, о которых можно поспорить.
Подсветка или выделение синтаксиса существует довольно давно. Когда вы впервые видите это, вы либо понимаете, либо думаете, что это для маленьких программистов. Возможно, одно из самых известных публичных заявлений о выделении — это выступление Дугласа Крокфорда, в котором он говорит, что «выделение синтаксиса — для детей».
Это может быть для детей, но эти дети, вероятно, лучше программируют с ним, чем без него.
Простой эксперимент доказывает, что подсветка синтаксиса — это хорошо. Возьмите две функции в Python и попросите субъекта внести изменения в каждую, но синтаксис одной выделен, а другой нет. Определите, сколько времени потребуется, и воспользуйтесь айтрекером, чтобы увидеть, есть ли разница в способе обработки кода программистом.
Первый результат заключался в том, что задачи с выделенным синтаксисом кодом выполнялись быстрее — разница составила 8,4 секунды (результат был значимым на уровне 0,05).
К тому же программисты реже переводили взгляд на выделенный код. То есть они выполняли меньше переключений контекста. Разница составила 23 переключения контекста (результат был значимым на уровне 0,05).
Так это для детей?
Интересно, что есть свидетельства того, что Крокфорд мог быть прав.
Была небольшая отрицательная корреляция между разницей во времени на двух задачах и тем, насколько опытным программист утверждал. Таким образом, есть свидетельства того, что чем вы более опытны, тем меньше влияет окраска синтаксиса на вашу производительность.
Кстати, автор статьи отмечает, что опытные программисты склонны недооценивать свою компетентность, а менее опытные программисты были более реалистичными. Это предлагается как доказательство эффекта Даннинга-Крюгера, но именно здесь недостаточно квалифицированные специалисты переоценивают свои способности. В случае программирования кажется, что чрезмерно квалифицированные специалисты недооценивают свои способности, поэтому это скорее обратный эффект Даннинга-Крюгера. Возможно, это свидетельство того, что чем больше вы изучаете программирование, тем больше понимаете, насколько плохо вы подготовлены, чтобы справиться с истинным характером задачи.
Удивительно то, что это исследование не проводилось раньше, а что насчет всех вариантов подсветки синтаксиса — почему бы не изучить, что работает. Похоже, что мы готовы смотреть на исследования дизайна общего пользовательского интерфейса, но не на наш собственный конкретный пользовательский интерфейс, будь то IDE или редактор кода.
Другой небольшой сюрприз заключается в том, что размер выборки составил всего 10 аспирантов. Несомненно, какая-то компания-разработчик программного обеспечения могла бы профинансировать такого рода исследования и предоставить убедительные доказательства того, что работает?