Почему программисты боятся табуляции? (Замена на пробелы... зачем?)

Любые разговоры которые хоть как-то связаны с тематикой форума

Модератор: Модераторы разделов

Аватара пользователя
ТВЭЛ
Сообщения: 132
ОС: основана на SlackWare

Почему программисты боятся табуляции?

Сообщение ТВЭЛ »

Не могу понять, почему программисты предпочитают несколько пробелов одному символу.
Тайный смысл ускользает от меня, объясните, пожалуйста.
Время не ждет.
Спасибо сказали:
Аватара пользователя
fbi
Сообщения: 34

Re: Почему программисты боятся табуляции?

Сообщение fbi »

А вы поставте символ табуляции и попробуйте открыть файл в разных редакторах!
Спасибо сказали:
Nymin
Сообщения: 1095
Статус: -
ОС: GNU/Linux

Re: Почему программисты боятся табуляции?

Сообщение Nymin »

нормальные IDE заменяют \t на указанное число пробелов (4)
Спасибо сказали:
Аватара пользователя
fbi
Сообщения: 34

Re: Почему программисты боятся табуляции?

Сообщение fbi »

нормальные IDE заменяют \t на указанное число пробелов (4)

Ничего они не заменяют! Вы хотели сказать, что они могут заменять! Как правило, это сводится к выставлению галочки, где нить в настройках.
Спасибо сказали:
NickLion
Сообщения: 3408
Статус: аватар-невидимка
ОС: openSUSE Tumbleweed x86_64

Re: Почему программисты боятся табуляции?

Сообщение NickLion »

Стандартная холиварная тема программистов - что лучше - пробелы или табуляция. И почему боятся? Одним нравится одно, другим - другое.

Пробелы - не зависят от редактора - везде код выглядит одинаково.
Табуляция - меньше весит, перемещение по уровням отступа, а не пробелам (но перемещение по уровням многие редакторы поддерживают и для пробелов). Некоторые еще приводят такой плюс - если взять чужой код с табуляцией, то он выглядит "роднее" с твоим отступом (по 2-3-4 символа - тоже у каждого свое), а не отступом автора кода.

Главное - не смешивать! (а то есть любители отступ по 4 символа - пробелами, табуляция - 8, два отступа заменяются на табуляцию...) А там любое сойдет.

PS а еще можно вспомнить холивар про фигурные скобочки, и названия переменных ;)
Спасибо сказали:
Аватара пользователя
ТВЭЛ
Сообщения: 132
ОС: основана на SlackWare

Re: Почему программисты боятся табуляции?

Сообщение ТВЭЛ »

fbi писал(а):
05.11.2009 06:25
А вы поставте символ табуляции и попробуйте открыть файл в разных редакторах!

Зачем? У меня есть Vim :)

NickLion писал(а):
05.11.2009 08:55
Стандартная холиварная тема программистов - что лучше - пробелы или табуляция. И почему боятся? Одним нравится одно, другим - другое.
Блин, то есть всё это без какой-либо логики?! Мда.
В том же Vim есть аж несколько настроек для замены tab на пробелы.
Ужас какой-то.
Время не ждет.
Спасибо сказали:
Аватара пользователя
eddy
Сообщения: 3321
Статус: Красный глаз тролля
ОС: ArchLinux

Re: Почему программисты боятся табуляции?

Сообщение eddy »

А я обычно сильно ругаюсь, когда ко мне попадает код с пробельными отступами. Работаю чаще в mcedit'е или gedit'е. Благо, в gedit есть возможность выполнения внешних скриптов, так что проблема с кривым форматированием решается одним нажатием заданного сочетания клавиш :)
RTFM
-------
KOI8-R - патриотичная кодировка Изображение
Спасибо сказали:
NickLion
Сообщения: 3408
Статус: аватар-невидимка
ОС: openSUSE Tumbleweed x86_64

Re: Почему программисты боятся табуляции?

Сообщение NickLion »

Нет, почему, логика есть - в каждом из вариантов. Лично для меня не критично (как уже говорил - главное не смешивать).
Спасибо сказали:
Аватара пользователя
iljaCPP
Сообщения: 48
ОС: Slackware

Re: Почему программисты боятся табуляции?

Сообщение iljaCPP »

А на мой взгляд, символ "\t" придумали от нечего делать. Лишняя заморочка.
Есть клавиша табуляции как на печатных машинках, ну и печатала бы себе нужное число пробелов. Нет же, понадобилось отдельный символ для этого придумывать.
Сильно ругаюсь, когда читаю чужие исходники с табами.
Спасибо сказали:
allez
Сообщения: 2223
Статус: Не очень злой админ :-)
ОС: SuSE, CentOS, FreeBSD, Windows

