Guia de Padrões Web (parte I): introdução 0

Ok, eu sei que existe uma infinidade de tutoriais e guias sobre boas práticas, muitas excelentes, o assunto é até batido, mas… Tenho respondido nos últimos meses uma série de questionamentos “bobos” sobre boas práticas de codificação XHTML/CSS, o que me motivou a escrever um guia de Padrões Web compilado, reunindo o que é essencial no assunto e algumas dicas do dia-a-dia, acumuladas em 10 anos de experiência. Espero que seja útil, tanto para os iniciantes quanto para os experts, como uma fonte de referência em português. Não pretendo ser exaustivo nos temas, mas tentarei não ser superficial também. Comentários e sugestões são muito bem-vindos!

A semântica da Web

Existem dois conceitos correntes sobre web semântica: o mais conhecido é o proposto por Tim Berners-Lee, que define a Web Semântica como um ambiente onde “a informação é dada com um significado bem definido, permitindo melhor interação entre os computadores e as pessoas” (BERNERS-LEE et al, 2001). O outro pode ser definido como “semântica da web”, e trata da forma como escrevemos nossos códigos, utilizando a tag correta no contexto correto para a qual ela foi criada.

No fim das contas, um dos objetivos finais de uma semântica da Web é facilitar a organização da informação para a sua manipulação por máquinas, mas não fica só nisso (como veremos adiante). E, com exceção dos bots das máquinas de busca e alguns poucos agentes, escrever seu código corretamente não irá fazer com que seus sites e sistemas sejam reconhecidos por estes. Um conceito não exclui o outro, e são até complementares (ambos tratam de padrões e buscam a interoperabilidade) mas são completamente diferentes entre si nos objetivos finais e nas técnicas de desenvolvimento. Assim, quando trato de Padrões Web, estou dizendo sobre o desenvolvimento de front-end de aplicativos Web, para evitar confusões. Para saber mais sobre Web Semântica, acesse o site oficial do assunto do W3C, ou confira outros artigos publicados neste blog.

Por que codificar seguindo boas práticas?

Ao desenvolver dentro dos Padrões Web, a organização e a função dos elementos XHTML é um dos fatores essenciais na codificação. Cada elemento da página exerce uma função (como título, parágrafo, formulário, divisor, lista etc.), definindo assim um “significado” para cada parte do layout.

É muito importante que os elementos estejam marcados corretamente, e é útil por uma série de motivos como:

  • Reduzir o custo e a complexidade do desenvolvimento e manutenção;
  • Aumentar a acessibilidade e a interoperabilidade;
  • Permitir a indexação eficiente do conteúdo pelos motores de busca;
  • Reduzir o tamanho dos arquivos e o tempo de renderização do navegador;

Entre diversos outros. Na medida em que formos avançando no guia, você verá que é muito mais lógico desenvolver de acordo com os padrões do que utilizar milhares de gambiarras com tabelas.

O que são os Padrões Web (Web Standards)?

Padrões Web (ou Web Standards, em inglês) são um conjunto de normas, diretrizes, recomendações, notas, artigos, tutoriais e afins de caráter técnico, produzidos pelo W3C, destinados a orientar fabricantes, desenvolvedores e projetistas para o uso de práticas que possibilitem a criação de uma Web acessível a todos. Prevê o desenvolvimento em camadas (informação, formatação e comportamento), e possui inúmeras vantagens: uniformidade, simplicidade, liberdade, separação de estrutura e apresentação, facilidade de criação e manutenção, acessibilidade, extensibilidade, estabilidade etc. A lista é crescente, e só é percebida pelo desenvolvedor na medida em que ele os utiliza no seu dia-a-dia.

Eis como fica um trecho de código HTML desenvolvido com tabelas:

<table cellspacing="0" cellpadding="0" width="500">
  <tr>
    <td width="200"><a href="produto.php?id=1">TV LCD 22</a></td>
    <td><font color="FF0000">R$ 599,99</font></td>
  </tr>
  <tr>
    <td width="200"><a href="produto.php?id=2">TV LCD 40</a></td>
    <td bgcolor="#333333"><font color="FF0000">R$ 999,99</font></td>
  </tr>
  <tr>
    <td width="200"><a href="produto.php?id=3">TV LCD 45</a></td>
    <td><font color="FF0000">R$ 1199,99</font></td>
  </tr>
  <tr>
    <td width="200"><a href="produto.php?id=4">TV Plasma 45</a></td>
    <td><font color=“FF0000”>R$ 1299,99</font></td>
  </tr>
