Programming
2 May 2011

Пробелы VS табы 4. Смерть всем


Когда я заметил на работе самый первый топик о табах я подумал, что стоило бы прочитать вечером и ответить. Но ответ уже кто-то написал. Хоть это и никак не согласовалось с тем что я хотел написать, я на это дело забил.
Но сегодня я прочитал третий топик и одного не могу понять.

Зачем в коде нужны табы?

Зачем пробелы? Зачем переводы строк? Зачем вообще текст? Да, да я сам ими пользуюсь и дома и на работе, да я без них не могу жить, но от них нужно отказаться. Вообще.

Не мы ли дискутируем насчёт того, как надо устроить очередную MVC, mVC, MVc и прочие вариации данной трёхбуквенной архитектуры. Иногда даже smartModel получается. Иногда даже пытаемся GoF читать. Не мы ли ратуем за вынос оформления из html в css? Так какого чёрта мы смешиваем логику и представление в куске текста и называем это исходным кодом?

Когда мы пишем код мы используем лексеммы, зачем-то сохраняя их в виде текста, а потом парсим их назад. Автокомплит, что он делает? Он подставляет нам лексеммы. Ещё раз. Мы пишем лексеммы, компилятор читает лексеммы. Текст тут зачем? Затем, что просто мы так привыкли. Я думаю, что текст как носитель исходного кода должен умереть как перфокарты (я кстати их в работе не застал, только писал(ручкой шариковой писал) на них контрольные по информатике в школе, т.к. в местном университете остались тонны неиспользованных перфокарт). Подробнее про фортран и перфокарты можно почитать тут. Мы же пережили это? И текст переживём.

Почему нужно перестать использовать текст?


Потому, что он несёт в себе и логику и оформление одновременно. А должен нести только логику. Представьте как было бы хорошо, если бы в исходном коде(неком бинарном формате) содержалось бы описание логики в виде лексемм. А наша IDE имела бы настройки того, как мы хотим этот код видеть. Хотим египетские скобки, используем египетские, не хотим — не используем, это лишь представление, и хранить в файле с кодом его не нужно. Кто-то ставит фигурные скобки поле if если там одна операция, а кто-то нет. Это тоже представление, с точки зрения компилятора данные конструкции равнозначны. А вот с точки зрения программиста нет, поэтому их нужно разделить. Почему цветовое оформление кода мы можем себе позволить хранить у себя и не распространять с текстом, а табуляцию должны.

Кто-то так уже делал? Конечно.


В топик врывается он:
Realaxy ActionScript Editor. На хабре можно почитать тут. Официальный сайт тут. Разработчики сделали шедевр. Правда, пока я его не купил из-за одной маленькой проблемы: стиль скобок там только египетсткий. Я излазил все настройки во время пробного периода, но так и не нашёл, где это настраивается. Как только это заработает, я куплю его, в тот же день. Они двигаются именно в ту сторону о которой я говорю. Код — не текст, а его представление задаётся редактором. До кучи это редактор моего любимого языка.

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

Такой подход позволит уменьшить количество ошибок, упростит разработку и принесёт мир любителям табов и пробелов, подружит любителей египетского стиля с его ненавистниками. Просто каждый увидит то, что он хочет.

Место для кода в виде текста в музее, рядом с перфокартами.

P.S. Я ждал подобного поста от разработчиков Realaxy, но так и не дождался, ведь это самое время заявить о плюсах нового подхода. Да, мне безумно нравится ActionScript 3 и этот шикарный жёлтый смайлик в шлеме, и я ненавижу египетские скобки.

Фото музейного экспоната опубликовано под CC-BY-SA, автор Johnathan Nightingale.

-47
3.3k 2
Comments 54