Что такое табуляция в программировании
Перейти к содержимому

Что такое табуляция в программировании

  • автор:

Табуляция

Горизонтальная табуляция (HT, TAB) — управляющий символ таблицы ASCII с кодом 0916, используется для выравнивания текста по горизонтали. Встретив этот символ, терминал перемещает каретку (или курсор) вправо на ближайшую позицию табуляции. Традиционно эти позиции располагаются каждые 8 знакомест, в колонках 1, 9, 17, 25… Вводится при помощи клавиши Tab ⇆ , во многих языках программирования обозначается как \t.

Если отправить на печать текст (символ табуляции обозначен стрелкой)

один→два→три→четыре 1→2→3→4 5→6→7→8 9→10→11→12

получим такую распечатку:

один два три четыре 1 2 3 4 5 6 7 8 9 10 11 12

Также существует вертикальная табуляция VT с кодом 0B16, в настоящее время используемая крайне редко.

В текстовых редакторах

В текстовых редакторах позиции табуляции могут идти каждые 2 или 4 знакоместа: это удобно для работы с языками программирования. По желанию пользователя клавиша Tab ⇆ может не вставлять символ-табулятор, а имитировать его, вставляя нужное количество пробелов.

Одни стандарты оформления кода категорически запрещают символы-табуляторы: независимо от того, на сколько позиций настроен редактор или просмотрщик, текст будет выглядеть одинаково; в строковых константах же невидимый символ можно спутать с пробелом. Другие — требуют пользоваться именно табуляторами, а не пробелами.

В текстовых процессорах

Текстовые процессоры позволяют расставлять позиции табуляции в любых местах текста и выравнивать текст по любую сторону этих позиций (по левую сторону, по центру, по правую сторону). При желании символ табуляции может отображаться как отточие. С помощью табуляторов часто реализуются нумерация формул, списки определений, оглавления.

Сходная функциональность у таблиц. Но есть и отличия: текст, выровненный табуляторами, невозможно разлиновать на строки и столбцы. Зато в таблицах текст не может выходить за пределы ячеек.

Табуляция в (X)HTML

В (X)HTML горизонтальная табуляция обозначается как , однако она отобразится браузером только будучи использованной внутри тегов и :

Пример HTML-кода с использованием внутри тега

 
Две строчки с табуляцией: 2007	Табуляция внутри строки. 	Табуляция в начале строки. Строка без табуляции.

Браузер отобразит этот код так:

Две строчки с табуляцией: 2007 Табуляция внутри строки. Табуляция в начале строки. Строка без табуляции.

Вертикальная табуляция обозначается как , однако она не используется в SGML (включая HTML) или XML 1.0.

Клавиша Tab ⇆ в прикладном ПО

За клавишей Tab ⇆ закрепились такие функции:

  • В текстовых редакторах, текстовых процессорах — ввод символа табуляции, работа с отступами.
  • В графических интерфейсах — прыжок. В частности, в WindowsTab ⇆ — переключение между элементами текущего окна, Alt + Tab ⇆ — переключение между программами. Прыжок в обратную сторону — ⇧ Shift + Tab ⇆ .
  • В консольных интерфейсах (например IOS, bash, Zsh), в том числе в консолях компьютерных игр (например, Quake 3, Doom 3, Unreal Tournament) — автодополнение команды.

См. также

  • TSV — формат представления табличных данных, использующий табуляцию как разделитель

Информация должна быть проверяема, иначе она может быть поставлена под сомнение и удалена.
Вы можете отредактировать эту статью, добавив ссылки на авторитетные источники.
Эта отметка установлена 15 мая 2011.

Это заготовка статьи о компьютерах. Вы можете помочь проекту, исправив и дополнив её.
Это примечание по возможности следует заменить более точным.
  • Клавиатура
  • Управляющие символы
  • Непечатаемые знаки
  • Пробельные символы
  • Стандарт оформления кода

Wikimedia Foundation . 2010 .

Синонимы:

  • Обслуживание
  • Неволин, Константин Алексеевич

Полезное

