Текстовый редактор RUNOFF
RUNOFF — это одна из первых компьютерных программ для подготовки текстовых документов, разработанная в 1964 году для операционной системы CTSS (Compatible Time-Sharing System) в Массачусетском технологическом институте (MIT). Она представляла собой форматтер текста, который обрабатывал исходный файл с командами разметки и создавал отформатированный вывод на печатающее устройство. RUNOFF является прямым предшественником современных систем вёрстки и языков разметки, таких как troff, nroff, TeX и Markdown.
История
Создание в MIT
Программа RUNOFF была написана Джерри Сальцером (Jerry Saltzer) в 1964 году для операционной системы CTSS. Изначально она предназначалась для форматирования текста на принтере, подключённом к мэйнфрейму IBM 7094. Название программы происходит от фразы «run off a copy» («сделать копию»), что отражало её основное назначение — подготовку документа к печати.
Исходный код RUNOFF был написан на ассемблере MAD (Michigan Algorithm Decoder) и занимал около 200 строк. Программа работала в пакетном режиме: пользователь создавал текстовый файл с командами разметки (например, .center, .skip, .fill), а затем запускал RUNOFF, который обрабатывал файл и выводил результат.
Развитие и влияние
В 1965 году Боб Моррис (Bob Morris) и Дуг Макилрой (Doug McIlroy) портировали RUNOFF на новую операционную систему Multics, где она была переписана на языке PL/I. Эта версия получила название roff, а затем была адаптирована для UNIX Джо Оссанной (Joe Ossanna) в начале 1970-х годов. Версия для UNIX, известная как nroff (для текстовых терминалов) и troff (для фотонаборных устройств), стала стандартным инструментом форматирования в ранних системах UNIX.
RUNOFF также оказал прямое влияние на создание системы TeX Дональдом Кнутом (1978) и языка разметки SGML (1986), который лёг в основу HTML и XML.
Принцип работы
Режим командной строки
RUNOFF не имел графического интерфейса и работал исключительно в текстовом режиме. Пользователь готовил исходный файл, содержащий обычный текст и команды, начинающиеся с точки (.). Команды указывали программе, как форматировать текст: выравнивание, отступы, межстрочные интервалы, номера страниц и т.д.
Пример типичного входного файла для RUNOFF:
`` .center Заголовок документа .skip 2 .fill Это пример текста, который будет автоматически выровнен по ширине. .spacing 2 Между строками будет двойной интервал. .page ``
Программа обрабатывала этот файл и создавала готовый к печати документ.
Основные команды
RUNOFF поддерживал набор базовых команд, большинство из которых сохранилось в последующих системах:
.center— центрирование строки.fill— включение режима выравнивания по ширине (заполнение строк).nofill— отключение выравнивания (текст выводится как есть).skip N— пропуск N пустых строк.spacing N— установка межстрочного интервала (N = 1, 2 и т.д.).page— принудительный переход на новую страницу.margin N— установка левого отступа.indent N— отступ первой строки абзаца.title— задание верхнего колонтитула.subtitle— задание нижнего колонтитула
Обработка макросов
В более поздних версиях (особенно в troff) появилась поддержка макросов — предопределённых наборов команд для типовых задач, таких как оформление заголовков, абзацев или списков. Это упростило создание сложных документов.
Применение
Научные и технические документы
RUNOFF активно использовался в академической среде для подготовки научных статей, отчётов и диссертаций. Его способность автоматически нумеровать страницы, выравнивать текст и вставлять колонтитулы делала его незаменимым инструментом для исследователей.
Документация программного обеспечения
В 1970-1980-х годах RUNOFF и его наследники (nroff/troff) были стандартом для написания документации к операционным системам UNIX и другим программным продуктам. Многие руководства (man pages) до сих пор используют формат, основанный на этих системах.
Подготовка книг и брошюр
Хотя RUNOFF не предназначался для сложной вёрстки, он позволял создавать книги и брошюры с базовым форматированием. Например, знаменитая книга «The C Programming Language» Брайана Кернигана и Денниса Ритчи (1978) была набрана с помощью troff.
Ограничения
Отсутствие WYSIWYG
Главным недостатком RUNOFF было отсутствие режима «что видишь, то и получаешь» (WYSIWYG). Пользователь не мог видеть конечный результат до запуска программы, что приводило к многократным циклам правки и форматирования.
Сложность обучения
Для работы с RUNOFF требовалось знание команд разметки, что делало его малодоступным для неспециалистов. В отличие от визуальных редакторов, таких как Microsoft Word (появился в 1983 году), RUNOFF имел крутой порог входа.
Ограниченные возможности
RUNOFF не поддерживал графику, таблицы (в ранних версиях), сложные математические формулы или многоколоночную вёрстку. Эти функции появились только в его наследниках — troff и TeX.
Наследие
Влияние на языки разметки
RUNOFF считается первым языком разметки (markup language). Его идея — отделение содержания от представления — легла в основу SGML, HTML, XML и Markdown. Современные системы, такие как LaTeX и AsciiDoc, используют ту же концепцию.
Программное наследие
Исходный код RUNOFF для CTSS был утерян, но его идеи живут в современных инструментах. Например, утилита groff (GNU troff) до сих пор используется в UNIX-подобных системах для форматирования man-страниц и подготовки документов. В 2021 году была предпринята попытка восстановить оригинальный код RUNOFF по архивным записям, но полная реконструкция не удалась из-за отсутствия полной документации.
Культурное значение
RUNOFF стал символом эпохи мэйнфреймов и ранних систем разделения времени. Он демонстрирует, как простая идея — автоматизация форматирования текста — привела к созданию целого класса программ, изменивших способ создания документов.
Интересные факты
- Название «RUNOFF» было выбрано из-за того, что в CTSS команда
RUNOFFозначала «запустить программу для создания копии документа». - Одна из первых версий RUNOFF была написана на перфокартах и занимала всего 200 строк кода.
- В 1964 году программа могла обрабатывать документы длиной до 2000 строк, что считалось большим объёмом.
- RUNOFF не поддерживал кириллицу, так как был разработан для англоязычных систем.
- В 1970-х годах на основе RUNOFF была создана программа
roffдля операционной системы UNIX, которая затем была стандартизирована как часть POSIX.
Источники
- Saltzer, J. H. (1964). «RUNOFF: A Text Formatting Program for the CTSS System». MIT Project MAC.
- Kernighan, B. W., & Ritchie, D. M. (1978). «The C Programming Language». Prentice Hall.
- McIlroy, M. D. (1987). «A Research UNIX Reader: Annotated Excerpts from the Programmer’s Manual, 1971–1986». Bell Laboratories.
- Raymond, E. S. (2003). «The Art of UNIX Programming». Addison-Wesley.
- Документация GNU groff (версия 1.22.4, 2021).
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →