Открыть сервис

Whitespace

Whitespace (от англ. white space — «белое пространство»), также пробельные символы или пробелы — в типографике, программировании и обработке текста термин, обозначающий символы, которые не отображаются видимым образом, но влияют на форматирование и структуру текста. К whitespace относятся пробел, табуляция, символы перевода строки, возврата каретки, а также ряд других специальных символов, используемых для разделения лексем, выравнивания и создания отступов. В компьютерных системах whitespace является неотъемлемой частью кодировки текста и играет ключевую роль в синтаксисе многих языков программирования.

История

Понятие whitespace возникло с развитием машинописной техники и компьютерной обработки текста. В ранних пишущих машинках и телетайпах пробел (space) был единственным символом, который не оставлял видимого следа на бумаге, но перемещал каретку на одну позицию вправо. С появлением компьютерных терминалов и наборных устройств (например, телетайпов ASR-33) в 1960-х годах были введены дополнительные управляющие символы: табуляция (HT — Horizontal Tab), перевод строки (LF — Line Feed), возврат каретки (CR — Carriage Return) и другие. Эти символы были стандартизированы в кодировке ASCII (1963 год) и впоследствии вошли в Unicode.

С развитием языков программирования в 1970–1980-х годах whitespace стал использоваться не только для форматирования, но и для синтаксического структурирования кода. Например, в языке ALGOL 68 пробелы и переводы строк были незначимыми, в то время как в Python (1991 год) отступы пробелами стали частью синтаксиса, определяющей блоки кода.

Классификация символов whitespace

Символы whitespace делятся на несколько категорий в зависимости от их функции и стандарта кодировки.

Основные пробельные символы ASCII

  • Пробел (Space, U+0020) — стандартный символ разделения слов, шириной в одну позицию шрифта.
  • Табуляция (Tab, U+0009) — символ горизонтального выравнивания, обычно сдвигает курсор до следующей позиции табуляции (кратной 4 или 8 символам).
  • Перевод строки (Line Feed, LF, U+000A) — символ перехода на новую строку в Unix-подобных системах.
  • Возврат каретки (Carriage Return, CR, U+000D) — символ, возвращающий курсор в начало строки; в Windows используется в паре с LF (CR+LF).
  • Вертикальная табуляция (Vertical Tab, VT, U+000B) — редко используемый символ для вертикального выравнивания.
  • Перевод страницы (Form Feed, FF, U+000C) — символ разрыва страницы, используется в принтерах и текстовых процессорах.

Дополнительные пробельные символы Unicode

Unicode включает множество символов whitespace, предназначенных для разных типографических задач:

  • Неразрывный пробел (U+00A0) — предотвращает перенос строки между словами.
  • Тонкий пробел (U+2009) — узкий пробел, используемый в типографике для разделения чисел и единиц измерения.
  • Пробел нулевой ширины (U+200B) — невидимый символ, используемый для переноса слов без видимого пробела.
  • Пробел-минуточка (U+200A) — очень узкий пробел, применяемый в математических формулах.
  • Средний пробел (U+2004) — пробел шириной в 1/4 кегля шрифта.
  • Пробел-тире (U+2005) — пробел шириной в 1/3 кегля.
  • Пробел-цифра (U+2007) — пробел, равный ширине цифры в данном шрифте.
  • Пунктуационный пробел (U+2008) — пробел, равный ширине точки.
  • Пробел-символ (U+2000–U+200A) — серия пробелов различной ширины, определённых в стандарте Unicode.

Применение в программировании

Whitespace играет фундаментальную роль в синтаксисе и семантике языков программирования.

Разделение лексем

В большинстве языков программирования (C, Java, JavaScript, Python) пробелы и табуляции используются для разделения ключевых слов, идентификаторов, операторов и литералов. Например, в выражении int a = 5; пробелы отделяют int от a и a от =. Без пробелов код становится нечитаемым или синтаксически неверным.

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

В некоторых языках whitespace определяет структуру блоков кода:

  • Python — отступы (пробелы или табуляции) задают вложенность блоков. Неправильное количество пробелов приводит к синтаксической ошибке. Стандарт PEP 8 рекомендует использовать 4 пробела на один уровень отступа.
  • Haskell — использует отступы для определения области видимости выражений (например, в where-блоках).
  • CoffeeScript — отступы заменяют фигурные скобки для блоков.
  • YAML — формат сериализации данных, где отступы пробелами определяют иерархию ключей.

Язык Whitespace

Существует эзотерический язык программирования Whitespace (создан в 2003 году Эдвином Брэди и Крисом Моррисом), в котором команды кодируются исключительно пробелами, табуляциями и переводами строк. Все остальные символы игнорируются. Программа на Whitespace состоит из трёх типов инструкций, задаваемых последовательностями пробелов и табуляций.

Проблемы с whitespace

  • Смешивание табуляций и пробелов — в Python и других языках со значимыми отступами это может привести к ошибкам. Рекомендуется использовать только пробелы.
  • Невидимые символы — неразрывные пробелы или пробелы нулевой ширины могут случайно попасть в код, вызывая трудноуловимые ошибки.
  • Различия в окончаниях строк — переводы строк в формате CR+LF (Windows) и LF (Unix) могут вызывать проблемы при переносе кода между системами.

Применение в типографике и вёрстке

В типографике whitespace используется для улучшения читаемости и эстетики текста:

  • Межсловные пробелы — стандартные пробелы между словами.
  • Межбуквенные пробелы — трекинг (разрядка) для выделения текста.
  • Межстрочные интервалыинтерлиньяж, задаваемый пробелами между строками.
  • Отступы абзацев — пробелы или табуляции в начале строки.
  • Поля и отступы — в веб-вёрстке (CSS) whitespace используется для создания внешних и внутренних отступов (margin, padding).

В веб-дизайне и графическом дизайне термин «whitespace» также обозначает пустое пространство между элементами макета, которое не обязательно белого цвета, но не содержит контента. Это пространство улучшает восприятие и структурирование информации.

Интересные факты

  • В кодировке ASCII символ пробела (0x20) был введён для совместимости с перфокартами, где пробел обозначал отсутствие отверстия.
  • В языке программирования Brainfuck пробелы и переводы строк игнорируются, как и в Whitespace, но в Brainfuck они не несут смысловой нагрузки.
  • В некоторых текстовых редакторах (например, Vim) можно настроить отображение невидимых символов whitespace для удобства редактирования.
  • В стандарте Unicode существует более 20 символов, классифицированных как whitespace, включая такие редкие, как «пробел-тире» (U+2005) и «пробел-цифра» (U+2007).
  • В русской типографике традиционно используются неразрывные пробелы для отделения инициалов от фамилии (например, «А. С. Пушкин») и чисел от единиц измерения (например, «10 кг»).

Источники

  • Стандарт Unicode 15.0, раздел «Whitespace Characters»
  • Спецификация языка Python 3, PEP 8 — Style Guide for Python Code
  • Документация языка программирования Whitespace (2003)
  • «The Elements of Typographic Style» — Роберт Брингхерст (2004)
  • Стандарт ASCII (ANSI X3.4-1968)
  • Материалы конференции по веб-дизайну A List Apart (статья «Whitespace in Web Design»)

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →