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

YAML

Что такое YAML?

YAML предложил Clark Evans в 2001 году. Ingy döt Net и Oren Ben-Kiki тоже среди первых авторов. Имя значит YAML Ain't Markup Language. Сначала это считалось Yet Another Markup Language, потом название изменили, чтобы сказать, что это не язык разметки. Ключ и значение разделяет двоеточие. Список начинается с тире. Строки одного блока отступают одним числом пробелов. Таб вместо пробела не используют. Docker Compose, GitHub Actions и многие настройки сервера читают этот файл. Сам файл ничего не запускает. Работает программа, которая его читает.

Для чего нужен YAML?

YAML нужен для настройки, которую человек может прочитать. Список, имя и значение лежат в одном файле.

  • Записать порт и имя сервера
  • Хранить список работы из нескольких шагов
  • Записать настройку служб Docker
  • Менять один ключ в нескольких средах

Что можно делать с YAML?

В YAML пишут ключ, список и вложенный блок. Он не считает и страницу не рисует. Программа должна читать файл по своему правилу. Неверный отступ втягивает другой блок внутрь, и программа видит другую настройку. Пароль этим файлом в репозиторий не кладут.

Сложно ли освоить YAML?

Написать две строки легко. Трудность в числе пробелов. Когда одна строка отступает меньше или больше, блок ломается. Если смешать таб и пробел, читающая программа останавливается. Одно и то же слово иногда считается текстом, иногда правдой или ложью, иногда числом. Если оставить это случайно, настройка меняется. В JSON скобка показывает место, которое не закрылось. В YAML ошибка тише.

Плюсы и ограничения

Плюс: файл читается коротко, можно писать комментарий, список выглядит тише JSON. Ограничение: ошибка отступа даёт другой смысл. YAML — не JSON и не программа.

Основные понятия

Ключ — имя. Значение — то, что написано этому имени. Отступ говорит, внутри какого блока это лежит.

  • Двоеточие отделяет ключ от значения
  • Тире — пункт списка
  • Пробел считается, таб нет
  • Сам файл программу не запускает

Короткий пример

Это пишет имя сервера и его порт. Программу не запускает.

name: nibras
port: 8080

Частые вопросы

  • YAML и JSON — одно и то же? Нет. Оба могут хранить настройку. JSON использует скобки. YAML использует отступ, и можно писать комментарий.
  • YAML — язык программирования? Нет. Работу делает программа, которая читает файл. Сам YAML ничего не запускает.
  • Отступ может быть табом? Нет. Отступ пишут пробелами. Таб может остановить читателя.