</table>

E o mesmo trecho equivalente nos Padrões Web:

<ul>
  <li>
    <a href="produto.php?id=1">TV LCD 22</a> - R$ 599,99
  </li>
  <li>
    <a href="produto.php?id=2">TV LCD 40</a> - R$ 999,99
  </li>
  <li>
    <a href="produto.php?id=3">TV LCD 45</a> - R$ 1199,99
  </li>
  <li>
    <a href="produto.php?id=4">TV Plasma 45</a> - R$ 1299,99
  </li>
</ul>

Imagine agora o HTML acima programado em PHP para acessar uma tabela em um banco de dados qualquer:

<table cellspacing="0" cellpadding="0" width="500">
<? foreach ($produtos as $produto) { ?>
  <tr>
    <td width="200">
      <a href="produto.php?id=<?=$produto[0];?>">
        <?=$produto[1];?>
      </a>
    </td>
    <td bgcolor="#333333">
      <span class="preco"> - R$ <?=$produto[2];?></span>
    </td>
  </tr>
<? } ?>
</table>

Veja o mesmo código nos Padrões Web:

<ul>
<? foreach ($produtos as $produto) { ?>
  <li>
    <a href="produto.php?id=<?=$produto[0];?>">
      <?=$produto[1];?>
    </a>
    - R$ <?=$produto[2];?>
  </li>
<? } ?>
</ul>

Compare os códigos na programação final. O segundo é infinitamente mais legível, ocupa menos espaço em bytes e requer muito menos processamento do computador (e olha que o código em HTML nem está tão “sujo” assim…). Precisa falar mais?

A semântica dos elementos

Como foi dito anteriormente, a função de cada elemento no XHTML é um dos fatores essenciais na codificação. Cada um deles tem um propósito específico e, além de não fazer sentido, é completamente errado seu uso para outros propósitos. O caso clássico é o das tabelas: durante muito tempo (até hoje na verdade, não me canso de ver sites e aplicativos usando e abusando de tabelas) elas foram utilizadas como suportes para o layout.

Existe um grande motivo para que tal bizarrice: a clássica incompatibilidade e limitação dos navegadores na renderização de layouts complexos. Mas isso foi há mais de década atrás, quando o Nestcape dominava o mercado e a Microsoft nem dava muita bola para o novo meio. O HTML era somente uma linguagem simples de publicação de documentos, e poucos pensaram que a Web se transformaria no meio de comunicação multimídia que hoje conhecemos.

A estrutura de elaboração do HTML consiste em instruções no conteúdo do documento, através de marcas de início e fim (tags) definindo trechos do conteúdo, mediante as quais se determina a formatação do texto, imagens e demais elementos que o compõem. O HTML se esgotou justamente por conta da confusão que faz na elaboração de seus documentos, não distinguindo os dados de marcação da própria informação contida no documento.

Nesses tempos heróicos, o uso de tabelas não só era massivo, como também incentivado, como podemos conferir na “pérola” a seguir:

As tabelas são parte integrante do HTML. Ao definir uma grade de linhas e colunas, pode-se alinhar sistematicamente os itens. O exemplo mais simples de uma tabela é colocar o material em duas ou mais colunas. (GOLDING; WHITE, p.125).

Em 1997 fazia muito sentido codificar com tabelas, até porque não havia outro jeito mesmo. Que atire a primeira pedra quem tem mais de 10 anos de desenvolvimento Web e não usou NENHUMA tabela para montar layouts. Mas, fazê-lo em 2010 mostra uma extrema ignorância, para não dizer coisa pior.

No próximo artigo, irei explicar detalhadamente cada elemento do XHTML e sua aplicação. Até breve!

Referências bibliográficas:

FERRAZ, Ronaldo. Construindo sites com Padrões Web.  Disponível em: http://kb.reflectivesurface.com/br/artigos/sitesComPadroesWeb. Acesso em 25 mar. 2010.

FERREIRA, Elcio. Produtividade Web 2.0: como ser produtivo desenvolvendo para Web. Disponível em: http://visie.com.br. Acesso em 5 jun. 2008.

GOLDING, Mordy; WHITE, Dave. Guia de cores para Web Designers. São Paulo: Quark, 1997.

WASP. The Web Standards Project. Disponível em: http://www.webstandards.org. Acesso em 25 mar. 2010.

WORLD WIDE WEB CONSORTIUM. XHTML2 Working Group Home Page. Disponível em: http://www.w3.org/MarkUp. Acesso em 10 mar. 2010.

Leia também:

