O Markdown está te impedindo de avançar
(newsletter.bphogan.com)- Markdown, amplamente usado para escrever documentação de desenvolvimento, é popular graças à sua simplicidade e acessibilidade, mas tem limitações em documentação técnica de grande escala por causa da falta de expressividade estrutural
- O Markdown funciona como um sistema de tipos implícito, o que impossibilita consistência ou validação por esquema, e também há problemas de compatibilidade entre diferentes variações (flavors) de Markdown
- Sintaxes estendidas como MDX aumentam a expressividade, mas acabam elevando a complexidade por causa da falta de portabilidade e padronização entre sistemas
- reStructuredText, AsciiDoc, DocBook e DITA oferecem estrutura explícita e marcação semântica (semantic markup), fortalecendo a reutilização e a interpretabilidade por máquinas
- Para documentos pequenos, Markdown é suficiente, mas para gestão de documentação em grande escala e multicanal, é necessário migrar para formatos estruturados
Limites estruturais do Markdown
- O Markdown, com sua sintaxe simples e fácil de ler por humanos, permite criar documentos visualmente agradáveis no GitHub ou em sites estáticos
- No entanto, ele não consegue descrever o significado do conteúdo, então faltam informações estruturais compreensíveis por máquinas
- Motores de busca, LLMs, IDEs e agentes de IA aproveitam a estrutura semântica dos documentos, mas o Markdown gera apenas um conjunto limitado de tags HTML
- O Markdown também causa problemas de inconsistência ao reutilizar ou integrar conteúdo por causa das diferenças de sintaxe entre plataformas
- Como resultado, o Markdown é um formato de mínimo denominador comum, inadequado para gerenciar documentação complexa
O problema dos tipos implícitos no Markdown
- O Markdown é um formato sem esquema explícito nem definição de tipos, então o mesmo título ou lista pode ter significados diferentes dependendo do contexto
- Existem várias variações (flavors) de Markdown, o que gera diferenças de renderização entre ferramentas
- Ex.: algumas ferramentas suportam notas de rodapé, enquanto outras as ignoram
- MDX amplia a expressividade ao inserir componentes React, mas tem baixa portabilidade por causa de problemas de compatibilidade entre sistemas
- Essas extensões tentam compensar as limitações do Markdown, mas são apenas soluções paliativas não padronizadas
A importância da marcação semântica
- Marcação semântica descreve o significado, e não a forma, do conteúdo
- Ex.: “etapa (step)” e “item de lista” podem parecer iguais visualmente, mas têm significados diferentes
- O HTML5 introduziu tags baseadas em significado, como
<section>,<article>e<aside>, reforçando a expressão estrutural - Principais vantagens da marcação semântica
- Transformação e reutilização: o mesmo conteúdo pode ser convertido em HTML, PDF, ePub e outros formatos
- Interpretabilidade por máquinas: LLMs ou agentes conseguem reconhecer a estrutura com clareza e fornecer respostas mais precisas
- Como o Markdown não oferece essas informações estruturais, ocorre perda de informação em pós-processamento ou conversão
Comparação de formatos alternativos
- reStructuredText
- Formato usado no Sphinx do ecossistema Python, que expressa significado estrutural por meio de diretivas (directive) e papéis (role)
- Suporta elementos estruturais explícitos, como blocos de código, notas (
note) e referências cruzadas (:ref:) - É adequado para documentação técnica de grande escala e suporta geração em HTML e PDF
- AsciiDoc
- Um formato de texto semântico que oferece atributos (attribute), conteúdo condicional e recursos de include
- Suporta expressões especializadas para documentação técnica, como avisos
NOTEeWARNING, elementos de UI e notação de atalhos de teclado - Pode ser convertido em HTML, PDF, ePub, DocBook e outros formatos via AsciiDoctor
- DocBook (XML)
- Um modelo baseado em XML para publicação técnica, com um sistema de tags semânticas como
<command>,<note>e<xref> - Inclui tags necessárias para documentos especializados, como glossários, índices, elementos de UI e nomes de funções
- Pode ser convertido em vários formatos de saída por meio de stylesheets XSLT
- É vantajoso para validação estrutural de documentação em grande escala e geração de índices
- Um modelo baseado em XML para publicação técnica, com um sistema de tags semânticas como
- DITA (Darwin Information Typing Architecture)
- Uma estrutura modular baseada em XML usada como padrão corporativo de documentação técnica
- Como arquitetura XML orientada a tópicos, define claramente estruturas procedurais como
<task>e<step> - É usada como padrão corporativo de gestão documental para reutilização de conteúdo (
conref), filtragem e publicação multicanal - Suporta automação de renderização e conversão por meio do DITA Open Toolkit
Por que XML é necessário, mesmo parecendo incômodo
- O Markdown é leve, mas é uma solução temporária sem estrutura, padrão e consistência
- Se você está adicionando complexidade ao Markdown com MDX, plugins e scripts customizados,
adotar de vez um formato estruturado é mais estável no longo prazo
Então, o que fazer?
- Para documentos pequenos, como README ou materiais pontuais, Markdown é suficiente, mas para documentação em grande escala, reutilizável e multicanal, reStructuredText, AsciiDoc, DocBook e DITA são mais adequados
- Se você precisa de documentos de planejamento, documentação para desenvolvedores, reutilização e gestão em grande escala, vale considerar na ordem reST/AsciiDoc → DocBook/DITA
- O ideal é usar como fonte o formato com a estrutura mais rica possível e, quando necessário, convertê-lo para Markdown
- O Markdown é útil como formato de saída, mas, se for usado como fonte da verdade (source of truth), a expansão estrutural se torna difícil
- O melhor é manter a fonte original em um formato rico em estrutura semântica e usar Markdown como saída downstream
7 comentários
rsté um formato baseado em XML? Nunca ouvi isso antes. O resumo está estranho.Pelo resumo, parece que o título foi escrito assim ao falar dos critérios de escolha, agrupando-o com outros formatos XML. Corrigi para ficar de acordo com o original.
Se precisar no Markdown, dá para usar HTML e anexar
mermaid, então mais ou menos funciona... acima disso, parece que vira trabalho de documentação pela documentação.As pessoas vêm antes da IA. Não roubem o que eu escrevi. Ficam falando de semântica, que bobagem.
Se você acabar usando uma sintaxe especial, surge outra curva de aprendizado, além de precisar de ferramentas de parsing, visualizadores, editores etc. com suporte fluido... nesse nível, talvez seja melhor simplesmente usar Google Docs ou Notion, que conseguem se integrar bem com a maioria dos serviços de IA.
Opiniões do Hacker News
O ponto central do Markdown é o amplo suporte que ele tem, algo que outras linguagens não têm A maioria das alternativas exige ferramentas próprias e não pode ser usada em ambientes onde Markdown já é suportado Até o Google Docs aceita colar Markdown como um recurso oculto Mesmo sem ser perfeito, a vantagem é “poder usar em qualquer lugar” Assim como o HTML era mais simples que o SGML, mas virou padrão porque os navegadores o suportavam, o Markdown também pode evoluir com o tempo A ambiguidade da padronização, a falta de recursos e os problemas de compatibilidade lembram a época do HTML4 Em vez de substituí-lo por completo, acho que o caminho mais realista é uma evolução gradual
É possível incluir tags HTML em qualquer lugar no Markdown Isso está explícito na documentação oficial Portanto, a limitação mencionada pelo autor não existe na prática
ouo tempo todo, não há razão para usar Markdown Se no fim a resposta for “é só usar HTML”, então o próprio motivo de existir do Markdown desapareceNa universidade, quando cursava física, escrevia artigos em LaTeX Em química usavam Word, então o padrão varia conforme a área A versão do TeX expressa o grau de completude desejado aproximando-se do valor de π A versão atual é 3.141592653, mantida de forma estável há 47 anos Veja a wiki do TeX e a explicação sobre a versão em Pi Para ferramentas de CLI, o formato de manpage também é útil
O Markdown é como um produto mínimo viável (MVP) É fácil de aprender e continua legível mesmo sem renderização Para gerar PDF, migrei do AsciiDoc para o Typst, que resolveu problemas de acessibilidade Mas nenhuma linguagem de marcação melhora por si só a qualidade do texto Trocar de caneta não faz a escrita ficar melhor
O tom deste texto é o de que “o Markdown atrapalha o avanço dos LLMs” Mas a premissa de que seria possível obter riqueza semântica automaticamente não é realista Dentro das equipes, ninguém tem tempo para fazer esse tipo de trabalho, e Markdown já basta Como nas discussões sobre a web semântica, no fim a questão é quem vai manter os dados
Eu escrevo meu blog com Org-mode + Emacs Gosto especialmente da função que permite ligar blocos de código e executá-los dentro do documento Já usei plataformas como Blorgit e lazyblorg, mas a configuração era trabalhosa, então exporto diretamente para HTML e envio ao servidor com
rsyncDepois adiciono um índice com um script Ruby e publico É muito mais expressivo e natural que MarkdownConcordo em parte com a ideia de que “o Markdown tem pouca estrutura”, mas acho uma pena essa abordagem binária Antes de escolher o formato, seria preciso entender primeiro que tipo de estrutura era necessária Por isso, o texto me incomoda um pouco e ao mesmo tempo é difícil concordar com ele
Apresentar o DITA como alternativa ao Markdown é uma comparação completamente sem sentido DITA é um sistema XML corporativo de grande escala, com um objetivo totalmente diferente do Markdown Só faz sentido em ambientes com mais de 5 mil pessoas ou linhas de produto multilíngues Em qualquer contexto onde se use Markdown, DITA não será adequado Os dois acabam sendo perda de tempo
Uso Markdown há mais de 10 anos e ele ainda funciona muito bem O argumento do texto também não está totalmente errado, mas não é um problema que usuários de Markdown sintam na prática Se precisar, é só usar outra coisa Ainda assim, o título era bom o bastante para eu gastar uns 5 minutos lendo
É estranho mencionar o MyST como uma forma de Markdown e depois citar o reStructuredText (rST) como exemplo Afinal, o objetivo do MyST é justamente ser um substituto do rST A sintaxe é parecida com Markdown, mas ele também suporta significado estrutural, directives, roles etc. Há uma discussão relacionada na issue do Sphinx
Vejo muitos textos desse tipo ultimamente.
Arquivo de texto, Markdown, formatos mais estruturados
Conforme isso vai mudando, não existe uma resposta certa; basta usar o formato adequado no momento adequado.
E, como sempre, tentar fazer tudo em um único arquivo acaba gerando problemas, então classificar e sistematizar de acordo com o tema é algo inevitável.