Re: Почему программисты боятся табуляции?

Сообщение allez »

ТВЭЛ писал(а):
05.11.2009 02:44
Почему программисты боятся табуляции?, Замена на пробелы... зачем?
Не могу понять, почему программисты предпочитают несколько пробелов одному символу.

Ну, начнем с того, что не все и не везде:
(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, например, вообще ничего об этом не сказано.

В общем, уж извините, ТВЭЛ, но на мой сугубо личный взгляд, поднятая вами тема относится к разряду споров "тупоконечников" и "остроконечников" и совершенно не стоит выеденного объекта их спора. ;)
Спасибо сказали:
Аватара пользователя
iljaCPP
Сообщения: 48
ОС: Slackware

Re: Почему программисты боятся табуляции?

Сообщение iljaCPP »

А еще бывают редакторы, которые отображают табуляцию, исходя не из какого-то числа символов, а выравнивая по предыдущей строке.
Из за чего все форматирование нарушается. Поубивал бы...
Спасибо сказали:
juvf
Сообщения: 43

Re: Почему программисты боятся табуляции?

Сообщение juvf »

allez писал(а):
05.11.2009 10:06
но на мой сугубо личный взгляд, поднятая вами тема относится к разряду споров "тупоконечников" и "остроконечников" и совершенно не стоит выеденного объекта их спора. ;)

+1

дело вкуса, стиля, привычки и т.п. То же самое, что и про фигурные скобки.
Спасибо сказали:
Аватара пользователя
Portnov
Модератор
Сообщения: 1786
Статус: Матёрый линуксоид
ОС: Debian testing/unstable

Re: Почему программисты боятся табуляции?

Сообщение Portnov »

Айда в тематические беседы...
Работа: Ubuntu 9.10
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Спасибо сказали:
Аватара пользователя
ТВЭЛ
Сообщения: 132
ОС: основана на SlackWare

Re: Почему программисты боятся табуляции?

Сообщение ТВЭЛ »

allez писал(а):
05.11.2009 10:06
В общем, уж извините, ТВЭЛ, но на мой сугубо личный взгляд, поднятая вами тема относится к разряду споров "тупоконечников" и "остроконечников" и совершенно не стоит выеденного объекта их спора. ;)

Не-не. Обратите внимание, в приведённых вами примерах по Tab была аргументация, а по пробелам тупая директива - только так и всё, без какого-либо объяснения :)
Время не ждет.
Спасибо сказали:
allez
Сообщения: 2223
Статус: Не очень злой админ :-)
ОС: SuSE, CentOS, FreeBSD, Windows

Re: Почему программисты боятся табуляции?

Сообщение allez »

ТВЭЛ писал(а):
05.11.2009 13:22
Не-не. Обратите внимание, в приведённых вами примерах по Tab была аргументация, а по пробелам тупая директива - только так и всё, без какого-либо объяснения

Вы, похоже, не очень внимательно их читали. По табуляциям я привел два примера - во втором никаких аргументов не наблюдается (одна лишь "тупая директива"), в первом же они ну о-очень "веские" :)
· в случае использования табуляции каждый может настроить в своем редакторе желаемый отступ; (эстеты, однако)
· используется один символ вместо нескольких; (да еще и экономные)
· в случае смешивания пробелов и табуляции текст будет "прыгать", разрушая форматирование. (м-да...)

По пробелам также два примера - во втором "тупая директива", а в первом аргументы таки есть, но того же порядка и "весомости", что и аргументы в пользу табуляции:
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. И потом, я привел здесь первые попавшиеся на глаза примеры, которые мне выдал Гугл. Если покопаться, наверняка можно найти и более разумные обоснования своей правоты как от "пробельщиков", так и от "табуляторщиков". Но, повторюсь, меня это не интересует, поэтому тратить время и силы на такой поиск я не стану.
Спасибо сказали:
Аватара пользователя
agentprog
Сообщения: 362
Статус: Ad Astra per aspera
ОС: openSUSE 11.4, Arch

Re: Почему программисты боятся табуляции?

Сообщение agentprog »

в мейкфайлах обязательна табуляция. долго не мог сообразить почему не работал мейкфайл, пока не обнаружил, что текстовый редактор преобразовал мой таб в пробелы
No problems - just solutions!
Спасибо сказали:
allez
Сообщения: 2223
Статус: Не очень злой админ :-)
ОС: SuSE, CentOS, FreeBSD, Windows