Web Semântica (parte I): introdução às linguagens de marcas 1

Há meses tenho deixado este blog meio abandonado, e meus três fiéis leitores andaram reclamando um monte por conta disso. As razões são muitas, todas válidas, mas no fim das contas são desculpas esfarrapadas: andei superocupado finalizando meu trabalho de conclusão de curso na Ciência da Informação e cuidando do meu filhote (que fica cada dia mais lindo). Mas, nem tudo está perdido: voltei com carga total, em uma série super-hiper-mega-empolgante sobre Web Semântica, um assunto que há tempos me interessa e que agora tenho estudado seriamente.

Enfim, o que vêm a ser essa tal de Web Semântica? Nada mais é do que uma extensão da Web atual, onde “a informação é dada com um significado bem definido, permitindo melhor interação entre os computadores e as pessoas” (BERNERS-LEE et al, 2001).

O crescimento descentralizado e anárquico da Web, e a ausência de estratégias abrangentes e satisfatórias para a indexação de documentos neste ambiente, trouxeram diversos problemas na recuperação de informações. Neste contexto conturbado e caótico, a recuperação se dá somente através de motores de busca, que utilizam palavras-chave extraídas do conteúdo dos documentos – estratégia de recuperação pouco eficaz, principalmente pela dificuldade de contextualização da informação e pelo foco na apresentação (leia-se: layout)  desta, fazendo com que seja pobremente descrita e pouco passível de ser consumida por máquinas e seres humanos (SOUZA et al, 2004).

Surge assim, neste contexto, o projeto da Web Semântica, onde as informações possuem significado bem definido, permitindo então uma melhor interação entre máquinas e usuários. É um projeto liderado pelo World Wide Web Consortium (W3C), que pretende extender a Web atual através de associações dos documentos a seus significados por meio dos metadados descritivos embutidos no código destes documentos. A Web Semântica, em essência, descreve a criação e implementação de padrões de desenvolvimento a fim de permitir que agentes (softwares especializados e personalizados) possam trocar informações com os documentos na Web, automatizando tarefas rotineiras dos usuários e compartilhando dados de maneira automática e não ambígua com máquinas e seres humanos (SOUZA et al, 2004).

Mas, o que são exatamente esses metadados descritivos? Nada mais são do que as velhas linguagens de marcas, em um contexto especializado.

Um documento na Web é composto por uma mistura de dados e metadados. “Meta” é um prefixo de auto-referência, de forma que “metadados” sejam “dados sobre dados”. Os metadados em documentos na Web têm a função de especificar características dos dados que descrevem, a forma com que serão utilizados, exibidos, ou mesmo seu significado em um contexto (SOUZA et al, 2004).

Linguagens de marcas: uma introdução

No princípio das Ciências da Computação, os computadores eram utilizados essencialmente para a realização de cálculos e processamento de dados. Com a evolução da microinformática e o surgimento do computador pessoal, houve uma mudança radical na utilização destes pela sociedade, e atualmente são utilizados principalmente como ferramenta de comunicação, disseminação e compartilhamento de informações.

Assim, a diversidade de tecnologias, padrões e dispositivos capazes de se conectar a redes de comunicação de dados à distância, e a dificuldade de intercâmbio entre estes é um dos grandes entraves no desenvolvimento de sistemas de recuperação e disseminação de dados. A gama de aparelhos que se interconectam e compartilham dados é enorme e crescente, assim como a quantidade de tecnologias envolvidas no processo.

A questão que se faz pertinente atualmente no desenvolvimento de Sistemas de Recuperação de Informação é o aprimoramento do intercâmbio dos dados, através da separação entre conteúdo, estrutura e formatação nos documentos. Somente com essa separação é possível criar mecanismos que controlem a integridade dos dados, possibilitem conferir sentido a estes e especifiquem suas regras de formatação em cada dispositivo (computadores pessoais, celulares, palmtops etc).

Desde os primórdios das Ciências da Computação são utilizadas para esse fim as linguagens de marcação, que codificam e padronizam dados a serem transferidos entre diferentes sistemas. Codificar um texto para processamento por computadores é um processo de explicitação do que é conjectural – indica como o conteúdo deve ser interpretado pela máquina (ALMEIDA, 2002).

Uma das linguagens mais conhecidas para marcação é a SGML (Standard Generalized Markup Language). Desenvolvida em meados da década de 80 e padrão ISO desde 1986, é amplamente utilizada em grandes projetos de documentação. É uma meta-linguagem, ou seja, um sistema para a definição de linguagens de representação.

