Билл Гейтс предпочитает табуляции пробелам. Это признание было сделано во время сессии Reddit AMA (Ask Me Anything), его шестой сессии, состоявшейся 27 февраля. Помимо возобновления многолетних дебатов, этот ответ принес ему два месяца золота Reddit, хотя он также причинил другим боль и страдания.
Вопрос был минималистским, а ответ простым:
Комментарии на Reddit, как и следовало ожидать, обширны — и по обе стороны пропасти, которая разделяет мир программирования, как никакая другая тема. Это кросс-платформенное, кросс-языковое разделение, которое противопоставляет программиста программисту.
Мы все согласны с тем, что отступы имеют значение, но какую клавишу следует нажать?
Интересно, что выбор вкладок Gate распространяется и на документы Word — в наш век текстовых сообщений, твитов и комментариев в социальных сетях, сделанных под влиянием момента, вероятно, есть некоторые, кто больше не видит необходимости в тщательно отформатированных документах Word.
Но в кодировании отступы важны, если не обязательны, и выбор вкладок или пробелов зависит от используемого языка программирования. Это выяснилось в исследовании, о котором мы сообщили в 2016 году, в котором гуглер Фелипе Хоффа исследовал 400 000 репозиториев GitHub, в которых содержалось 1 миллиард файлов и 14 терабайт кода. Он обнаружил, что пробелы являются предпочтительным методом отступов, кроме кода, написанного в Go, где, по-видимому, вкладки являются порядком дня, и C.
К сожалению, базовый, который наряду с ассемблером-это то, что Билл Гейтс делал большую часть своего кодирования в свое время, не включен в опрос, но с точки зрения поколений C является самым близким.
Один обмен, который привлек мое внимание к излияниям Reddit, связанным с Python, который шел вразрез с очень четкой тенденцией в результатах Хоффы:
Oops — Python-это один из языков, где отступы обязательны, но вкладки не рекомендуются. PEP 8 — руководство по стилю для кода python — говорит довольно ясно:
Пробелы являются предпочтительным методом отступа.
Вкладки должны использоваться исключительно для того, чтобы оставаться согласованными с кодом, который уже имеет отступы с вкладками.
Python 3 запрещает смешивать использование вкладок и пробелов для отступов.
Хотя выводы Хоффы предполагают, что вкладки на практике являются выбором меньшинства, когда Stack Overflow включил вопрос о вкладках или пробелах в свой опрос 2017 года, вкладки стали большинством среди всех респондентов, в то время как пробелы были незначительно более популярны, чем вкладки среди профессиональных разработчиков. Анализ данных этого опроса, проведенный Дэвидом Робинсоном, привел к выводу, что разработчики, использующие пробелы для отступов, зарабатывают значительно больше денег, чем те, кто использует вкладки.
Робинсон утверждал:
Средний разработчик, использующий пространства, имел зарплату в размере 59 140 долларов, в то время как средний разработчик вкладок имел зарплату в размере 43 750 долларов. (Обратите внимание, что все результаты были конвертированы в доллары США из валюты каждого респондента). Разработчики, которые ответили “Оба”, как правило, были неотличимы от тех, кто ответил “Вкладки”.
Предположительно, Билл Гейтс не участвовал в исследовании переполнения стека, поскольку он мог исказить эти результаты!
Его ответ на вопрос о Reddit AMA не только показывает предпочтение, но и повторяет основную причину, по которой вкладки должны быть предпочтительнее пробелов. Поскольку вкладки заменяют n пробелов одним управляющим кодом, фактический интервал может быть изменен без необходимости редактирования файла, и какой бы шрифт вы ни использовали, любой встроенный интервал сохраняется. Как следует из ответа Билла Гейтса, использование вкладок гарантирует, что ваши отступы выстроятся в линию.