Sítio do Piropo

B. Piropo

< Coluna em Fórum PCs >
Volte
17/01/2005

< O que é lento hoje pode >
<
ser rápido amanhã
>


No que toca ao universo em que vivemos, a julgar pelo que diz a Bíblia, “no começo era o caos”. Já no que toca ao universo em que navegamos, a Internet, é justamente o oposto: no começo tudo era muito simples. Senão, vejamos.

Lá pelos idos de 1980 um (então) jovem inglês recém diplomado em Oxford, tendo conseguido um emprego como consultor de software na CERN (um laboratório de pesquisas avançadas de física das partículas) e encontrando dificuldade em lembrar quem estava envolvido exatamente em que projeto dentro de uma organização tão grande, criou para seu uso particular um programeto que chamou de “Enquire”. O programa funcionava criando conexões entre pessoas e projetos através de certas palavras-chave, conexões que se materializavam através de ligações (“links”, ou atalhos) entre documentos, de tal forma que acionando um desses “links” o usuário era levado para o documento correspondente. Essa técnica, então revolucionária, denominava-se “hipertexto” e tinha sido concebida por dois nomes emblemáticos da história do software, Ted Nelson (< www.ibiblio.org/pioneers/nelson.html >) e Douglas Englebart (< www.ibiblio.org/pioneers/englebart.html >) baseada em um trabalho de 1945 de um dos grandes nomes da ciência da computação, um visionário chamado Vannevar Bush (< www.ibiblio.org/pioneers/bush.html >).

As funções de Bernes-Lee no CERN incluíam não somente um grande envolvimento com a Internet, então uma rede mundial usada principalmente por cientistas e pesquisadores para intercâmbio de documentos (sob a forma de arquivos) e idéias (sob a forma de mensagens de correio eletrônico), como também, na qualidade de consultor de software, o suporte técnico a colegas para resolver problemas de incompatibilidade entre os diversos formatos de documentos trocados pela rede. E achou que seria muito mais interessante para ele e mais útil para os colegas, em vez de tentar compatibilizar aquela verdadeira babel de informações, padronizar um meio de intercambiá-las, ou seja, desenvolver um protocolo de transferência de dados que fosse obedecido por todos. E propôs ao CERN a padronização do intercâmbio de informações através de um protocolo baseado no hipertexto, que ele mesmo desenvolveu e batizou de Hipertext Transfer Protocol, ou HTTP. Além de desenvolver uma forma de identificar universalmente cada repositório desses documentos, um sistema que tomou o nome de Universal Resource Identifier, ou URI e que mais tarde tornou-se conhecido por Uniform Resource Locator, localizador uniforme de recursos, ou URL. Propôs tudo isso ao CERN em 1990 e aguardou a aprovação. E, enquanto aguardava, continuou trabalhando na idéia.

Estabelecida a forma de encontrar e transferir os documentos, tudo o que faltava era um meio de consultá-los. Bernes-Lee então lembrou-se de seu velho Enquire, que usava hipertexto, e concebeu um jeito de localizar e exibir de uma forma padronizada documentos criados obedecendo a certas regras simples. Essas regras eram baseadas em marcações que identificavam trechos de um documento (parágrafos, títulos, listas e coisas assim) e os exibiam no formato adequado, além de usar e abusar de hipertexto. Batizou o conjunto de regras de HTML (HiperText Markup Language, ou linguagem de marcação de hipertexto) e ao programa destinado a exibir estes documentos (que ele mesmo desenvolveu a partir do Enquire), de “WordWideWeb”, ou “teia de âmbito mundial”. E, como nada disso poderia funcionar sem um “servidor”, ou seja, um programa que, ao ser solicitado, fornecesse uma página formatada de acordo com as regras da HTML, Bernes-Lee criou também o primeiro servidor web, o “info.cern.ch”.

A coisa funcionava maravilhosamente para o fim desejado por Bernes-Lee: intercâmbio de informações. Sendo praticamente obra de um homem só, era tudo muito simples. E como a CERN relutava em aceitar os padrões desenvolvidos por Bernes-Lee, ele decidiu fornecê-los à comunidade da Internet (que trocava arquivos via FTP e usava recursos hoje arcaicos como Archie e Veronica). E em 1991 pôs gratuitamente à disposição da comunidade não somente seu programa visualizador de páginas (aquilo que hoje conhecemos por “browser” ou “navegador”) como também o programa servidor, postando mensagens sobre o assunto em diversos grupos de notícias. Não tardou para que internautas em todo o mundo começassem a montar seus próprios servidores e a usar o programa de Bernes-Lee para localizar e exibir documentos, pulando de um para outro simplesmente clicando nos “links” ou atalhos de hipertexto.

Pronto: estava criada a Internet (mais ou menos) como a conhecemos hoje. Como se vê, no começo tudo era muito simples. Talvez simples demais.

O excesso de simplicidade devia-se ao fato de que, praticamente, tudo o que o navegador de Bernes-Lee fazia era exibir documentos de texto, realçar os diversos níveis de títulos de forma mais ou menos destacada, exibir listas de tópicos, numeradas ou não, e distribuir dados em tabelas. Além, é claro, de permitir com um simples clique de mouse saltar de um documento armazenado na Universidade da Califórnia para outro, correlato, abrigado na Sorbonne, em Paris. Enquanto isso era novidade, todos se deslumbraram. Mas, assim que a Internet se abriu para o público em geral, quiseram mais.

E foi então que sobreveio o caos.

Para satisfazer as necessidades – principalmente estéticas – dos novos usuários, a coisa começou a complicar. Atalhos simples, meros textos em azul sublinhados, subitamente tornaram-se feios demais para serem usados. E surgiram os botões. Depois, botões que mudam de cor e formato quando o mouse repousa sobre eles. Ou que se movem. Ou que desaparecem e reaparecem. Figuras foram ficando cada vez mais complexas e os navegadores tiveram que oferecer suporte a elas. Mas figuras complexas demoravam muito para serem transferidas, então foram partidas em pedaços e distribuídas em células de tabelas. Quando figuras estáticas, por mais complexas que fossem, não eram o bastante, começaram a exigir suporte para animações. E vídeo. E música. Isso sem falar nos “comportamentos”, interações com o usuário e linguagens de programação que os suportem, como Java e ActiveX, CGI, PHP, ASP, Flash, além de consultas a bancos de dados. Um negócio cada vez mais complicado.

Então sobreveio a “guerra dos navegadores”, com Netscape brigando com Internet Explorer que brigava com o Opera que brigava com o Mozilla que brigava com Deus e todo o mundo. E cada nova versão de cada navegador queria oferecer suporte a mais funções, ações e formatos que os demais, criando suas próprias extensões e comandos proprietários, que não eram reconhecidos pelos outros. E o que era pior: tudo isso foi gerando versão após versão da velha HTML concebida pelo Tim Bernes-Lee nos anos 80, que misturava conteúdo com forma. O resultado foi algo muito próximo do caos completo.