Com o surgimento da Internet, uma simplificação da SGML conhecida como HTML (Hyper Text Markup Language) ganhou espaço e praticamente moldou o perfil dos documentos da World Wide Web, pela sua facilidade de codificação e interpretação por diversos softwares. Sua estrutura de elaboração consiste em instruções no conteúdo do documento, através de marcas de início e fim (tags) definindo trechos do conteúdo, mediante as quais se determina a formatação do texto, imagens e demais elementos que o compõem. A HTML se esgotou justamente por conta da confusão que faz na elaboração de seus documentos, não distinguindo os dados de marcação da própria informação contida no documento.

Em 1996, preocupado com o crescimento explosivo de documentos na Internet e a falta de padronização dos mesmos, o W3C (World Wide Web Consortium) propôs uma linguagem padrão de representação de dados para atender às necessidades de comunicação entre sistemas – a XML (eXtensible Markup Language). Assim como a HTML, tem sua origem na SGML. Seu propósito é separar o conteúdo do documento da própria forma de visualização e permitir identificações flexíveis para qualquer tipo de informação, além de especificar hierarquias para os dados, incluindo detalhes como limites e importância destes.

Enquanto a HTML indica o que cada marcador e atributo significam, e simultaneamente a forma que seu conteúdo será representado, a XML utiliza os marcadores apenas para delimitar os trechos de dados, deixando sua interpretação e formatação unicamente a cargo da aplicação que irá recebê-los.

O segredo da XML está na sua própria sintaxe: o produtor do documento escolhe suas próprias marcações e define como eles irão ser nomeados. “Um documento escrito com a sintaxe XML é, na verdade, uma aplicação XML, com um conjunto de marcas escolhidas por seus criadores para aquele documento em particular” (TOLENTINO, 2004). São elementos que também se intercalam entre trechos do texto, mas ao contrário da HTML, são estruturados através de hierarquias que definem sua relevância, além atribuírem valores e relacionamentos contextuais no documento.

Dessa forma, podemos então apontar como os principais benefícios no uso do XML em aplicações Web o acesso facilitado à informação através de atribuição semântica aos dados, o desenvolvimento de aplicações flexíveis, a integração de dados de diferentes origens e a completa separação entre conteúdo, estrutura e formatação dos documentos.

Mas, não basta apenas possuir uma linguagem flexível como o XML para construir metadados (SOUZA et al, 2004). No próximo artigo, farei uma introdução a padrões mais expressivos e adequados para aplicações na Web Semântica, como Dublin Core, RDF, RDFS, OIL, DAML+OIL e OWL.

Referências Bibliográficas:

ALMEIDA, Maurício Barcellos. Uma introdução ao XML, sua utilização na Internet e alguns conceitos complementares. Ciência da Informação, Brasília, v. 31, n. 2, mai./ago. 2002. Disponível em: http://www.scielo.br/scielo.php?script=sci_arttext&pid=S0100-19652002000200001&lng=en&nrm=iso. Acesso em: 31 ago. 2009.

BERNERS-LEE, Tim; HENDLER, James; LASSILA, Ora. The Semantic Web: a new form of Web content that is meaningful to computers will unleash a revolution of new possibilities. Scientific American Magazine, New York, mai. 2001. Disponível em: http://www.scientificamerican.com/article.cfm?id=the-semantic-web. Acesso em: 31 ago. 2009.

SOUZA, Renato Rocha; ALVARENGA, Lídia. A Web Semântica e suas contribuições para a ciência da informação. Ciência da Informação, Brasília, v. 33, n. 1, abr. 2004. Disponível em: http://www.scielo.br/scielo.php?script=sci_arttext&pid=S0100-19652004000100016&lng=en&nrm=iso. Acesso em: 31 ago. 2009.

TOLENTINO, Ricardo José Vaz. Aplicações Web em XML: estágio atual e tendências futuras. Belo Horizonte: FACE-FUMEC; C/Arte, 2004.

Para saber mais:

Empreendedorismo e oportunidade: o case Xerox 0

Em tempos de crise, ser inovador é essencial. Lembremos que uma das qualidades mais valorizadas pelas organizações atualmente é a capacidade de seus colaboradores de promoverem inovação e empreendedorismo dentro do âmbito da organização. Jacques Filion, professor titular da cadeira de Empreendedorismo da Escola de Negócios HEC de Montreal, chama essa característica de intraempreendedorismo. Mas, até que ponto uma organização consegue identificar os indivíduos intraempreendedores e seus projetos inovadores, e quais oportunidades que estes têm de aplicação no mercado? E mais, como reter os talentos e idéias? Na minha opinião, este é um grande desafio para qualquer empresa que investe em P&D.

Um dos casos mais notórios de intraempreendedorismo efetuado por uma organização que resultou em uma perda notável de capital intelectual e, obviamente, dos lucros decorrentes, é o da interface gráfica desenvolvida pela Xerox PARC na década de 70.

O Xerox Palo Alto Research Center (PARC) foi um grande centro de pesquisa da Xerox fundado em 1970. Algumas das inovações na área da computação criadas pelo PARC foram o mouse, os gráficos em cores, a ethernet, o padrão PostScript, a programação orientada a objetos e a impressora a laser, dentre outras. Vários de seus produtos não obtiveram êxito comercial, e a maioria dos projetos foi abandonada ou copiada por outras empresas, mas o maior erro cometido pela Xerox – segundo os historiadores da computação – foi a sua negligência com a interface gráfica, copiada pela Apple em 1979, que obteve um sucesso comercial estrondoso com o lançamento do Macintosh em 1984, sendo depois copiada em todos os modelos de interfaces homem-computador posteriores.

Até meados da década de 70, o computador pessoal era um sonho longe de acontecer: os computadores ainda eram muito grandes, muito caros e muito complicados de manipular. Algum conhecimento de linguagens de programação era necessário para operá-los, sendo que toda a manipulação era realizada via linha de comando, ou seja, via instruções de texto digitadas linha a linha pelo operador.

Desde a década de 60 algumas pesquisas vinham sendo direcionadas à criação de interfaces amigáveis com o computador, com destaque para as lideradas por Douglas Engelbart, do Instituto de Pesquisa de Stanford. Engelbart vinha desde 1945 pesquisando as possibilidades de interação homem-computador, inspirado pelo famoso artigo de Vannevar Bush, “As we may think”, e após vários anos pesquisando e inovando para a ARPA (Advanced Research Projects Agency), encontrou na PARC o subsídio necessário para concretizar várias de suas idéias. E foi neste contexto que o mouse, o hiperlink e a interface gráfica surgiram.

A Xerox utilizou durante anos essas invenções em seus sistemas proprietários, como no computador Xerox Alto, mas nuca deu a devida importância para elas, preferindo dedicar-se às inovações que diziam respeito ao seu negócio: reprografia.

Em 1979, o presidente e fundador da Apple, Steve Jobs, visita o PARC e se entusiasma com as possibilidades da interface gráfica, e promove as pesquisas que resultaram na interface do computador Lisa. Apesar de um fracasso comercial, o Lisa foi um “laboratório” para a Apple em suas pesquisas com o computador pessoal e, em 1984, o Macintosh se tornou um grande sucesso comercial com sua metáfora desktop e as janelas inspiradas nas pesquisas do PARC. O resto é história: a Microsoft copia o conceito de desktop da Apple e lança o Windows, e a interface gráfica, inicialmente considerada um “brinquedo” pelos pesquisadores e profissionais, se torna o modelo padrão de interação homem-computador.

Após inúmeras e duras críticas, a Xerox decidiu em 2002 dar um segundo fôlego ao PARC, dando-lhe autonomia como empresa própria (ainda que controlada pela Xerox) e definindo um modelo de exploração sistemática das competências centrais existentes. Ao invés de negligenciar seus cérebros, deixando-os desmotivados até saírem, eles passaram a ser tratados como intraempreendedores, permitindo que seus projetos e idéias sejam incubados pela Xerox, mesmo que não haja uma relação direta com suas áreas centrais de crescimento. Hoje, o PARC atua nas áreas de pesquisa biomédica, nanotecnologia, redes sociais, automação, entre outras.

Na minha opinião, o “case” Xerox ilustra bem que não basta apenas alinhar as inovações com as estratégias da empresa, mas que também não podemos negligenciar as idéias que aparentemente não façam parte do “core” do negócio. É importante de alguma forma reter o conhecimento gerado, agregando-o ao portfolio de produtos – sob o risco de perder oportunidades de novos negócios e, principalmente, talentos.

Referências Bibliográficas:

FILION, Louis Jacques. Entendendo os intraempreendedores como visionistas. Revista de Negócios, Blumenau, v. 9, n. 2, p. 65-80, abr./jun. 2004.

JONHSON, Steven. Cultura da interface: como o computador transforma nossa maneira de criar e comunicar. Rio de Janeiro: Jorge Zahar, 2001.

Para saber mais: