segunda-feira, 29 de fevereiro de 2016

Hardcore Devel #53 - Sobre o Javascript

Me chame de antiquado mas eu realmente não gosto de Javascript.


Apesar de ter ido atrás dessa logo gigantesca.

Vamos lá. Eu vou advogar contra o Javascript e depois eu vou tentar quebrar um pouco o meu argumento. Então eu vou colocar a pergunta direto na mesa: Por que não usar Javascript?

Javascript é uma linguagem de programação, e como toda a linguagem de programação, você precisa de um compilador pra poder fazer a coisa funcionar. Quem é o compilador do Javascript? O seu navegador. Ele compila o código javascript contido nas páginas da web. Sabe o que mais ele faz? Ele executa quase que sem a sua permissão. Na verdade você pode configurar isso, mas é para o usuário comum certamente é sem que ele note isso.

E isso torna o Javascript um elemento potencialmente perigoso. Qualquer pessoa pode rodar um código qualquer a escolha na sua máquina quando isso está habilitado. Esse código pode ser bom ou ruim, e na maioria dos sites que a gente visita ele é bem tranquilo. O próprio symsoup usa um pouco de Javascript especialmente nas postagens de matemática.

Todo esse código também gera trabalho na máquina do cliente. Isso significa que ele não mais vai baixar um arquivo um arquivo HTML, mas também vai ter que rodar algum código pra fazer alguma coisa, em outras palavras, vai demorar mais pra um site ser carregado.

E as coisas pioram ainda mais porque os navegadores se tornam mais pesados. Especialmente porque eles tem de se atualizar para evitar que o Javascript faça besteira e gere uma vulnerabilidade na máquina das pessoas que simplesmente querem visualizar algumas páginas na internet. Não é a toa que na Deep-web, surfa-se com o Javascript desabilitado.

Ainda assim, ele é uma das poucas fontes que permite que você possa fazer determinadas coisas elegantes nos navegadores, como exibir informações matemáticas de forma bela e precisa usando o MathJax por exemplo, ou criando interatividade nas páginas. Isso é possível apenas com Javascript, caso contrário toda a interação seria feita de forma extremamente lenta.

É útil, mas eu certamente sou contra.

4 comentários:

  1. Eu entendi seu ponto de vista sobre a vulnerabilidade e também sobre a lentidão, eu tive problemas tentando aprender JS justamente por conta da lentidão de um script.

    Mas a questão é: que outro recurso você sugere que seja usado no lugar do javascript, uma vez que o próprio MVA (Microsoft Virtual Academy) ao colocar o curso de HTML 5 e CSS 3 online, também colocou uma introdução ao JS.

    Existe uma alternativa ou ainda não foi pensado nisso? Por exemplo, eu sei que o CSS facilita muito a vida da gente, mas sei que as firulas quem faz na verdade é o JS, ou pelo menos foi isso que entendi.

    ResponderExcluir
    Respostas
    1. A verdade é: Não existe uma alternativa exatamente viável especialmente quando você está fazendo sites. Se você quer adicionar interatividade você precisa do Javascript.

      A única outra forma, seria você criar um aplicativo próprio e aí a forma de comunicação com um servidor é completamente diferente da forma que os navegadores da internet fazem com os Apaches/IIS da vida por aí. Se você desenha a aplicação cliente e a aplicação servidora, você consegue adicionar a quantidade de interação na medida que você quiser, mas você paga o preço de não ser escalável, ou seja, as pessoas vão ter dificuldade em usar o seu aplicativo pra fazer coisas diferentes, e essa não era a idéia da Apache, que só queria trocar uns arquivos via HTTP.

      Em outras palavras, Javascript é um mal necessário na vida do designer.

      Excluir
    2. Mas a questão é exatamente essa, não existe nenhum outro aplicativo já criado que não seja baseado em JS.

      Eu já vi bibliotecas prontas baseadas em JS como o JQuery e o Bootstrap (que é baseado em CSS e JS), mas só mais do mesmo com outra cara.

      Existe algum projeto em desenvolvimento em algum meio underground ou simplesmente não há interesse no assunto?

      Excluir
    3. Até aonde eu saiba, porque pra fazer isso você teria que criar um novo navegador com uma função completamente nova e essa função teria que ser abraçada por pessoas que gostariam de fazer alguma coisa com o seu novo navegador. Seria similar a marretar um novo padrão de desenvolvimento sobre o que já existe.

      Não conheço nenhum projeto ambicioso a esse respeito, e as pessoas não parecem migrar dos navegadores para uma coisa completamente nova, especialmente depois de Javascript e Php.

      Excluir