HTML: расшифровка и почему это язык разметки, а не программирования

HTML: расшифровка и почему это язык разметки, а не программирования Полезное

HTML расшифровывается как HyperText Markup Language — «язык гипертекстовой разметки». Это язык, но не язык программирования: на нем не пишут вычисления и логику, им описывают структуру и смысл содержимого страницы — где заголовок, где абзац, где ссылка, картинка или форма.

Ниже — что означает каждое слово в расшифровке, по каким признакам HTML отличают от языков программирования, как он делит работу с CSS и JavaScript, какие у него были версии и почему сегодня у стандарта нет номера. Примеры проверены 30.09.2026 разбором в jsdom 30.1.1 на Node.js 24.

Расшифровка HTML по словам

Слово Перевод Что означает на практике
HyperText гипертекст Текст со ссылками на другие документы. Элемент <a> связывает страницы между собой, из этих связей и состоит веб
Markup разметка Пометки внутри текста, которые сообщают, чем является фрагмент: заголовком, абзацем, списком, таблицей
Language язык Формальный язык: фиксированный набор элементов и правила их записи и вложения, описанные в стандарте

Три термина, которые часто называют одним словом «тег»:

  • Тег — запись в угловых скобках: открывающий <p> и закрывающий </p>.
  • Элемент — то, что тег создает в документе: пара тегов вместе с содержимым. Есть элементы без содержимого и без закрывающего тега, например <img> и <br>.
  • Атрибут — свойство элемента в открывающем теге в виде имя="значение": href у ссылки, src и alt у картинки.

Как выглядит HTML-документ

Минимальная страница целиком. Сохраните текст в файл index.html и откройте его в браузере:

<!DOCTYPE html>
<html lang="ru">
<head>
  <meta charset="utf-8">
  <title>Моя первая страница</title>
</head>
<body>
  <h1>Привет, HTML</h1>
  <p>Это абзац со <a href="about.html">ссылкой на другую страницу</a>.</p>
  <img src="cat.jpg" alt="Рыжий кот на подоконнике" width="320" height="240">
</body>
</html>

На вкладке браузера появится название «Моя первая страница», на самой странице — крупный заголовок «Привет, HTML» и абзац со ссылкой. Если файла cat.jpg рядом нет, вместо картинки браузер покажет текст из alt.

В этом коде нет ни одной команды. Документ ничего не «делает» по шагам: он сообщает браузеру, из каких частей состоит страница. В <head> лежат служебные сведения (кодировка, название), в <body> — то, что видит человек. Подробный разбор тегов и структуры документа — в статье Введение в основы HTML для новичков.

Файлы с разметкой обычно имеют расширение .html. Вариант .htm остался со времен, когда расширения файлов ограничивались тремя символами, браузеры обрабатывают оба одинаково.

HTML — это язык программирования или нет

Нет. HTML относится к языкам разметки, как XML или Markdown. Путаница возникает из-за слова «язык» и из-за того, что HTML пишут в том же редакторе кода, что и программы.

Язык программирования описывает вычисление: в нем есть переменные, выражения, условия, повторения и функции. В HTML ничего из этого нет. Он описывает документ, а не порядок действий.

Одной декларативности для такого вывода мало. SQL тоже декларативный — в запросе сказано, что получить, а не как, — но в нем есть выражения, условия и вычисления над данными. У HTML таких средств нет вообще.

Проверка на примере: кто считает 2 + 2

<!DOCTYPE html>
<html lang="ru">
<head>
  <meta charset="utf-8">
  <title>Считает не HTML</title>
</head>
<body>
  <p id="markup">2 + 2</p>
  <p id="script"></p>
  <script>
    document.getElementById("script").textContent = 2 + 2;
  </script>
</body>
</html>

На странице будут две строки:

2 + 2
4

Первый абзац браузер вывел как есть: для HTML 2 + 2 — это текст из пяти символов, а не выражение. Число 4 посчитал JavaScript внутри <script> и записал во второй абзац. HTML здесь только подключил программу и предоставил место для результата.

Чем HTML отличается от CSS и JavaScript

HTML CSS JavaScript
Тип языка язык разметки язык стилей язык программирования
Что описывает структуру и смысл содержимого внешний вид: цвета, шрифты, расположение поведение: вычисления, реакцию на действия, работу с данными
Переменные, условия, циклы, функции нет ограниченно: пользовательские свойства, calc(), условия по размеру экрана есть
Что будет без него страницы нет страница без оформления, но читается страница статична, но читается

Граница между ними не всегда проходит по бытовому «HTML ничего не умеет». Часть поведения встроена в браузер и включается разметкой: ссылка открывает другой документ, форма отправляет данные, <details> раскрывает скрытый блок, атрибут required не дает отправить пустое поле. Это все еще не программирование: автор страницы объявляет, какой элемент нужен, а готовую логику исполняет браузер.

То же с перетаскиванием элементов мышью. Атрибут draggable="true" лишь помечает элемент как перетаскиваемый, а что произойдет при переносе, описывают обработчики на JavaScript.

Как браузер читает HTML и почему он не выдает ошибок

Браузер получает HTML-документ с сервера по HTTP или HTTPS либо открывает с диска, разбирает текст и строит из него дерево объектов — DOM. По этому дереву рисуется страница, с ним же работают CSS и JavaScript.