Смотреть что такое «Табуляция» в других словарях:

  • табуляция — сущ., кол во синонимов: 1 • табулирование (1) Словарь синонимов ASIS. В.Н. Тришин. 2013 … Словарь синонимов
  • табуляция — Перемещение курсора к следующей позиции. [http://www.morepc.ru/dict/] Тематики информационные технологии в целом EN tabulation … Справочник технического переводчика
  • табуляция — табул яция, и … Русский орфографический словарь
  • Горизонтальная табуляция — Источник: ГОСТ 22562 77: Аппараты телеграфные буквопечатающие. Термины и определения оригинал документа Смотри также родственные термины … Словарь-справочник терминов нормативно-технической документации
  • вертикальная табуляция — вертикальное форматирование Возможность текстового редактора размещать текст вертикально внутри границ, установленных пользователем. [ГОСТ Р ИСО/МЭК 2382 23 2004] вертикальная табуляция Число строк, которые должны быть пропущены на странице перед … Справочник технического переводчика
  • горизонтальная табуляция — горизонтальное форматирование Возможность текстового редактора размещать текст горизонтально внутри границ, установленных пользователем. [ГОСТ Р ИСО/МЭК 2382 23 2004] горизонтальная табуляция Горизонтальное перемещение положения курсора к… … Справочник технического переводчика
  • КРОСС-ТАБУЛЯЦИЯ — (CROSS TABULATION) Распространенным способом представления данных являются двумерные таблицы, в которых значения одной переменной соотносятся со значениями другой. Примером может служить кросс табуляция электоральных намерений и социального… … Социологический словарь
  • вертикальная табуляция — stačiasis tabuliavimas statusas T sritis radioelektronika atitikmenys: angl. vertical tabulation vok. Vertikaltabulation, f rus. вертикальная табуляция, f pranc. tabulation verticale, f … Radioelektronikos terminų žodynas
  • комбинированная табуляция (данных) — — [А.С.Гольдберг. Англо русский энергетический словарь. 2006 г.] Тематики энергетика в целом EN cross tabulation … Справочник технического переводчика
  • обратная табуляция — Возврат курсора к предшествующему символу или полю. [http://www.morepc.ru/dict/] Тематики информационные технологии в целом EN backtab … Справочник технического переводчика
  • Обратная связь: Техподдержка, Реклама на сайте
  • �� Путешествия

Экспорт словарей на сайты, сделанные на PHP,
WordPress, MODx.

  • Пометить текст и поделитьсяИскать в этом же словареИскать синонимы
  • Искать во всех словарях
  • Искать в переводах
  • Искать в ИнтернетеИскать в этой же категории

Пора завязывать использовать пробелы вместо табуляции в коде

Этот топик — ответ на топик «Пора завязывать использовать символы табуляции в коде».
Я хотел было ответить к комментариях, но в силу объема и желания независимости от исходного топика решил создать новый топик.

Итак, под катом — почему табы лучше пробелов, самые значительные заблуждения касательно табов и как ими правильно пользоваться.

Начнём с того, что большинство людей (по крайней мере на Хабре) предпочитают табы.

По ссылке есть очень классный комментарий от GreyCat:

На самом деле странно то, что многие до сих пор не отличают indentation и alignment. Ну, вот это — indentation:

for (int i = 0; i

А вот это — alignment:

int some_variable = 0; int v1 = 0;

Первое можно делать и табами, и пробелами, но когда делаешь табами — каждый может подстроить ширину indent’а на свой вкус и ничего никуда не едет. А второе — строго пробелами.

В IDE есть опция Smart Tabs для этого:

Если правильно использовать табы (а именно — только для indentation) — можно без проблем менять размер табов не нарушая стиль программирования.

2 пробела на таб:

5 пробелов на таб:

9 пробелов на таб:

Так каких проблем мы лишаемся?

1. Каждый программист может настроить длину табуляции под свой вкус. Всегда работает на практике. Когда код с большой вложенностью — можно поставить ширину табуляции в два пробела, иначе — в четыре.
2. Легче работать с посторонними библиотеками. Какие-то библиотеки поддерживают стиль с шириной таба в два пробела, какие-то с шириной в четыре пробела. Только использование табов не накладывает ограничение на стиль.

Процитирую пару мыслей из предыдущего топика:

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

На самом деле в проектах, которые используют табуляцию таких проблем нету — так как табуляция безразмерна, а вот поддерживать одновременно пару библиотек с разным размером пробело-табуляции становится проблематичным, т.к. уже нельзя пользоваться tab (чтобы IDE заменяла табы на пробелы). Конечно, есть шанс решить такую проблему разными проектами с разными настройками, но это тот еще костыль, да и башку все-равно сносит от разных размеров вложенности.

Легко пустить козла в огород. Скажем у вас табуляция равна 4 пробелам. Кто-то что-то чуть-чуть поправил, используя другой размер табуляции или явно вставив пробелы. У него все смотрелось нормально, а у вас строчка кода куда-то уедет.

Аналогично, табуляция — безразмерная. Такая проблема есть только в проектах, которые используют пробелы. Там где используются табы — они могут быть хоть 2, хоть 10 символов шириной.

Надо постоянно настраивать различные редакторы под нужный вам размер табуляции. Даже если вам нужно просто посмотреть код не правя. Иначе все разъезжается. Особенно это не удобно, когда приходится что-то делать со своим кодом на сторонней машине.

Допустим, я открываю Kate, чтобы по-быстряку поправить код в каком-то файле. Оппа, размер табуляции два пробела. Надо лезть в конфиг. А в соседнем файле из другой либы — четыре пробела. Придётся пользоваться пробелом вместо таба для отступов, ужас. С табами такой проблемы нету.

Лишние сложности тем, кто работает одновременно с проектами, где по стандартам кодирования требуются разные отступы. Если стандарты требуют использование табуляции, то это ещё тот вечно ноющий зуб. В случае пробелов опять-таки все намного проще.

Как выше разобрали, такая проблема есть именно с проблемами, а не с табами.

А еще дополнительно у пробелов есть такие недостатки, как невозможность быстрого перемещения стрелочками клавиатуры (щёлкает каждый пробел, а не через блок), возможность допустить ошибку (поставить в одном месте 3 пробела вместо 4, чем порушить дальнейшую структуру), увеличение размера файла и куча всего ещё.

Вывод

У пробелов нету ни одного существенного преимущество по сравнению с табами, при этом мы не сковываем программиста в рамки и не заставляем его мучаться с слишком маленькими (или слишком большими) для него табами.

Главное

Не так важно, что именно вы используете. Важно, чтобы вы следили за порядком своего кода и всегда придерживались одного и того же стиля. Включите отображение табов/пробелов, иногда меняйте размер табуляции на другой и пробегайте глазами код, чтобы удостоверится, что у вас где-то не вставились пробелы вместо табов или табы вместо пробелов.

UPD: примечание согласно комментариев

Я давно хотел написать статью про табы. Но не про «Табы VS Пробелы», а именно про то, как пользоваться табами правильно. Комменты подтвердили, что многие не знали про indentation и alignment. Смысл этой статьи совершенно не в том, что правы все, кто использует табы. Есть стандарты кодирования, есть особенности языка, есть личные предпочтения.
Самое главное — знать правила расстановки отступов и уметь ими пользоваться. И никогда не смешивать два стиля. Заметьте — не «не смешивать табы и пробелы», а не смешивать два стиля.
Лично я рекомендую использовать подход, описанный в топике, но только в том случае, если стандарты кода, с котором вы работаете не подразумевают что-то другое.

  • табуляция
  • программирование
  • исходный код
  • пробелы — говно
  • форматирование кода
  • оформление кода
  • стандарты кодирования
  • indentation
  • alignment
  • отступы
  • выравнивание

Python табуляция (отступы)

Одна из особенностей Python — для оформления блоков кода вместо привычных фигурных скобок, как в C, C ++, Java или операторных скобок begin … end как в Pascal, используются отступы (или табуляция).

Подробнее о том, какие есть правила расстановки отступов — рассмотрим далее.

Почему табуляция в Питоне так важна?

Что такое отступ? Говоря простыми словами, это просто добавление пробела перед определенным оператором.

Отступы — важная концепция языка Питон, так как без правильного их оформления в итоге программист получит ошибку типа IndentationError , код при этом не будет скомпилирован.

Многим программистам жесткое соблюдение отступов может показаться избыточной мерой. Однако именно из-за строго соблюдения правил форматирования, код на Python — чистый, понятный и аккуратный. Отсюда следующие плюсы ��:

  • Не нужно проверять, не потерялась ли лишняя скобка;
  • Читать такой код удобнее (по » Философии Python » — читаемость имеет значение);
  • Легче работать со сторонними библиотеками;
  • Код вашего коллеги будет максимально похож на ваш код.

��‍♂️ Чтобы понять, насколько это важно, можно представить ситуацию, когда в книге удалить все номера страниц, в результате чего нельзя будет понять, где продолжать чтение. Без использования indent-отступа интерпретатор Python не сможет определить, какой оператор необходимо выполнять следующим, что относится к разным блокам кода. В результате и возникает исключение типа IndentationError .

Отступы в языке Python — это способ указать интерпретатору, что оператор (или целая их группа) — это определенный block-комбинация команд для выполнения задачи.

В большинстве других языков, таких как семейство C, Java и прочих для оформления блоков используются фигурные скобки, в Питоне — отступы, для создания которых обычно используются пробелы. Все команды, отделенные от начала строки одним и тем же расстоянием, принадлежат к одному и тому же блоку. Если в нем выделяется еще один блок — используется еще один отступ вправо, и так далее. Рассмотрим это на примере:

def my_small_function(): # [0 пробелов] определение функции со знаком «:» в конце if a > b: # [4 пробела] начало блока условия, располагается внутри функции return a # [8 пробелов] часть блока if else: # [4 пробела] продолжение блока условия, на том же уровне, что и if return b # [8 пробелов] часть блока else print(my_small_function()) # [0 пробелов] вызов функции вне ее блока

�� По умолчанию в Python используется 4 пробела в качестве отступа

Однако программист может использовать и другое их количество, но не менее одного.

Что нам говорит PEP8?

Для каждого уровня отступов необходимо использовать по 4 пробела.

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

Примеры кода

�� Правильное оформление

# Выравнивание выполнено по открывающей скобке foo = name_of_function(one, two, three, four) # Дополнительные отступы используются для выделения блока от остальных def name_of_function( one, two, three, four): print(one)

Расположение закрывающих скобок в конструкциях с многими строками под началом первой строки:

my_list = [ one, two, three, four, five, six, ] result = some_arguments( ‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’, )

�� Ошибочное оформление

# Без вертикального выравнивания аргументы не должны располагаться на первой линии foo = name_of_function(one, two, three, four) # Используется больше отступов для выделения блока от остальных def name_of_function( one, two, three, four): print(one)

�� Выборочное оформление

# Использование небольших отступов foo = name_of_function( one, two, three, four)

В многострочных конструкциях закрывающие скобки можно устанавливать на отдельной строке под первым символом (не пробелом) последнего пункта:

some_list = [ one, two, three, four, five, six, ] res = some_arguments( ‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’, )

Табуляция или пробелы — что использовать? ��‍♂️

Согласно официальной документации, самым предпочтительным способом оформления отступов является использование пробелов, обычно 4

Табуляция может использоваться в случае поддержки готового кода, где все отступы оформлены именно таким способом.

В Python 3 версии запрещено оформлять отступы с использованием табуляции и пробелов, только какой-то один способ. Во второй версии интерпретатор пытается преобразовывать табуляцию в пробелы. Так, при вызове интерпретатора в командной строке с использованием параметра -t появляется предупреждение о наличии смешанного стиля оформления отступов. Если же запуск выполнен с параметром -tt, в этих местах кода будут ошибки. Так что рекомендуется использовать вызова интерпретатора именно с этими параметрами.

Настройка IDE для работы с отступами

Чтобы при написании кода не задумываться о правильной расстановке пробелов для отступов, в редакторах кода и IDE используется специальный функционал, самостоятельно распознающий место создания отдельных блоков, в результате чего пробелы расставляются автоматически.

Рассмотрим, как можно настроить или изменить такие параметры в самых популярных IDE, когда возникает такая необходимость.

PyCharm

В случае использования интегрированной среды разработки PyCharm для настройки оформления отступов необходимо последовательно перейти по таким пунктам меню:

File → Settings → Editor → Code style → Python

Для настроек параметров есть 3 поля:

  1. Tab size — количество пробелов при нажатии клавиши Tab;
  2. Indent — количество пробелов для одного отступа;
  3. Continuation indent — количество пробелов для отступа, когда следующая строка продолжает предыдущую.

�� Еще одна полезная опция — отображение точек вместо каждого пробела, что особо удобно при поддержке чужого кода. В PyCharm для активации этой функции следует перейти File → Settings → Editor → General → Appearance → Show whitespaces , установив галочку напротив соответствующего пункта.

VSCode

Для настройки аналогичных функций в VSCode нужно нажать комбинацию клавиш ctrl + , или перейти по пунктам меню

File → Preferences → Settings

Далее для ускорения в строке поиска ввести tab и установить нужные значения для таких опций:

  • editor: insert spaces — использовать ли пробелы вместо табуляции;
  • editor: tab size — желаемое количество пробелов для одного отступа.

Ошибки при работе с отступами

При неправильном оформлении отступов интерпретатор Python будет сообщать об ошибках. Таких ошибок может быть несколько, рассмотрим основные.

expected an indented block

Данная ошибка может возникать в случае, когда после оглашения начала блока кода — def, if, while и некоторых других на следующей строке отсутствует отступ. Для ее исправления после начала блока должна быть хотя бы одна вложенная строка с отступом.

Возникает ошибка в том случае, когда перед началом строки есть отступ, но на предыдущей отсутствует оглашение начала блока кода, то есть, нет def, if, elif, else, for или while. Обычно такая ситуация возникает случайно, когда программист ставит слишком много пробелов в начале строки.

Indentationerror: expected an indented block

Ошибка возникает в том случае, когда после оглашения блока кода на следующей строке нет отступа или же сделанные отступы состоят из разного количества пробелов.

Таким образом, отступы в языке программирования Python, в отличие от многих других, играют такую же важную роль, как и служебные слова, так как именно они определяют создание блоков кода. Для каждого indent рекомендуется использовать 4 пробела, однако программист по своему желанию может установить и другое их количество, главное — одинаковое во всем проекте.

Чем правильно ставить отступы — табами или пробелами?

Программисты почти 30 лет спорят, как ставить отступы: табуляцией или пробелами. Разбираемся, зачем это вообще нужно и как это делать правильно.

Зачем нужны отступы

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

Чем правильно ставить отступы — табами или пробелами?

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

А вот так выглядит тот же самый код, к которому мы добавили отступы разного уровня — сразу видна иерархия и порядок:

Чем правильно ставить отступы — табами или пробелами?

Ещё есть языки программирования, в которых отступы обязательны — сейчас это Python, а ещё были Fortran и COBOL. Например, эти два фрагмента кода на Python приведут к разным результатам, хотя отличаются только отступами:

# с отступами for i in range(10): i = i+1 print(i) k = i*2 print(k) # без отступов for i in range(10): i = i+1 print(i) k = i*2 print(k)

Что такое табы

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

Клавиша табуляции перешла на клавиатуру компьютера и в редакторах кода делает то же самое — перемещает курсор на несколько позиций правее.

Чем правильно ставить отступы — табами или пробелами?

На сколько именно позиций сдвигается курсор — зависит от настроек редактора. Чаще всего используются числа, кратные двум: 2, 4 или 8 позиций. Одна позиция равна одному пробелу, поэтому говорят, например, что в табе 8 пробелов.

Почему лучше табы

С табами всё просто: один таб — один отступ, первый уровень вложенности. Два таба — два отступа, второй уровень вложенности и так далее. Не нужно много раз нажимать на пробел, считать в уме, сколько раз ты уже нажал и сколько осталось.

А ещё всегда можно настроить размер табуляции — сколько пробелов будет занимать один таб. В редакторе кода VS Code это можно настроить внизу, на информационной панели:

Чем правильно ставить отступы — табами или пробелами?

Почему лучше пробелы

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

Какие бывают стили отступов

У разных программистов есть свои традиции отступов и форматирования кода. Вот самые известные из них.

Стиль Кернигана и Ритчи. Автора языка Си придерживались такого форматирования: отступ в 8 пробелов (или одна большая табуляция, открывающая скобка на открывающей строке, закрывающая — отдельно:

Стиль GNU. В большинстве проектов Linux и открытого ПО придерживаются отступов в 2 символа, причём скобки тоже отступаются:

Стиль Олмана, или стиль BSD. У этого подхода открывающая скобка находится на том же уровне, что и команда, к которой она относится, а операторы сдвинуты на определённое количество символов (2, 4 или 8). Отступ может быть любым, главное, чтобы он соблюдался во всей программе:

Так что правильно ставить — табы или пробелы?

Если вы пишете код один и для себя — ставьте, что нравится, это же ваш код.

Если вы работаете в команде или занимаетесь парным программированием — узнайте, как принято, и делайте так же. Например, если в компании принято ставить 4 пробела — ставьте пробелы, даже если ваш таб настроен на такой же размер. А если все ставят табы — ставьте и вы.

Хотите больше? Скачивайте наш гид

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

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

Хотите больше? Скачивайте наш гид Хотите больше? Скачивайте наш гид

Получите ИТ-профессию

В «Яндекс Практикуме» можно стать разработчиком, тестировщиком, аналитиком и менеджером цифровых продуктов. Первая часть обучения всегда бесплатная, чтобы попробовать и найти то, что вам по душе. Дальше — программы трудоустройства.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *