Представьте себе следующий фрагмент HTML:
<p>Hello! <strong>This text is strong (bold).</strong> <em>This is
emphasized (italic).</em> And <a href="https://example.com">here is
a link</a>.</p>
Если вы создали разумное представление расширенного текста в Protobuf, а затем записали это в текстовом формате Protobuf, это может выглядеть примерно так:
{
p: {
children: { text: "Hello! " }
children: {
strong: {
children: { text: "This text is strong (bold)." }
}
}
children: { text: " " }
children: {
em: {
children: { text: "This is emphasized (italic)." }
}
}
children: { text: " And " }
children: {
a: {
href: "https://example.com"
children: { text: "here is a link" }
}
}
children: { text: "." }
}
}
Как видите, представление Protobuf выглядит очень сложным. Основной текст больше не читается, так как структура доминирует.
Теперь, с точки зрения фактической структуры данных, представление Protobuf на самом деле не сильно отличается от того, что будет создавать парсер HTML / XML. В коде с ним может быть не сложнее работать. И двоичная сериализация Protobuf может быть разумной. Вы можете даже сэкономить несколько байтов по сравнению с представлением XML (хотя, вероятно, не так много, так как большая часть пространства будет по-прежнему занята основным текстом).
Если вы писали WYSIWYG-редактор форматированного текста, в котором пользователи никогда не видят базовое представление, то использование Protobuf для представления текста, подобного описанному выше, может иметь большой смысл.
Текст, который вы цитируете (который я написал, кстати!), Пытается сказать, что если у вас есть сценарий использования, когда человек пишет текст с разметкой, но должен сделать это в текстовом редакторе, то Protobuf не очень хорошее решение HTML или XML работают намного лучше для разметки текста.
OTOH, если у вас есть авторские высокоструктурированные данные в простом текстовом формате, то текстовый формат Protobuf может работать довольно хорошо! Например, многие люди пишут конфигурационные файлы таким образом - и многие и многие используют для этого JSON, что очень похоже. Между тем, XML оказывается очень громоздким и болезненным для этих случаев использования.
С учетом всего сказанного, когда люди вводят данные, возможно, имеет смысл использовать действительно оптимизированный для человека формат. Для текста с разметкой используйте Markdown. Для структурированных данных, таких как файлы конфигурации, YAML довольно хорош. Но обратите внимание, что Markdown и YAML не работают хорошо как формат обмена между двумя компьютерами.