Что такое Markdown и зачем он нужен: редакторы, диалекты, отличия от HTML
С помощью этого языка разметки форматируют тексты технические специалисты Microsoft, рядовые пользователи Reddit и даже мы с вами.
Иллюстрация: Оля Ежак для Skillbox Media
Markdown — это облегчённый язык разметки для форматирования текстовых документов. Markdown-файлы без потерь преобразуются в другие форматы (например, HTML и PDF), открываются в любом текстовом редакторе и будут понятны любому человеку даже в виде исходного кода.
В этой статье мы рассказываем, что такое Markdown и чем он отличается от других языков разметки. Если же вы хотите подтянуть знания его синтаксиса, то по нему у нас есть отдельная подробная шпаргалка.
Зачем нужны языки разметки
Каждый раз, открывая интернет-страницу или вордовский документ, вы сталкиваетесь с разметкой. Например, текст этой статьи выровнен по левому краю, набран шрифтом Open Sans, отдельные слова в нём выделены полужирным, а между абзацами интервал больше, чем между строками.
Чтобы ваш браузер понимал, как ему правильно отобразить страницу, используются языки разметки — в данном случае HTML. В таких языках с помощью специальных меток, или тегов, указывается, какие элементы страницы каким образом выводить на экран.
Например, вот так в HTML текст выделяют полужирным:
Вы можете взглянуть на разметку любого сайта сами, открыв исходный код страницы. Для этого нажмите Ctrl + U (для Windows) или Command + Option + U (для macOS). Ещё есть универсальный способ: добавить перед адресом сайта магическое view-source.
Что такое облегчённый язык разметки
Взглянем на исходный код главной страницы Skillbox Media:
Выглядит внушительно: много тегов, нужных для разметки совсем небольших кусков текста, — и так 1800 строк кода. Если вы не владеете HTML, разобраться во всём этом будет сложно. Сам текст в таком виде тоже особо не почитаешь — он теряется на фоне кучи тегов.
Такая разметка подойдёт для страниц со сложной структурой, в которой много разных элементов. Но для текстов с более простым оформлением она будет избыточной — ведь всё можно сделать гораздо проще.
Именно поэтому и придумали облегчённые языки разметки. У них меньше функциональности, зато с ними гораздо проще работать. Логично, что их часто используют там, где оформление текста хоть и важно, но второстепенно.
Например, для редактирования статей в «Википедии» есть собственная вики-разметка. И это гораздо удобнее, чем заставлять всё пишущее и редактирующее сообщество волонтёров учить HTML — ведь разбегутся 🙂 Во многих мессенджерах и социальных сетях с помощью спецсимволов тоже можно выделить текст жирным, курсивом, сделать подчёркнутым, зачёркнутым, оформить как спойлер и так далее.
А вот документацию к программам и readme-файлы (в том числе на GitHub) часто пишут на языке Markdown. Но это, конечно, не единственное его применение.
Как и зачем придумали Markdown
Markdown создали Джон Грубер и Аарон Шварц в 2004 году. Название языка — игра слов. Разметка по-английски называется markup, что можно дословно перевести как «отметка вверх». Markdown, соответственно, — «отметка вниз».
В процессе работы Грубер и Шварц вдохновлялись соглашениями по разметке текста в электронных письмах. Они хотели сделать язык, который было бы удобно читать даже в виде исходного кода. Также Грубер написал программу на Perl, которая преобразовывала Markdown-файлы в HTML.
Markdown — не замена HTML и даже не близок к этому. Его синтаксис очень аскетичен и покрывает лишь небольшое подмножество HTML-тегов. Его идея не в том, чтобы создать синтаксис, облегчающий расстановку HTML-тегов. На мой взгляд, их уже и так легко расставлять. Идея Markdown в том, чтобы было проще читать, писать и редактировать тексты. HTML создан для публикации, а Markdown — для написания. Таким образом, синтаксис Markdown решает только те задачи, которые возникают и могут быть выражены исключительно в форме простого текста.
Джон Грубер,
создатель Markdown
Возьмём разметку одного и того же текста о машине Тьюринга и посмотрим, как она выглядит в HTML и Markdown.
Markdown
HTML
Вот так эта страница будет выглядеть в редакторе Markdown Editor.
Кстати, Markdown можно конвертировать не только в HTML, но и в другие форматы: PDF, TeX, DOCX, ePub, FB2 и так далее.
Где используют Markdown
Markdown особенно востребован у программистов, потому что они часто сталкиваются с технической документацией. На нём оформляют:
- readme-файлы (например, в репозиториях на GitHub);
- страницы на сайте технической документации Microsoft Learn;
- посты и комментарии на популярном сайте вопросов и ответов о программировании Stack Overflow (как и во всех других проектах Stack Exchange).
Пользуются этим языком не только программисты. Его также используют для «гражданских» задач. Вот что он позволяет делать:
- писать посты и комментарии на Reddit;
- создавать личные заметки в специальных приложениях (например, в Obsidian);
- форматировать текст на личном сайте или в блоге;
- быстро оформлять документы и электронные письма, чтобы они прилично выглядели.
При желании с помощью Markdown можно даже отформатировать книгу или сделать презентацию. А ещё некоторые принципы языка используют для работы с текстом в мессенджерах: Telegram, WhatsApp, Viber, Discord.
Как писать на Markdown
Чтобы оформить текст на Markdown, нужно расставить по нему специальные символы, указатели. Затем конвертер или редактор переведёт файл в нужный формат — и у вас в руках окажется готовый симпатичный документ.
Сам синтаксис прост и лаконичен. Вот несколько базовых правил.
Подробнее о том, как пользоваться всеми возможностями этого языка разметки, читайте в нашей шпаргалке по синтаксису Markdown.
Какие виды Markdown бывают: спецификации и диалекты
Первоначальным Markdown, который появился в 2004 году, сейчас почти никто не пользуется. Разные платформы быстро стали создавать собственные реализации Markdown.
В какой-то момент эти реализации стали вступать в противоречие друг с другом. Из-за мелких различий в синтаксисе текст, оформленный согласно одной реализации, мог по-другому отображаться в другой.
Так продолжалось, пока в 2014 году «группа поклонников Markdown» не выпустила спецификацию CommonMark. В группу входили сотрудники разных компаний, использующих Markdown на своих платформах: Pandoc, Meteor, GitHub, Reddit, Stack Overflow, Discourse.
В спецификации они не только более детально прописали синтаксис, но и добавили новые функции. Например, разрешили использовать некоторые HTML-теги внутри Markdown-разметки, добавили новые способы переноса строк, оформления ссылок и блоков кода.
На основе CommonMark создано большинство диалектов языка Markdown — они в целом соответствуют стандарту, но расширяют его и добавляют собственные функции. Такие диалекты есть у Discourse, GitHub, GitLab, Reddit, Qt, Stack Overflow, Swift, Microsoft Learn.
Есть и другие версии Markdown, которые создавались независимо от CommonMark и не наследуются от него. Вот некоторые из них:
- Markdown Extra — написан для PHP, позже адаптирован под Python и Ruby;
- LiaScript — написан для создания интерактивного образовательного контента;
- MultiMarkdown — написан, чтобы Markdown можно было конвертировать в форматы TeX, PDF и ODF;
- R Markdown — написан для создания динамических страниц, кроме R поддерживает языки Python, C++, Julia и SQL.
Что в итоге
- Markdown — облегчённый язык разметки, при помощи которого оформляют текстовые документы. Он конвертируется в HTML и другие форматы, но сделан так, чтобы его было удобно читать даже в виде исходного кода.
- Markdown часто используют программисты для написания технической документации, но сфера его применения гораздо шире.
- У Markdown есть много реализаций и диалектов. Разные платформы расширяют инструментарий языка для своих нужд.