Почему программисты боятся табуляции? (Замена на пробелы... зачем?)
Модератор: Модераторы разделов
-
- Сообщения: 132
- ОС: основана на SlackWare
Почему программисты боятся табуляции?
Не могу понять, почему программисты предпочитают несколько пробелов одному символу.
Тайный смысл ускользает от меня, объясните, пожалуйста.
Тайный смысл ускользает от меня, объясните, пожалуйста.
Время не ждет.
-
- Сообщения: 34
Re: Почему программисты боятся табуляции?
А вы поставте символ табуляции и попробуйте открыть файл в разных редакторах!
-
- Сообщения: 1095
- Статус: -
- ОС: GNU/Linux
Re: Почему программисты боятся табуляции?
нормальные IDE заменяют \t на указанное число пробелов (4)
-
- Сообщения: 34
Re: Почему программисты боятся табуляции?
нормальные IDE заменяют \t на указанное число пробелов (4)
Ничего они не заменяют! Вы хотели сказать, что они могут заменять! Как правило, это сводится к выставлению галочки, где нить в настройках.
-
- Сообщения: 3408
- Статус: аватар-невидимка
- ОС: openSUSE Tumbleweed x86_64
Re: Почему программисты боятся табуляции?
Стандартная холиварная тема программистов - что лучше - пробелы или табуляция. И почему боятся? Одним нравится одно, другим - другое.
Пробелы - не зависят от редактора - везде код выглядит одинаково.
Табуляция - меньше весит, перемещение по уровням отступа, а не пробелам (но перемещение по уровням многие редакторы поддерживают и для пробелов). Некоторые еще приводят такой плюс - если взять чужой код с табуляцией, то он выглядит "роднее" с твоим отступом (по 2-3-4 символа - тоже у каждого свое), а не отступом автора кода.
Главное - не смешивать! (а то есть любители отступ по 4 символа - пробелами, табуляция - 8, два отступа заменяются на табуляцию...) А там любое сойдет.
PS а еще можно вспомнить холивар про фигурные скобочки, и названия переменных
Пробелы - не зависят от редактора - везде код выглядит одинаково.
Табуляция - меньше весит, перемещение по уровням отступа, а не пробелам (но перемещение по уровням многие редакторы поддерживают и для пробелов). Некоторые еще приводят такой плюс - если взять чужой код с табуляцией, то он выглядит "роднее" с твоим отступом (по 2-3-4 символа - тоже у каждого свое), а не отступом автора кода.
Главное - не смешивать! (а то есть любители отступ по 4 символа - пробелами, табуляция - 8, два отступа заменяются на табуляцию...) А там любое сойдет.
PS а еще можно вспомнить холивар про фигурные скобочки, и названия переменных

-
- Сообщения: 132
- ОС: основана на SlackWare
Re: Почему программисты боятся табуляции?
Зачем? У меня есть Vim

Блин, то есть всё это без какой-либо логики?! Мда.
В том же Vim есть аж несколько настроек для замены tab на пробелы.
Ужас какой-то.
Время не ждет.
-
- Сообщения: 3321
- Статус: Красный глаз тролля
- ОС: ArchLinux
Re: Почему программисты боятся табуляции?
А я обычно сильно ругаюсь, когда ко мне попадает код с пробельными отступами. Работаю чаще в mcedit'е или gedit'е. Благо, в gedit есть возможность выполнения внешних скриптов, так что проблема с кривым форматированием решается одним нажатием заданного сочетания клавиш 

RTFM
-------
KOI8-R - патриотичная кодировка
-------
KOI8-R - патриотичная кодировка

