por polesapart » 23 Jul 2014 10:34
A história resumida:
HTML 4 não será o teu problema, se você encontrar um. Ninguém mais aceita o internet explorer 6, que era o pior browser da história, hoje existem contornos para a maioria dos problemas de compatibilidade.
A história (bem) longa (e é só um resumo):
HTML 4.0 é um padrão *muito* antigo. Quando a HTML começou a ser usada, era um padrão baseado em SGML. HTML 4.0 foi a última revisão padronizada antes da W3C (a entidade que emite os padrões) criar o XHTML, que era uma nova implementação baseada em XML. Dali pra diante, pra um documento poder ser validado como XHTML, ele antes disso precisa ser um documento XML válido. Problemas de compatibilidade rapidamente surgiram, e na prática, os navegadores, prevendo isso, sempre aceitaram um "mix" de construções xhtml e html 4.0, além de continuar com a implementação original que tinham do html 4.
Os problemas:
As especificações HTML não eram muito precisas, simplesmente por que os navegadores começaram a inventar novos recursos que não estavam nas especificações (quando HTML foi inventada, e até ao menos a versão 3.2, a ideia não era ter um texto tipograficamente preciso, nem bonito, nem permitir extensões multimídia, simplesmente ser funcional).
Quando um padrão emergia, e tentava unificar o comportamento de determinadas construções da linguagem e a renderização deste texto para o gráfico que você vê na tela (ou imprime), os navegadores que já tinham implementado suas extensões proprietárias ou não se adequavam aos novos padrões, ou faziam de uma forma ambígua, mantendo compatibilidade com o padrão proprietário que tinham inventado.
Normalmente, os navegadores de código aberto eram mais entrosados com estas especificações, e tendiam a segui-las. Mas existia um player de mercado que trazia graves problemas: o internet explorer. O internet explorer tinha um "jeito micro$soft" de fazer as coisas. Quando dava suporte a uma forma proprietária de realizar uma atividade, os engenheiros deles não se preocupavam com padrões posteriores. Como essa tralha já vinha com o windows, e já neste época grande parte dos websites eram feitos a baixo custo como um freela pelo sobrinho do dono da empresa ou alguém igualmente (in)capacitado, geralmente era um moleque usuário de windows que nunca viu um mac ou linux na vida, ele simplesmente entrava no altavista.com (antecessor do google, pra quem não é desta época) e digitava "como fazer um site web" e seguia um tutorial escrito por outro "profissa" do mesmo grau.
Fosse a m$ uma empresinha de fundo de quintal em um país sem tradição tecnológica, não teria problema, mas detendo (à época) aproximadamente 90% do mercado de navegadores, e com estas discrepâncias com relação a especificações, surgiu toda uma era de caos e iniquidade.
O tempo passou, os padrões abertos começaram a ganhar relevância, a ponto de hoje, nos países considerados desenvolvidos, os navegadores baseados em implementações padronizadas devem ter pelo menos 85% de participação de mercado, se não mais.
Alguns problemas de renderização e discrepâncias ainda existem, especialmente no internet explorer, mas a verdade é que com a demanda de qualidade tipográfica, a maioria dos navegadores de uns anos para cá já renderiza as páginas de modo quase idêntico.
O HTML5 surgiu tentando dar conta das seguintes demandas:
- Multimídia
- Dispositivos mobile com telas de dimensões reduzidas e viewport variável (soa chique, mas basicamente é o resultado de você virar a tela do celular para ver em modo "paisagem", quando o padrão é "retrato", se não troquei os termos), eventos para tela de toque, etc.
- HTML Canvas, WebGL, CSS3 + flex boxes, armazenamento offline, geolocalização, novas interfaces p/ ajax, websockets, etc.
Procurando ao mesmo tempo:
- simplificar algumas construções do XHTML, especialmente as consideradas difíceis de serem adotadas pelos web-designers (a verdade é que vários aspectos do XHTML nunca "vingaram").
- mais um passo rumo a separação total de aparência e conteúdo: isso vem sendo feito desde o XHTML 1.0, exigindo que se use CSS para definir a aparência da página, deixando apenas o conteúdo em xhtml. Esse objetivo ainda não foi 100% atendido, já que os browsers ainda aceitam "sloppy coding", que não deixa de ser a herança das tags HTML 4, mas foram dados passos neste sentido. Uma implementação HTML5 strict acredito que só possa receber o selo de "compliant" se não usar esses recursos legados.
Outra área onde os browsers divergiam *muito* era na implementação de JavaScript (mais tarde se tornou um padrão ECMA e hoje se referem a ele como ECMAScript): cada um tinha seu jeito de acessar especialmente o que se convencionou chamar por "DOM" (Document Object Model), o que dificultava a vida tanto do usuário, tanto de quem desenvolvia os sites. (A Micro$oft tentou por vários anos, num passado distante, emplacar o uso de visual basic script no navegador, por sorte isso nunca avançou).
HTML 5 deu passos significativos nesta padronização, ao definir também interfaces ECMAScript para algumas construções novas da linguagem.
Boa parte dos últimos avanços foi consolidado no mercado de smart phones, pois com recursos mais reduzidos e múltiplos fabricantes, foi necessário estabelecer padrões que efetivamente funcionassem bem em vários telefones. Isto ajudou a consolidar algumas tecnologias também no lado Desktop.
Existem discrepâncias e limitações de implementação (por exemplo entre iOS e Android, ou mesmo entre versões diferentes de Android), mas elas são conhecidas.
Espero ter ajudado e não feito ninguém dormir.
Warning: time of day goes back (-163479us), taking countermeasures.