Re: Почему программисты боятся табуляции?

Сообщение allez »

agentprog писал(а):
05.11.2009 13:50
в мейкфайлах обязательна табуляция.

По поводу символов табуляции в Makefile
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Почему программисты боятся табуляции?

Сообщение drBatty »

allez писал(а):
05.11.2009 13:45
Общий счет - 1:1 и мое мнение насчет остро- и тупоконечников, а также беспредметности этой темы совершенно не поколеблено. :)

ИМХО не настолько принципиальный вопрос - всегда можно подправить sed...
лично я предпочитаю в текстах Си пробелы...
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
allez
Сообщения: 2223
Статус: Не очень злой админ :-)
ОС: SuSE, CentOS, FreeBSD, Windows

Re: Почему программисты боятся табуляции?

Сообщение allez »

drBatty писал(а):
05.11.2009 16:23
лично я предпочитаю в текстах Си пробелы...
Аналогично. В текстах Perl- и shell-скриптов также пользуюсь пробелами. А вот когда приходится писать что-то на VB/VBA или языке 1С, то тут у меня рука сама Tab нажимает использую символы табуляции. И никакого душевного дискомфорта при этом не возникает. :)
Спасибо сказали:
Аватара пользователя
Voral
Сообщения: 1205
ОС: Debian Wheezy (amd64)

Re: Почему программисты боятся табуляции?

Сообщение Voral »

Раньше использовал пробелы, но одиночные. (т.е. разница между уровнями только 1 пробел)..... Стало не удобно начал нажимать два...... Надоело нажимать два, да и экраны теперь стали пошире, стал использовать табуляцию. Так мне удобно, так мне наглядно......

Спорить тут вообще нечего.
Работаешь один и для себя делай как удобно лично тебе.
Работаешь в команде следую уставу принятому в данном конкретном "монастыре".

Единственное правило, которое нужно себе привить с самого начала: не смешивать. Или ТОЛЬКО пробелы или ТОЛЬКО табуляция.
То что не убивает нас, делает нас сильнее! © Ницше.
When life puts you in tough situations, don’t say "why me". Just say "try me © ?
Спасибо сказали:
watashiwa_daredeska
Бывший модератор
Сообщения: 4038
Статус: Искусственный интеллект (pre-alpha)
ОС: Debian GNU/Linux

Re: Почему программисты боятся табуляции?

Сообщение watashiwa_daredeska »

Табуляции
Pros:
- Каждый может настроить в редакторе размер табуляции (но не всегда, см. Cons).
- Эффективнее по размеру (это, господа, смешно, Вы еще предложите переменные и функции называть одной-двумя буквами, чтобы место экономить).
Cons:
- Очень неудобно работать с несколькими проектами одновременно, имеющими разные соглашения по размеру и стилю использования табуляции. Modeline-нов на всех не напасешься: vim, emacs, eclipse(?), чёрт-те что еще...
- В особо запущенных случаях, вроде Python, отступы имеют семантическое значение и независимо от настроек редактора интерпретатор считает TAB за 8 пробелов. Если в редакторе другие настройки, проблемы обязательно возникнут, рано или поздно.
- Неправильная настройка размера табуляции мешает не только при редактировании, но и при просмотре. Исходники с поехавшими табуляциями нечитаемы. Исходники с табуляциями, отличными от 8 пробелов очень неудобно смотреть, например, less'ом (надо отдельную опцию прописывать).

Пробелы:
Pros:
- Всегда, везде и у всех выглядят одинаково независимо от настроек чего бы то ни было.
- WISIWIG: видно N пробелов, значит и есть N пробелов, а не что-то еще. Сильно упрощает жизнь.
Cons:
- Больше нажатий. (Все нормальные редакторы умеют работать с отступами пробелами так, что не отличить от отступов табуляциями. Все нормальные редакторы умеют достаточно умно отступать, без этого даже отступ табуляциями — лишние нажатия кнопок).
- Больший объем, чем у табуляций (см. про табуляции, это смехотворно).
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Почему программисты боятся табуляции?

Сообщение drBatty »

кэйт,вим,кдев сами ставят.(у мну-пробелы)
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
watashiwa_daredeska
Бывший модератор
Сообщения: 4038
Статус: Искусственный интеллект (pre-alpha)
ОС: Debian GNU/Linux