-
- Сообщения: 3408
- Статус: аватар-невидимка
- ОС: openSUSE Tumbleweed x86_64
Re: Почему программисты боятся табуляции?
Нет, почему, логика есть - в каждом из вариантов. Лично для меня не критично (как уже говорил - главное не смешивать).
-
- Сообщения: 48
- ОС: Slackware
Re: Почему программисты боятся табуляции?
А на мой взгляд, символ "\t" придумали от нечего делать. Лишняя заморочка.
Есть клавиша табуляции как на печатных машинках, ну и печатала бы себе нужное число пробелов. Нет же, понадобилось отдельный символ для этого придумывать.
Сильно ругаюсь, когда читаю чужие исходники с табами.
Есть клавиша табуляции как на печатных машинках, ну и печатала бы себе нужное число пробелов. Нет же, понадобилось отдельный символ для этого придумывать.
Сильно ругаюсь, когда читаю чужие исходники с табами.
-
- Сообщения: 2223
- Статус: Не очень злой админ :-)
- ОС: SuSE, CentOS, FreeBSD, Windows
Re: Почему программисты боятся табуляции?
Ну, начнем с того, что не все и не везде:
(http://dev.1c-bitrix.ru/docs/php_recommendation.php) писал(а):1.1.3. Пробелы и табуляция
Для форматирования отступов в коде нужно использовать табуляцию. Использование пробелов запрещено.
Причины:
· в случае использования табуляции каждый может настроить в своем редакторе желаемый отступ;
· используется один символ вместо нескольких;
· в случае смешивания пробелов и табуляции текст будет "прыгать", разрушая форматирование.
(http://www.rsdn.ru/article/mag/200401/codestyle.XML) писал(а):Стиль кода
Оформление
Используйте табуляцию, а не пробелы для отступов. В средах типа VS лучше использовать режим табуляции.
Разумеется, есть и обратные рекомендации:
(http://geosoft.no/development/cppstyle.html) писал(а):38. Special characters like TAB and page break must be avoided.
These characters are bound to cause problem for editors, printers, terminal emulators or debuggers when used in a multi-programmer, multi-platform environment.
(http://www.citforum.ru/programming/delphi/style_delphi/) писал(а):Использование отступов
Всегда необходимо использовать два пробела для всех уровней отступа. Другими словами, первый уровень отступает на два пробела, второй на четыре и так далее. Никогда не используйте символы табуляции.
Также есть и нейтральные рекомендации:
(http://java.sun.com/docs/codeconv/html/CodeConventions.doc3.html#262) писал(а):4 - Indentation
Four spaces should be used as the unit of indentation. The exact construction of the indentation (spaces vs. tabs) is unspecified. Tabs must be set exactly every 8 spaces (not 4)
А в GNU Coding Standards, например, вообще ничего об этом не сказано.
В общем, уж извините, ТВЭЛ, но на мой сугубо личный взгляд, поднятая вами тема относится к разряду споров "тупоконечников" и "остроконечников" и совершенно не стоит выеденного объекта их спора. ;)
-
- Сообщения: 48
- ОС: Slackware
Re: Почему программисты боятся табуляции?
А еще бывают редакторы, которые отображают табуляцию, исходя не из какого-то числа символов, а выравнивая по предыдущей строке.
Из за чего все форматирование нарушается. Поубивал бы...
Из за чего все форматирование нарушается. Поубивал бы...
-
- Сообщения: 43
-
- Модератор
- Сообщения: 1786
- Статус: Матёрый линуксоид
- ОС: Debian testing/unstable
Re: Почему программисты боятся табуляции?
Айда в тематические беседы...
Работа: Ubuntu 9.10
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
-
- Сообщения: 132
- ОС: основана на SlackWare
Re: Почему программисты боятся табуляции?
Не-не. Обратите внимание, в приведённых вами примерах по Tab была аргументация, а по пробелам тупая директива - только так и всё, без какого-либо объяснения

Время не ждет.
-
- Сообщения: 2223
- Статус: Не очень злой админ :-)
- ОС: SuSE, CentOS, FreeBSD, Windows
Re: Почему программисты боятся табуляции?
Вы, похоже, не очень внимательно их читали. По табуляциям я привел два примера - во втором никаких аргументов не наблюдается (одна лишь "тупая директива"), в первом же они ну о-очень "веские" :)
· в случае использования табуляции каждый может настроить в своем редакторе желаемый отступ; (эстеты, однако)
· используется один символ вместо нескольких; (да еще и экономные)
· в случае смешивания пробелов и табуляции текст будет "прыгать", разрушая форматирование. (м-да...)
По пробелам также два примера - во втором "тупая директива", а в первом аргументы таки есть, но того же порядка и "весомости", что и аргументы в пользу табуляции:
These characters are bound to cause problem for editors, printers, terminal emulators or debuggers when used in a multi-programmer, multi-platform environment.
Общий счет - 1:1 и мое мнение насчет остро- и тупоконечников, а также беспредметности этой темы совершенно не поколеблено. :)
P. S. И потом, я привел здесь первые попавшиеся на глаза примеры, которые мне выдал Гугл. Если покопаться, наверняка можно найти и более разумные обоснования своей правоты как от "пробельщиков", так и от "табуляторщиков". Но, повторюсь, меня это не интересует, поэтому тратить время и силы на такой поиск я не стану.
-
- Сообщения: 362
- Статус: Ad Astra per aspera
- ОС: openSUSE 11.4, Arch
Re: Почему программисты боятся табуляции?
в мейкфайлах обязательна табуляция. долго не мог сообразить почему не работал мейкфайл, пока не обнаружил, что текстовый редактор преобразовал мой таб в пробелы
No problems - just solutions!
-
- Сообщения: 2223
- Статус: Не очень злой админ :-)
- ОС: SuSE, CentOS, FreeBSD, Windows
-
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: Почему программисты боятся табуляции?
ИМХО не настолько принципиальный вопрос - всегда можно подправить sed...
лично я предпочитаю в текстах Си пробелы...
-
- Сообщения: 2223
- Статус: Не очень злой админ :-)
- ОС: SuSE, CentOS, FreeBSD, Windows
Re: Почему программисты боятся табуляции?
Аналогично. В текстах Perl- и shell-скриптов также пользуюсь пробелами. А вот когда приходится писать что-то на VB/VBA или языке 1С, то тут у меня рука сама Tab нажимает использую символы табуляции. И никакого душевного дискомфорта при этом не возникает. :)
-
- Сообщения: 1205
- ОС: Debian Wheezy (amd64)
Re: Почему программисты боятся табуляции?
Раньше использовал пробелы, но одиночные. (т.е. разница между уровнями только 1 пробел)..... Стало не удобно начал нажимать два...... Надоело нажимать два, да и экраны теперь стали пошире, стал использовать табуляцию. Так мне удобно, так мне наглядно......
Спорить тут вообще нечего.
Работаешь один и для себя делай как удобно лично тебе.
Работаешь в команде следую уставу принятому в данном конкретном "монастыре".
Единственное правило, которое нужно себе привить с самого начала: не смешивать. Или ТОЛЬКО пробелы или ТОЛЬКО табуляция.
Спорить тут вообще нечего.
Работаешь один и для себя делай как удобно лично тебе.
Работаешь в команде следую уставу принятому в данном конкретном "монастыре".
Единственное правило, которое нужно себе привить с самого начала: не смешивать. Или ТОЛЬКО пробелы или ТОЛЬКО табуляция.
То что не убивает нас, делает нас сильнее! © Ницше.
When life puts you in tough situations, don’t say "why me". Just say "try me © ?
When life puts you in tough situations, don’t say "why me". Just say "try me © ?
-
- Бывший модератор
- Сообщения: 4038
- Статус: Искусственный интеллект (pre-alpha)
- ОС: Debian GNU/Linux
Re: Почему программисты боятся табуляции?
Табуляции
Pros:
- Каждый может настроить в редакторе размер табуляции (но не всегда, см. Cons).
- Эффективнее по размеру (это, господа, смешно, Вы еще предложите переменные и функции называть одной-двумя буквами, чтобы место экономить).
Cons:
- Очень неудобно работать с несколькими проектами одновременно, имеющими разные соглашения по размеру и стилю использования табуляции. Modeline-нов на всех не напасешься: vim, emacs, eclipse(?), чёрт-те что еще...
- В особо запущенных случаях, вроде Python, отступы имеют семантическое значение и независимо от настроек редактора интерпретатор считает TAB за 8 пробелов. Если в редакторе другие настройки, проблемы обязательно возникнут, рано или поздно.
- Неправильная настройка размера табуляции мешает не только при редактировании, но и при просмотре. Исходники с поехавшими табуляциями нечитаемы. Исходники с табуляциями, отличными от 8 пробелов очень неудобно смотреть, например, less'ом (надо отдельную опцию прописывать).
Пробелы:
Pros:
- Всегда, везде и у всех выглядят одинаково независимо от настроек чего бы то ни было.
- WISIWIG: видно N пробелов, значит и есть N пробелов, а не что-то еще. Сильно упрощает жизнь.
Cons:
- Больше нажатий. (Все нормальные редакторы умеют работать с отступами пробелами так, что не отличить от отступов табуляциями. Все нормальные редакторы умеют достаточно умно отступать, без этого даже отступ табуляциями — лишние нажатия кнопок).
- Больший объем, чем у табуляций (см. про табуляции, это смехотворно).
Pros:
- Каждый может настроить в редакторе размер табуляции (но не всегда, см. Cons).
- Эффективнее по размеру (это, господа, смешно, Вы еще предложите переменные и функции называть одной-двумя буквами, чтобы место экономить).
Cons:
- Очень неудобно работать с несколькими проектами одновременно, имеющими разные соглашения по размеру и стилю использования табуляции. Modeline-нов на всех не напасешься: vim, emacs, eclipse(?), чёрт-те что еще...
- В особо запущенных случаях, вроде Python, отступы имеют семантическое значение и независимо от настроек редактора интерпретатор считает TAB за 8 пробелов. Если в редакторе другие настройки, проблемы обязательно возникнут, рано или поздно.
- Неправильная настройка размера табуляции мешает не только при редактировании, но и при просмотре. Исходники с поехавшими табуляциями нечитаемы. Исходники с табуляциями, отличными от 8 пробелов очень неудобно смотреть, например, less'ом (надо отдельную опцию прописывать).
Пробелы:
Pros:
- Всегда, везде и у всех выглядят одинаково независимо от настроек чего бы то ни было.
- WISIWIG: видно N пробелов, значит и есть N пробелов, а не что-то еще. Сильно упрощает жизнь.
Cons:
- Больше нажатий. (Все нормальные редакторы умеют работать с отступами пробелами так, что не отличить от отступов табуляциями. Все нормальные редакторы умеют достаточно умно отступать, без этого даже отступ табуляциями — лишние нажатия кнопок).
- Больший объем, чем у табуляций (см. про табуляции, это смехотворно).
Мои розовые очки
-
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: Почему программисты боятся табуляции?
кэйт,вим,кдев сами ставят.(у мну-пробелы)
-
- Бывший модератор
- Сообщения: 4038
- Статус: Искусственный интеллект (pre-alpha)
- ОС: Debian GNU/Linux
Re: Почему программисты боятся табуляции?
Я в vim и emacs тоже Tab жму, но вставляются пробелы.
Мои розовые очки
-
- Сообщения: 2223
- Статус: Не очень злой админ :-)
- ОС: SuSE, CentOS, FreeBSD, Windows
Re: Почему программисты боятся табуляции?
Прошу прощения, недостаточно точно выразился: в виду имелось, что отступ при этом производится именно символами табуляции. Да и редакторы VBA, скажем, или там 1С не умеют заменять табуляцию на пробелы. А в прочих случаях я тоже жму Tab, но вставляются пробелы. :)
-
- Бывший модератор
- Сообщения: 4038
- Статус: Искусственный интеллект (pre-alpha)
- ОС: Debian GNU/Linux
Re: Почему программисты боятся табуляции?
Достаточно точно. Я Вас понял, поэтому и возразил, что нажатие Tab не обязательно должно приводить к вставке символа TAB.
Мои розовые очки
-
- Сообщения: 2223
- Статус: Не очень злой админ :-)
- ОС: SuSE, CentOS, FreeBSD, Windows
Re: Почему программисты боятся табуляции?
watashiwa_darede... писал(а): ↑06.11.2009 10:09нажатие Tab не обязательно должно приводить к вставке символа TAB
Логично. Подправил свое сообщение, чтобы других в заблуждение не вводить.
-
- Сообщения: 243
- ОС: Win7/Ubuntu 11.10
Re: Почему программисты боятся табуляции?
Как с помощью tab отформатировать код со следующим стилем:
?
Код: Выделить всё
void some_class_name::some_function_name(int first_param,
int second_param,
int third_param);
double value = (.....)
+ (.....)*(.....)
- (.....)/(.....);
?
-
- Сообщения: 50
Re: Почему программисты боятся табуляции?
Даже если в одном тексте перемешаны и пробелы, и табуляция — есть :retab, есть indent. Так что даже это проблем не создаёт.
В далеком прошлом, в эпоху BC (before computers), существовали устройства, именовавшиеся телетайпами. Вот оттуда-то и есть пошол этот кошмар — символ \t, равный 8 пробелам. Именно 8, а не 9 и не 7.
Читать тескт с отсутпами в 8 пробелов — это неудобно. Удобно, когда около 4 пробелов.
Чтобы \t отображался как 4 пробела — это уже костыль. Именно костыль. Этот костыль по-разному реализуется в разных редакторах, что влечёт массу проблем.
Отказ от ненужного символа табуляции и использование пробелов никаких костылей не предполагает. Можно просто работать.
В далеком прошлом, в эпоху BC (before computers), существовали устройства, именовавшиеся телетайпами. Вот оттуда-то и есть пошол этот кошмар — символ \t, равный 8 пробелам. Именно 8, а не 9 и не 7.
Читать тескт с отсутпами в 8 пробелов — это неудобно. Удобно, когда около 4 пробелов.
Чтобы \t отображался как 4 пробела — это уже костыль. Именно костыль. Этот костыль по-разному реализуется в разных редакторах, что влечёт массу проблем.
Отказ от ненужного символа табуляции и использование пробелов никаких костылей не предполагает. Можно просто работать.
Красная площадь — это не только точное время, но и культурная программа с цирком и зоопарком.
-
- Бывший модератор
- Сообщения: 4038
- Статус: Искусственный интеллект (pre-alpha)
- ОС: Debian GNU/Linux
Re: Почему программисты боятся табуляции?
Это создаёт проблемы с системами контроля версий, это создаёт проблемы с тем, что нужно постоянно делать этот самый :retab и indent, что неудобно, если в проектах несколько тысяч файлов и надо постоянно в них подглядывать. Так что, :retab и/или indent можно сделать один раз, чтобы больше с табуляциями не мучаться.
Мои розовые очки
-
- Сообщения: 50
Re: Почему программисты боятся табуляции?
watashiwa_darede... ,
это-то понятно, если в проекте уже есть несколько тысяч файлов, то наверняка ужь решено, что использовать, пробелы или табы. Так что тут ужь и обсуждать нечего, делать, как оговорено, и не рассуждать.
это-то понятно, если в проекте уже есть несколько тысяч файлов, то наверняка ужь решено, что использовать, пробелы или табы. Так что тут ужь и обсуждать нечего, делать, как оговорено, и не рассуждать.
Красная площадь — это не только точное время, но и культурная программа с цирком и зоопарком.