O HTML é uma linguagem de marcação humana?

Uma das coisas em que estamos pensando ao criar o stackoverflow.com é como permitir que os usuários estilizem as perguntas e respostas que estão inserindo no site. Nada está decidido até o momento, mas definitivamente não vamos oferecerá aos usuários um daqueles controles de layout de navegador HTML GUI amigáveis, mas irritantes.

Um exemplo de editor de GUI HTML

Eu tenho um guia de design rígido: este é um site para programadores, portanto, eles devem se sentir confortáveis com a marcação básica. Nada dessas bobagens de barra de ferramentas GUI para nós, obrigado. Se o senhor sabe usar código, um pouco de marcação de apresentação é brincadeira de criança.

Vamos apoiar algum tipo de linguagem de marcação para estilizar as perguntas e respostas. Mas o que o linguagem de marcação?

Mencionei no podcast #4 que consideramos a Wikipédia uma influência determinante. Vamos ver como a Wikipédia lida com a sintaxe de marcação. Isso é o que o página de edição do verbete de Joel Spolsky na Wikipédia se parece com:

Página de edição da Wikipédia para o verbete Joel Spolsky

É uma linguagem de marcação eficaz, mas acho que o senhor concordará que ela é mais intimidadora do que humano. Wikipedia’s Como editar uma página e o respectivo Folha de dicas de sintaxe da Wikipédia ajuda. Alguns. Eu diria que escrever uma entrada na Wikipédia é um passo além da mera marcação de apresentação; é quase como codificação, à medida que o senhor insere o artigo na gestalt da Wikipédia. (A propósito, se o senhor nunca editou um artigo da Wikipédia, deveria fazê-lo. Considero isso um rito de passagem, uma espécie de medalha de mérito da Internet para quem leva a sério sua presença on-line). Considero isso um rito de passagem, uma espécie de medalha de mérito da Internet para qualquer pessoa que leve a sério sua presença on-line).

Vamos considerar um exemplo mais simples. O que estamos procurando é algum tipo de meio termo, um formato de texto humano. Vamos começar com um pouco de HTML básico.

De acordo com o Wikipedia:

A linguagem de marcação leve é uma linguagem de marcação com uma sintaxe simples, projetada para ser fácil de ser digitada por um ser humano com um editor de texto simples e fácil de ser lida em sua forma bruta.

Alguns exemplos são:

  • Markdown
  • Têxtil
  • BBCode
  • Wikipedia

A marcação também deve se estender ao código:

10 PRINT "I ROCK AT BASIC!"
20 GOTO 10

Veja como isso se parece expresso em uma variedade de linguagens de marcação leves. Lembre-se de que o cada um deles produzirá HTML equivalente ao acima.

Têxtil Marcação
h1. Lightweight Markup Languages
According to *Wikipedia*:
bq. A "lightweight markup language":http://is.gd/gns
is a markup language with a simple syntax, designed
to be easy for a human to enter with a simple text
editor, and easy to read in its raw form.
Some examples are:
* Markdown
* Textile
* BBCode
* Wikipedia
Markup should also extend to _code_:
pre. 10 PRINT "I ROCK AT BASIC!"
20 GOTO 10
Lightweight Markup Languages
============================
According to **Wikipedia**:
> A [lightweight markup language](http://is.gd/gns)
is a markup language with a simple syntax, designed
to be easy for a human to enter with a simple text
editor, and easy to read in its raw form.
Some examples are:
* Markdown
* Textile
* BBCode
* Wikipedia
Markup should also extend to _code_:
10 PRINT "I ROCK AT BASIC!"
20 GOTO 10
Wikipédia BBCode
==Lightweight Markup Languages==
According to '''Wikipedia''':
:A [[lightweight markup language]]
is a markup language with a simple syntax, designed
to be easy for a human to enter with a simple text
editor, and easy to read in its raw form.
Some examples are:
* Markdown
* Textile
* BBCode
* Wikipedia
Markup should also extend to ''code'':
<source lang=qbasic>
10 PRINT "I ROCK AT BASIC!"
20 GOTO 10
</source>
[size=150]Lightweight Markup Languages[/size]
According to [b]Wikipedia[/b]:
[quote]
A [url=http://is.gd/gns]lightweight markup language[/url]
is a markup language with a simple syntax, designed
to be easy for a human to enter with a simple text
editor, and easy to read in its raw form.
[/quote]
Some examples are:
[list]
[*]Markdown
[*]Textile
[*]BBCode
[*]Wikipedia
[/list]
Markup should also extend to [i]code[/i]:
[code]
10 PRINT "I ROCK AT BASIC!"
20 GOTO 10
[/code]

Nenhuma dessas linguagens de marcação leves é particularmente difícil de entender – e são agradáveis aos olhos, como prometido. Mas ainda assim tive que procurar a sintaxe de referência de cada uma delas e mapeá-la para o HTML que já conheço de cor. Também as achei perturbadoramente próximas da “mágica” para algumas das regras de formatação, a ponto de desejar poder escrever HTML literal e obter exatamente o que quero, sem precisar adivinhar como o analisador interpretará meu texto simples falso.

O que leva diretamente a esta pergunta: Por que o senhor não fica com o que já sabe e usa HTML? Esta página wiki do c2 intitulada Por que o Wiki não faz HTML? defende que, pelo menos para o conteúdo Wiki, é melhor deixar o HTML de lado:

  1. Em um Wiki, a ênfase está no conteúdo, não na apresentação. Regras simples de marcação Wiki permitem que as pessoas se concentrem em expressar suas ideias.
  2. Por que não usar uma linguagem de marcação específica de domínio projetada para fazer “a coisa mais simples que poderia funcionar”?
  3. Algumas tags HTML são difíceis de trabalhar e podem interromper o fluxo de seus pensamentos. A tag table, por exemplo.
  4. O usuário comum realmente precisa de todo o poder de layout de HTML e CSS?
  5. Permitir a gama completa de tags HTML pode levar a grandes vulnerabilidades de segurança.
  6. Muitas pessoas não conhecem HTML. Uma linguagem de marcação Wiki simples é mais fácil de aprender.

Não sei se concordo com tudo isso, mas pode fazer sentido no contexto de um Wiki completo. Vale a pena considerar.

Depois de toda essa pesquisa sobre linguagens de marcação humanas, para meu desgosto, cheguei a um círculo completo. Agora não acho mais que as linguagens de marcação humanas façam sentido para a maioria dos usos. Concordo com o senhor do site fileformat.info. HTML é geralmente a melhor opção:

  • Simplicidade

    Se a origem e o destino são a Web, por que não usar a linguagem de marcação nativa da Web?

  • Legibilidade

    O HTML é um pouco menos legível do que as linguagens de marcação leves, é verdade. Mas o HTML básico não é difícil de ler, principalmente se ocultarmos as tags de parágrafo repetitivas.

  • Segurança

    Com um pouco de cuidado na codificação, é possível colocar na lista branca tags HTML específicas que o senhor permitirá. Dessa forma, o senhor evita se expor a tags arriscadas/vulneráveis.

  • Conversão

    Não está claro que o qualquer linguagem de marcação leve existente tem massa crítica, com a possível exceção do sabor da Wikipédia. Por outro lado, os analisadores de texto e as ferramentas sempre entenderão HTML.

  • O que as pessoas sabem

    Muito mais pessoas conhecem HTML do que qualquer outro tipo de texto humano. Se o senhor é um programador, pode muito bem melhor conhecer HTML. Para as poucas funções do tipo wiki de que podemos precisar, é possível adicionar alguns atributos opcionais às tags HTML. E isso não seria mais fácil de aprender do que uma derivação estranha e pseudo-ASCII do HTML?

Acho que adotaremos algumas das funções mais inteligentes do Textile e do Markdown, na medida em que elas eliminam o trabalho mundano de marcação HTML. Mas, em geral, prefiro muito mais confiar em um subconjunto do velho e confiável HTML do que gastar células cerebrais tentando lembrar-se do modo falso-HTML para deixar algo em negrito ou criar um hiperlink. O HTML não é perfeito, mas é uma linguagem de marcação humana eminentemente razoável.