Стандартный текстовый буфер¶
Стандартный текстовый буфер (англ. Standard Text Buffer, СТБ) — формат хранения текстовых документов в виде плоского двумерного массива символов, где каждый символ занимает фиксированную позицию, определяемую номером строки и номером столбца. СТБ является базовой абстракцией, на которой построены многие текстовые редакторы, форматы файлов и протоколы обмена текстом.
¶История
Идея текстового буфера как двумерного массива символов возникла в 1960-х годах вместе с появлением первых текстовых редакторов и терминалов. В ранних системах текст хранился в оперативной памяти именно в виде линейного массива символов с фиксированной шириной строки, что соответствовало возможностям текстовых дисплеев того времени.
В 1970-е годы формат СТБ стал основой для разработки текстовых редакторов в Unix-системах, таких как ed и vi. В 1980-е годы концепция развилась в формате IBM DCF (Document Content Architecture), а также в формате IBM 3270, где текстовый буфер терминала хранился в виде массива 24×80 символов.
¶Устройство
В стандартном текстовом буфере текст представляется как двумерная сетка символов:
- Строки нумеруются сверху вниз, начиная с 1 или 0 (в зависимости от реализации).
- Столбцы нумеруются слева направо.
- Каждая позиция занимает ровно один символ фиксированной ширины.
Типичная реализация СТБ включает:
| Компонент | Описание |
|---|---|
| Массив символов | Основное хранилище текста |
| Указатель строки | Текущая позиция курсора по вертикали |
| Указатель столбца | Текущая позиция курсора по горизонтали |
| Размер буфера | Максимальное число строк и ширина строки |
¶Форматы файлов на основе СТБ
Несколько распространённых форматов текстовых файлов основаны на принципе стандартного текстового буфера:
- ASCII-текст — последовательность символов ASCII с разделителями строк (LF или CRLF).
- IBM 3270 data stream — формат передачи данных для терминалов IBM, где текст организован в фиксированные поля.
- ANSI art — формат хранения текстовых рисунков, использующий управляющие последовательности ANSI и фиксированную сетку 80×25 символов.
¶Применение
Стандартный текстовый буфер используется в следующих областях:
¶Текстовые редакторы
Большинство классических текстовых редакторов (ed, vi, emacs, Notepad) внутренне представляют документ как массив строк. Даже современные редакторы с поддержкой произвольной ширины символов и многоязычного текста (например, редакторы на базе CodeMirror или Monaco) используют модифицированную версию СТБ.
¶Терминальные эмуляторы
Терминальные эмуляторы (xterm, GNOME Terminal, PuTTY) хранят содержимое экрана в виде буфера символов, что напрямую соответствует модели СТБ. Прокрутка в терминале реализуется через кольцевой буфер строк.
¶Форматы обмена
Протоколы передачи текста, такие как TELNET и некоторые версии SSH, передают данные в виде потока символов, которые接收端 восстанавливает в двумерный буфер для отображения.
¶Ограничения
Стандартный текстовый буфер имеет ряд ограничений:
- Фиксированная ширина символов — не поддерживает пропорциональные шрифты.
- Ограниченная поддержка Unicode — символы вне BMP могут занимать более одной позиции в буфере.
- Отсутствие структуры — формат не хранит информацию о стиле, форматировании или логической структуре документа.
- Размер — работа с очень большими файлами (гигабайты) может быть неэффективной.
¶См. также
¶Литература
- Raymond, E. S. The Art of Unix Programming. Addison-Wesley, 2003.
- Arnold, K. The AWK Programming Language. Addison-Wesley, 1988.
- IBM. 3270 Information Display System Data Stream Programmer's Reference. IBM, 1984.
