Suponho que o What You See Is What You Get tenha seu lugar, mas como programador com TOC, tenho problemas com o WYSIWYG como uma solução única para todos os casos. Quer seja espaço em branco invisívelou tags de formatação invisíveisDe acordo com minha experiência, o forçar as pessoas a trabalhar com coisas invisíveis que elas não podem controlar diretamente… inevitavelmente sai pela culatra. Muito.
Tenho uma nítida Caça-Fantasmas para esse problema.
Eu preciso ver essas coisas invisíveis, para que eu possa dar-lhes um choque com meu pacote de prótons. Quero dizer, er, controle e, mais importante, compreendê-los. E, mais importante, compreendê-los; talvez até mesmo dominá-los.
Recentemente, tive o grande privilégio de conhecer o Ted Nelson, que me deu uma demonstração pessoal de seu ZigZag e seu projeto perpetuamente em andamento desde 1960, o projeto Xanadu, atualmente conhecido como Espaço Xanadu. Mas uma coisa que ele mencionou ao fazer a demonstração me intrigou particularmente. Sendo Ted Nelson, é claro que ele foi muito além da minha aversão natural à marcação invisível e oculta no conteúdo – ele insistiu que a marcação e o conteúdo deveriam nunca estejam no mesmo documento. Muito mais radical.
Quero discutir o que considero um dos piores erros do mundo atual do software, a marcação incorporada, que é, lamentavelmente, o coração de padrões atuais como SGML e HTML. (Há muitos outros sistemas de marcação incorporados; um interessante é o RTF. Mas vou me concentrar na teologia SGML-HTML por causa de suas reivindicações e fervor).
Não há um único motivo para essa abordagem estar errada; acredito que ela esteja errada em quase todos os aspectos.
Proponho um modelo de três camadas:
- A camada de conteúdo para facilitar a edição, a vinculação de conteúdo e o gerenciamento de transclusão.
- A camada de estrutura, declarável separadamente. Os usuários devem ser capazes de especificar entidades, conexões e lógica de copresença, definidas independentemente da aparência, do tamanho ou do conteúdo, bem como correspondência de sobreposição, links, transclusões e “mangueiras” para conteúdo móvel.
- A efeitos especiais e camada de primer deve permitir a declaração de inúmeras fontes, blocos de formato, fanfarras e whizbangs, e sua atribuição ao que está nas camadas de conteúdo e estrutura.
É uma alternativa interessante, embora extremamente complexa e trabalhosa. Não tenho certeza de como o senhor manteria a camada de estrutura sincronizada com a camada de conteúdo se alguém estiver editando o conteúdo. Nem sei se há algum exemplo real dessa abordagem de três camadas em ação. (E, como sempre, fique à vontade para me corrigir nos comentários caso eu tenha deixado passar alguma coisa!)
Em vez disso, o que temos são métodos tradicionais e existentes de mistura de conteúdo e marcação como HTML ou TeX.
Ao editar, há duas interfaces possíveis:
- WYSIWYG em que a camada de marcação é magicamente oculta, de modo que, pelo menos em teoria, o usuário nunca precisa saber sobre marcação e pode se concentrar totalmente no conteúdo. É uma ilusão, mas é bastante simples quando está funcionando. A desvantagem é que a abstração – essa ideia de que a marcação é realmente “invisível” – raramente é alcançada na prática e, muitas vezes, não funciona para nada, exceto para os documentos mais básicos. Mas ela pode ser boa o suficiente em muitas circunstâncias.
- Duas janelas em que a marcação é totalmente visível em uma janela e mostrada como uma visualização renderizada ao vivo na outra janela, atualizada à medida que o usuário digita, lado a lado ou de cima para baixo. Os usuários têm uma caixa de areia dinâmica na qual podem experimentar e aprender como a marcação e o conteúdo interagem no mundo real, em vez de ter tudo varrido para debaixo do tapete. Em última análise, isso resulta em menos confusão para usuários intermediários e avançados. É por isso que gosto particularmente dessa abordagem, e ela é o que usamos no Stack Exchange. A desvantagem é que ele é um pouco mais complexo, dependendo se o senhor usa ou não o marcação humanae certamente requer um pouco mais de espaço na tela e raciocínio para processar o que está acontecendo.
O que eu não sabia é que existe realmente um terceiro opção de edição: manter a marcação visível e alternar rapidamente entre a marcação e a visualização renderizada com um único toque de tecla. É isso que o Projeto Gliimpse revela:
Por favor, assista ao vídeo. A transição quase instantânea e suave que o Gliimpse demonstra entre a marcação e a visualização tem que ser visto para ser apreciado. O efeito é um pouco parecido com Expose no Mac ou Switcher no PC. Não tenho certeza do que penso sobre isso, principalmente porque não conheço nenhum IDE existente que tente fazer algo remotamente parecido com isso.
Mas gostaria muito de experimentar. Como desenvolvedor de software, é incrivelmente frustrante para mim que tenhamos melhorias geracionais em jogos como Skyrim e Battlefield 3 que renderizam mundos dinâmicos e extremamente detalhados a 60 quadros por segundo, mas nossos editores de código-fonte estão avançando apenas em pequenos passos incrementais, ano após ano.