Еще одно отличие от языков программирования: разбор HTML не останавливается на ошибке. Программа с синтаксической ошибкой не запустится, а страница с небрежной разметкой откроется — стандарт описывает, как разбирать любой входной текст. Небрежный документ:

<!DOCTYPE html>
<title>Небрежная разметка</title>
<p>Первый абзац
<p>Второй <b>жирный <i>и курсив</b> текст</i>

Дерево, которое получилось после разбора, если записать его обратно в HTML:

<html><head><title>Небрежная разметка</title>
</head><body><p>Первый абзац
</p><p>Второй <b>жирный <i>и курсив</i></b><i> текст</i>
</p></body></html>

Здесь произошло три разных события, и ошибка среди них одна:

  • Элементы <html>, <head> и <body> появились сами. Их теги стандарт разрешает опускать, это не ошибка.
  • Абзацы закрылись сами. Закрывающий </p> перед следующим <p> тоже разрешено не писать.
  • Теги <b> и <i> закрыты в неправильном порядке — вот это ошибка. Сообщения о ней нет: разборщик по правилам стандарта закрыл <i> внутри <b> и открыл его заново для слова «текст».

Исправленная последняя строка, с правильной вложенностью:

<p>Второй <b>жирный <i>и курсив</i></b><i> текст</i></p>

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

Версии HTML и живой стандарт

HTML придумал Тим Бернерс-Ли в ЦЕРН в начале 1990-х для обмена научными документами. Дальше язык развивался версиями:

Год Версия Что важно
1991 первое описание «HTML Tags» 18 элементов, главное — ссылки
1995 HTML 2.0 первая формальная спецификация (RFC 1866), в ней уже есть формы
1997 HTML 3.2 (январь), затем HTML 4.0 (декабрь) стандарт ведет W3C; таблицы в 3.2, фреймы, скрипты и связка с CSS в 4.0
1999 HTML 4.01 последняя версия «четверки», основа сайтов 2000-х
2000 XHTML 1.0 тот же набор элементов со строгим синтаксисом XML
2014 HTML5 семантические элементы, <video>, <audio>, <canvas>, новые поля форм
2016-2017 HTML 5.1 и 5.2 последние нумерованные редакции W3C
с 2019 HTML Living Standard единственный стандарт HTML, его ведет WHATWG; номеров версий нет

В 2004 году разработчики браузеров создали рабочую группу WHATWG и стали развивать HTML отдельно от W3C. Несколько лет существовали две спецификации: нумерованные версии W3C и постоянно обновляемый документ WHATWG. В мае 2019 года организации договорились, что стандарт один — HTML Living Standard, «живой стандарт».

Живой стандарт не выпускается версиями: в него постоянно вносят правки, а новые возможности доходят до пользователей по мере поддержки браузерами. Поэтому на вопрос «какая сейчас версия HTML» точный ответ — никакая по номеру. Название «HTML5» осталось в обиходе как обозначение современного HTML.

Отсюда и смысл первой строки документа. <!DOCTYPE html> не сообщает номер версии: она включает в браузере стандартный режим отображения. Без нее браузер переходит в режим совместимости со старыми сайтами, и размеры и отступы могут считаться по-другому.

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

Выводы

  • HTML — это HyperText Markup Language, язык гипертекстовой разметки: гипертекст — документы со ссылками, разметка — пометки о роли каждого фрагмента.
  • HTML не является языком программирования: в нем нет переменных, условий, циклов и вычислений. Это язык разметки, он описывает документ, а не действия.
  • Работа разделена на три языка: HTML отвечает за структуру, CSS — за внешний вид, JavaScript — за поведение. Программирование в браузере — это JavaScript.
  • Разбор HTML не падает на ошибках: браузер строит дерево по правилам стандарта, но при неправильной вложенности оно может отличаться от задуманного.
  • Нумерованные версии закончились на HTML 5.2. С 2019 года действует единый HTML Living Standard, а <!DOCTYPE html> включает стандартный режим и не указывает версию.

Где применяется / связь с практикой

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

Освойте тему на практике

Системно пройти путь от первого документа до адаптивной верстки можно на курсе HTML/CSS. Познакомиться с форматом занятий и преподавателями удобно на открытых уроках Otus.

FAQ

Можно ли указать HTML в резюме как язык программирования?
Лучше перечислить его в навыках или технологиях: «HTML, CSS, JavaScript». В графе «языки программирования» HTML выдает незнание терминологии, а сам навык верстки при этом ценен.

CSS — это язык программирования?
Тоже нет, это язык стилей. В нем есть пользовательские свойства и вычисления вроде calc(), но задача CSS — описать оформление, а не алгоритм.

HTML и XML — это одно и то же?
Нет. Оба — языки разметки, но у HTML набор элементов фиксирован и предназначен для веб-страниц, а в XML теги придумывает автор формата, и разбор останавливается на первой ошибке синтаксиса.

Нужно ли учить HTML, если сайты собирают в конструкторах и с помощью ИИ?
Нужно хотя бы уметь читать разметку: конструктор и генератор выдают тот же HTML, и разобраться, почему блок отображается не так, без понимания структуры документа не получится.

OTUS Журнал
Скидка 5% 12-19 октября на курсы (popup)
Бесплатные открытые уроки (поп-ап)