Mas, a medida em que o caos se anunciava, esforços foram feitos para estabelecer um mínimo de ordem. Sim, a Internet é por definição acéfala mas isso não quer dizer que seja anárquica. Há que se manter um entendimento comum sobre questões cruciais. E como isso não pode ser feito por nenhum governo ou pessoa, só havia uma possibilidade: criar-se um consórcio de instituições interessadas em manter o mínimo de ordem necessário para que a Internet continuasse a evoluir e fazer com que esse consórcio regulasse as questões relativas a padrões. E foi assim que em outubro de 1994 Tim Bernes-Lee – sempre ele – já agora no Instituto de Tecnologia de Massachussets (MIT) criasse, com a colaboração do CERN, o W3C, ou World Wide Web Consortium (< www.w3.org/ >). Um consórcio cujo objetivo “é liderar a rede de âmbito mundial em seu potencial máximo, desenvolvendo protocolos comuns que promovam sua evolução e assegurem sua interoperabilidade”. O consórcio conta com um total de 350 membros (< www.w3.org/Consortium/#membership >) distribuídos por todo o planeta e tornou-se uma instituição profundamente respeitada. E uma de suas funções é pôr ordem no caos.

O W3C não tem poderes para obrigar ninguém a fazer coisa alguma. Tudo o que ele pode fazer – e tem feito de forma bastante eficaz – é identificar problemas e propor soluções. Quem quiser aceitá-las, que as aceite, quem não quiser que as esqueça. Mas tem feito um trabalho tão bom que raramente suas propostas são rejeitadas.

Uma delas foi o uso da XML.

XML é o acrônimo de eXtensible Markup Language, ou linguagem de marcação extensível. Uma linguagem de marcação é um tipo de linguagem de programação que em vez de usar comandos e funções, usa “rótulos” (ou “tags”) para “marcar” (daí o nome, linguagem de marcação) certas estruturas. A HTML, criada por Berners-Lee, é uma linguagem de marcação. Por exemplo: para “marcar” um trecho de texto informando que aquilo é um parágrafo e como tal deve ser tratado (e exibido) pelo programa navegador, a HTML usa os “rótulos” (“tags”) <P> e </P> no início e no final de cada parágrafo. Assim, quando o programa navegador encontra um trecho de texto cercado por esses rótulos, entende que ele é um parágrafo e o exibe de acordo.

Um dos maiores problemas da HTML é que ela mistura forma com estrutura, usando rótulos tanto para marcar partes do conteúdo do documento, identificando-os como parágrafo, cabeçalho e assim por diante, como também para informar ao programa navegador como trechos do documento devem ser exibidos. Por exemplo: os rótulos <STRONG> e </STRONG> informam que tudo o que está entre eles deve ser mostrado em negrito. É claro que isso, em princípio, não faz mal algum. Mas a mistura de forma e conteúdo da HTML vai muito além de distinguir um parágrafo de um trecho em negrito: envolve cores de elementos e de fundo, espaçamento entre elementos, bordas, posições relativas, o diabo. E isso complica o código, obrigando a criar novos rótulos para cada característica nova de formatação que se deseja incluir. E esses novos rótulos têm que ser adicionados às novas versões da linguagem.

Pois bem: a XML resolve esse problema separando drasticamente a estrutura da forma.

Sendo uma linguagem de marcação, a XML também usa rótulos. Mas os rótulos da XML marcam apenas a estrutura, jamais a forma. Por exemplo: em uma listagem de livros, pode-se usar rótulos para informar que tal trecho do texto corresponde ao título, tal trecho ao autor, outro à editora e assim por diante (ou seja, informam o que são aquelas estruturas, não como devem ser exibidas). E os rótulos da XML não fazem parte da linguagem, como os da HTML. Ao contrário, são criados por quem gera as páginas de acordo com suas próprias necessidades. Assim, nada lhe impede de criar um “dialeto” da XML que seja uma linguagem especial para descrever equações matemáticas. Tanto não impede que isso de fato já foi feito. A linguagem chama-se MathML e você pode obter mais informações sobre ela no próprio sítio do W3C na página W3C Math Home (< www.w3.org/Math/ >).

Mas espere um instante: se cada um cria seus próprios rótulos de acordo com suas necessidades, como o programa navegador saberá interpretar esses rótulos? Simples: basta que quem criou os rótulos crie também um documento especial, o DTD (“Document Type Definition ” ou definição de tipo de documento), informando o que exatamente cada rótulo representa, que atributos ele pode conter e coisas que tais. Um DTD deve ser criado segundo regras estritas estabelecidas pelo W3C de modo a que possa ser interpretado pelo programa navegador. Criado o DTD, informa-se, logo no início de cada página XML que usa os rótulos nele definidos, o URI (endereço) onde ele pode ser encontrado. Assim, quando um programa navegador recebe um documento XML bem formado, ou seja, que obedece ao padrão estabelecido pelo W3C, procura no seu cabeçalho informações sobre a linguagem usada (que versão da XML) e onde encontrar as definições de seus rótulos. E os trata de acordo. É simples assim.

Mas se a XML se interessa apenas pela estrutura do documento, quem trata da forma? Como ficam as cores, posições, botões piscantes e outros tantos fricotes? Bem, o problema pode ser resolvido de mais de uma forma. Mas a mais simples e comum é apelar para as “folhas de estilo em cascata” (CSS, de Cascading Style Sheets), documentos externos que contêm instruções – também normalizadas pelo W3C – sobre como cada elemento deve ser exibido. E aí o autor pode se esbaldar usando uma cornucópia de cores para realçar seu documento, como letras laranja sobre fundo marrom escuro, sem prejudicar ou alterar o conteúdo.

(aqui, cabe um parêntese; para facilitar a transição entre HTML e XML o W3C criou a XHTML, um dialeto da XML – sobre o qual você encontra mais informações em < www.w3.org/MarkUp/ > – que usa a maioria dos rótulos ou “tags” estruturais da HTML mas obedece às regras da XML e usa folhas de estilo em cascata para formatar as páginas; se você quer ver como é possível separar completamente forma de conteúdo usando XHTML e CSS, visite o sítio DisquePiropo em < www.disquepiropo.com.br >, navegue ao léu por algumas de suas páginas prestando atenção na forma, depois vá até a página “CSS”, cujo atalho fica no canto superior direito da página principal, e procure por um atalho que permitirá que você visualize o sítio sem as folhas de estilo, ou seja, conteúdo puro; você verá então o mesmo sítio, formado pelas mesmas páginas XHTML, com o mesmo conteúdo, completamente funcional porém sem qualquer formatação)

E assim estava tudo correndo muito bem, caminhando na direção da XML. É claro que ainda existem centenas de milhões de sítios na Internet programados em HTML com sua mistura de forma e estrutura e ainda muitos milhões serão criados. Mas o mundo já percebeu as vantagens da XML e pouco a pouco está migrando para ela (a mudança é feita principalmente pelas grandes corporações, cujos responsáveis já perceberam as imensas vantagens proporcionadas por uma linguagem que permite buscas que levem em conta a estrutura – algo impossível com a HTML).

Eis então que alguns usuários da XML começaram a reclamar de sua lentidão.

Ora, ocorre que, pelo menos por enquanto, a lentidão é inerente ao próprio conceito subjacente à XML. Isso porque os rótulos (“tags”) e suas definições nos DTDs (Document Type Definitions) são criados em texto. Essa é uma das condições básicas da XML: seus documentos devem ser legíveis tanto por máquinas quanto por humanos. E isso só é possível usando texto.

O resultado é que para que um documento XML seja interpretado por um navegador ele deve ser completamente escrutinado e os rótulos, em texto, devem ser interpretados. E isso faz com que documentos longos sejam processados lentamente.

Resultado: passaram a propor que os documentos XML usem um formato binário, ou seja, que não usem mais texto para seus rótulos. Assim, a máquina os interpretará muito mais depressa. Mas os humanos não mais os lerão (veja artigo “Putting XML in the fast lane” de Martin LaMonica em
< http://news.zdnet.com/2100-9588_22-5534249.html?tag=st.num >).

Um dos líderes desse movimento é o grupo Fast Infoset da empresa Sun. Mas não são os únicos. Seu objetivo é a criação de um novo padrão, a XML binária (binary XML).

O W3C, naturalmente, não se entusiasmou com a idéia. Mas, dadas as suas origens profundamente democráticas, quando confrontado com ela e atendendo às solicitações de alguns membros, em setembro de 2003 organizou um “workshop” para discutir o assunto, do qual resultou a criação de um grupo de trabalho (veja a página do grupo em < www.w3c.org/XML/Binary/ >). Mas deixou claro que o objetivo deste grupo não é desenvolver qualquer padrão, mas simplesmente discutir se é o caso de desenvolvê-lo ou não.

Eu, embora parte interessada, não sou autoridade em XML e portanto não tenho que me meter a dar pitaco em coisas que estão além e acima de minha capacidade. Mas nada me impede de aplicar um mínimo de bom-senso. Porque, se tem uma coisa que aprendi nessas duas décadas em que fuço tecnologia e informática, é que o hardware evolui muito mais rapidamente que o software. E se alguma coisa, programa ou padrão é considerada demasiadamente lenta em uma ocasião, basta esperar um pouco que logo os desenvolvimentos em hardware farão em um tempo surpreendentemente curto com que aquilo que hoje se arrasta pareça voar.

Eu sou do tempo em que se usava o bom e velho DOS e sua interface de caracteres e ninguém se interessava por uma novidade meio bizarra que estava aparecendo na época, mas que era tão lenta que não havia quem fizesse fé em seu futuro: as tais interfaces gráficas.

Já pensou se naqueles dias as pesquisas em Windows, OS/2, Mac OS e nas versões gráficas de Linux fossem abandonadas por acharem que eram lentas demais para uso prático?

É mais ou menos o que está acontecendo com a XML hoje...

 

B. Piropo