Re: Почему программисты боятся табуляции?

Сообщение watashiwa_daredeska »

allez писал(а):
05.11.2009 18:20
тут у меня рука сама Tab нажимает. И никакого душевного дискомфорта при этом не возникает. :)
Я в vim и emacs тоже Tab жму, но вставляются пробелы.
Спасибо сказали:
allez
Сообщения: 2223
Статус: Не очень злой админ :-)
ОС: SuSE, CentOS, FreeBSD, Windows

Re: Почему программисты боятся табуляции?

Сообщение allez »

Прошу прощения, недостаточно точно выразился: в виду имелось, что отступ при этом производится именно символами табуляции. Да и редакторы VBA, скажем, или там 1С не умеют заменять табуляцию на пробелы. А в прочих случаях я тоже жму Tab, но вставляются пробелы. :)
Спасибо сказали:
watashiwa_daredeska
Бывший модератор
Сообщения: 4038
Статус: Искусственный интеллект (pre-alpha)
ОС: Debian GNU/Linux

Re: Почему программисты боятся табуляции?

Сообщение watashiwa_daredeska »

allez писал(а):
06.11.2009 10:06
Я, видимо, недостаточно точно выразился
Достаточно точно. Я Вас понял, поэтому и возразил, что нажатие Tab не обязательно должно приводить к вставке символа TAB.
Спасибо сказали:
allez
Сообщения: 2223
Статус: Не очень злой админ :-)
ОС: SuSE, CentOS, FreeBSD, Windows

Re: Почему программисты боятся табуляции?

Сообщение allez »

watashiwa_darede... писал(а):
06.11.2009 10:09
нажатие Tab не обязательно должно приводить к вставке символа TAB

Логично. Подправил свое сообщение, чтобы других в заблуждение не вводить.
Спасибо сказали:
kamre
Сообщения: 243
ОС: Win7/Ubuntu 11.10

Re: Почему программисты боятся табуляции?

Сообщение kamre »

Как с помощью tab отформатировать код со следующим стилем:

Код: Выделить всё

void some_class_name::some_function_name(int first_param,
                                         int second_param,
                                         int third_param);

double value = (.....)
             + (.....)*(.....)
             - (.....)/(.....);

?
Спасибо сказали:
Gugloed
Сообщения: 50

Re: Почему программисты боятся табуляции?

Сообщение Gugloed »

Даже если в одном тексте перемешаны и пробелы, и табуляция — есть :retab, есть indent. Так что даже это проблем не создаёт.

В далеком прошлом, в эпоху BC (before computers), существовали устройства, именовавшиеся телетайпами. Вот оттуда-то и есть пошол этот кошмар — символ \t, равный 8 пробелам. Именно 8, а не 9 и не 7.
Читать тескт с отсутпами в 8 пробелов — это неудобно. Удобно, когда около 4 пробелов.
Чтобы \t отображался как 4 пробела — это уже костыль. Именно костыль. Этот костыль по-разному реализуется в разных редакторах, что влечёт массу проблем.

Отказ от ненужного символа табуляции и использование пробелов никаких костылей не предполагает. Можно просто работать.
Красная площадь — это не только точное время, но и культурная программа с цирком и зоопарком.
Спасибо сказали:
watashiwa_daredeska
Бывший модератор
Сообщения: 4038
Статус: Искусственный интеллект (pre-alpha)
ОС: Debian GNU/Linux

Re: Почему программисты боятся табуляции?

Сообщение watashiwa_daredeska »

Gugloed писал(а):
06.11.2009 11:04
Даже если в одном тексте перемешаны и пробелы, и табуляция — есть :retab, есть indent. Так что даже это проблем не создаёт.
Это создаёт проблемы с системами контроля версий, это создаёт проблемы с тем, что нужно постоянно делать этот самый :retab и indent, что неудобно, если в проектах несколько тысяч файлов и надо постоянно в них подглядывать. Так что, :retab и/или indent можно сделать один раз, чтобы больше с табуляциями не мучаться.
Спасибо сказали:
Gugloed
Сообщения: 50

Re: Почему программисты боятся табуляции?

Сообщение Gugloed »

watashiwa_darede... ,
это-то понятно, если в проекте уже есть несколько тысяч файлов, то наверняка ужь решено, что использовать, пробелы или табы. Так что тут ужь и обсуждать нечего, делать, как оговорено, и не рассуждать.
Красная площадь — это не только точное время, но и культурная программа с цирком и зоопарком.
Спасибо сказали: