Язык разметки
Язык разметки — это набор правил и символов (тегов, маркеров), которые встраиваются в текст для указания его структуры, форматирования, внешнего вида или логических связей между элементами. В отличие от языков программирования, языки разметки не предназначены для описания алгоритмов и вычислений; их основная задача — аннотирование содержимого документа, чтобы оно могло быть корректно интерпретировано программами (браузерами, текстовыми процессорами, типографскими системами) или людьми.
История возникновения
Идея разметки текста восходит к типографскому делу, где издатели использовали рукописные пометки (корректурные знаки) для указания гарнитуры шрифта, начертания, отступов и других параметров. С появлением электронных вычислительных машин возникла необходимость в формализованном способе описания структуры документа, который был бы понятен как человеку, так и машине.
Ранние системы
Одним из первых языков разметки считается SGML (Standard Generalized Markup Language, стандартный обобщённый язык разметки), разработанный в 1960–1970-х годах Чарльзом Голдфарбом, Эдвардом Мошером и Раймондом Лори. SGML был принят в качестве международного стандарта ISO 8879 в 1986 году. Он предоставлял метаязык для создания других языков разметки, но отличался высокой сложностью и громоздкостью.
Параллельно развивались специализированные системы. В 1960-х годах в рамках проекта RUNOFF (программа форматирования текста для операционной системы CTSS) появились первые команды разметки, которые впоследствии эволюционировали в язык troff (Unix). В 1978 году Дональд Кнут создал систему TeX, предназначенную для научной и математической вёрстки; она до сих пор остаётся стандартом в академической среде.
Взрыв популярности в 1990-е
Ключевым моментом стало появление HTML (HyperText Markup Language, язык разметки гипертекста), разработанного Тимом Бернерсом-Ли в 1991–1993 годах для создания веб-страниц. HTML базировался на подмножестве SGML, но был значительно проще. С ростом Всемирной паутины HTML стал самым распространённым языком разметки в мире. В 1998 году консорциум W3C опубликовал спецификацию XML (eXtensible Markup Language, расширяемый язык разметки) — упрощённый диалект SGML, предназначенный для обмена данными.
Классификация языков разметки
Языки разметки делятся на несколько категорий по принципу действия и назначению.
Процедурная и описательная разметка
- Процедурная (или императивная) разметка указывает, как должен быть обработан текст. Примеры: TeX, troff, PostScript (язык описания страниц). В таких языках команды задают конкретные действия (например, «увеличить шрифт на 2 пункта»).
- Описательная (или декларативная) разметка описывает, чем является элемент текста. Примеры: HTML, XML, Markdown. Теги указывают на тип содержимого (заголовок, абзац, список), а не на его внешний вид. Форматирование определяется отдельно — через таблицы стилей (CSS) или шаблоны.
Языки общего и специального назначения
- Общего назначения: SGML, XML, HTML, Markdown. Применимы для широкого круга задач — от веб-страниц до технической документации.
- Специального назначения: TeX (научная вёрстка), MathML (математические формулы), SVG (векторная графика), KML (геоданные для Google Earth), DocBook (техническая документация).
По формату хранения
- Текстовые (человекочитаемые): HTML, XML, Markdown, YAML, JSON (хотя JSON часто относят к форматам обмена данными, он также является языком разметки).
- Бинарные (машиночитаемые): PDF, DOCX, ODF (форматы офисных пакетов) — содержат разметку, закодированную в двоичном виде, что затрудняет редактирование вручную.
Основные языки разметки и их особенности
HTML
HTML (HyperText Markup Language) — стандартный язык разметки документов во Всемирной паутине. Версия HTML5 (2014) является текущей. Основные элементы:
- Теги:
<html>,<head>,<body>,<h1>–<h6>,<p>,<a>,<img>,<div>,<span>. - Атрибуты:
class,id,href,src,style. - Семантические теги:
<header>,<nav>,<article>,<section>,<footer>— улучшают структуру и доступность.
HTML не является языком программирования; он описывает структуру веб-страницы. Внешний вид задаётся с помощью CSS (Cascading Style Sheets, каскадные таблицы стилей), а поведение — с помощью JavaScript.
XML
XML (eXtensible Markup Language) — расширяемый язык разметки, предназначенный для хранения и передачи структурированных данных. Ключевые принципы:
- Строгая иерархия: каждый открывающий тег должен иметь закрывающий.
- Чувствительность к регистру.
- Возможность создания собственных тегов (например,
<book>,<author>,<price>). - Используется в форматах RSS, Atom, SOAP, SVG, XHTML, а также в конфигурационных файлах многих приложений.
Markdown
Markdown — облегчённый язык разметки, созданный Джоном Грубером и Аароном Шварцем в 2004 году. Предназначен для написания текста в простом, читаемом виде, который затем легко преобразуется в HTML. Основные элементы:
- Заголовки:
#(уровень 1),##(уровень 2) и т. д. - Выделение:
курсив,жирный. - Списки:
-или*для маркированных,1.для нумерованных. - Ссылки:
[текст](url). - Изображения:
. - Код:
код(в обратных кавычках) или блоки с тройными кавычками.
Markdown широко используется в системах управления версиями (GitHub, GitLab), в вики-движках, блогах, мессенджерах (Telegram, Discord) и при создании документации.
TeX и LaTeX
TeX — система компьютерной вёрстки, разработанная Дональдом Кнутом. LaTeX — набор макросов поверх TeX, созданный Лесли Лэмпортом в 1980-х годах. Особенности:
- Ориентация на научные и технические тексты.
- Автоматическая нумерация разделов, формул, таблиц, рисунков.
- Поддержка сложных математических выражений (через пакет
amsmath). - Разделение содержания и оформления: пользователь пишет логическую структуру (например,
\section{Введение}), а стиль оформления задаётся в преамбуле.
YAML
YAML (YAML Ain’t Markup Language) — язык разметки, ориентированный на данные. Используется для конфигурационных файлов (Ansible, Docker Compose, Kubernetes). Отличия:
- Основан на отступах (пробелах), а не на тегах.
- Поддерживает скаляры (строки, числа), списки и словари.
- Чувствителен к отступам, табуляция не допускается.
Применение языков разметки
Языки разметки применяются практически во всех областях, связанных с обработкой текста и данных:
- Веб-разработка: HTML (структура страниц), XML (обмен данными), Markdown (документация и комментарии).
- Издательское дело и типография: TeX/LaTeX (книги, статьи, диссертации), XML (форматы ePub, DocBook).
- Программирование и DevOps: YAML (конфигурации), JSON (API), XML (файлы проектов, конфигурации).
- Научные исследования: LaTeX (публикации), MathML (формулы), SVG (графика).
- Геоинформационные системы: KML (метки на картах), GML (географические данные).
- Офисные приложения: DOCX, ODT (форматы Microsoft Word и LibreOffice) — внутренне используют XML.
Критика и ограничения
Несмотря на широкое распространение, языки разметки имеют ряд недостатков:
- Избыточность: XML-документы могут быть в несколько раз больше по размеру, чем исходные данные, из-за повторяющихся тегов.
- Сложность синтаксиса: SGML и XML требуют строгого соблюдения правил, что затрудняет ручное редактирование.
- Смешение содержания и оформления: в HTML до версии 4.0 активно использовались теги форматирования (
<font>,<center>), что нарушало принцип разделения структуры и стиля. В HTML5 это решено через семантические теги и CSS. - Отсутствие единого стандарта для облегчённых языков: существует множество диалектов Markdown (CommonMark, GitHub Flavored Markdown, MultiMarkdown), что приводит к несовместимости.
Интересные факты
- Первый в мире веб-сайт, созданный Тимом Бернерсом-Ли в 1991 году, был написан на HTML и содержал всего несколько строк разметки.
- Язык разметки BBCode (Bulletin Board Code) широко использовался на форумах начала 2000-х годов (например, phpBB) и до сих пор применяется в некоторых системах.
- Существует язык разметки Creole (2007), разработанный как универсальный стандарт для вики-движков.
- В 2023 году был опубликован проект HTML6 (черновик), который предполагает дальнейшее расширение семантических возможностей и интеграцию с веб-компонентами.
Источники
- W3C. HTML5 Specification. — 2014.
- ISO 8879:1986. Information processing — Text and office systems — Standard Generalized Markup Language (SGML).
- Knuth D. E. The TeXbook. — Addison-Wesley, 1986.
- Lamport L. LaTeX: A Document Preparation System. — Addison-Wesley, 1994.
- Gruber J. Markdown: Syntax. — 2004.
- YAML Specification 1.2. — 2009.
- Bray T., Paoli J., Sperberg-McQueen C. M. Extensible Markup Language (XML) 1.0. — W3C, 1998.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →