domingo, março 22, 2009

Javascript: 3 livros para adquirir superpoderes

Javascript é um dos mais bem sucedidos bacalhaus da história da informática. Foram misturando funcionalidades de outras linguagens, ignorando a criação de um todo coeso. A implementação foi feita às pressas, sem o necessário tempo de maturação das boas linguagens de programação. Pra terminar de estragar, junte a isto o marqueting infeliz no nome de uma linguagem que não tem nada a ver com Java.

A linguagem sempre foi promovida como uma "programação para não-programadores". Desde então, é uma dificuldade encontrar livros que prestam. Dá-lhe livrecos ensinando o que é uma variável e um loop, ou dando receitas de bolo. Saco! Comprei meu primeiro livro baseado em recomendações da Amazon. Um lixo. Insisti e comprei um livro que era mal recomendado por ser "muito difícil". Foi uma das melhores compras de livro que já fiz.

JavaScript: The Definitive Guide de David Flanagan é tudo que um livro de referência tem que ser. Primeiro vem uma rápida introdução à linguagem para quem já sabe programar. A maior parte do livro é referência da linguagem e da API do browser, onde cada método é dissecado. Tudo preciso e sucinto. As diferenças de implementação nos browsers é explicada, o que era fundamental naquele tempo em que as incompatibilidades chegavam ao ponto de os arrays no IE começarem em 1 e no Netscape em 0.

O trabalho de edição da O'Reilly é um show. Há várias maneiras de achar a informação. A organização das informações é tão boa, que é mais rápido achar o que se quer no livro do que buscar na Internet. Hoje, a linguagem se padronizou e a incompatível API dos clientes cresceu uma ordem de grandeza. O livro também cresceu. A 5ª edição é um calhamaço de mais de 1000 páginas. Ótimo para vencer discussões jogando-o na cabeça de seu adversário. Nestes tempos de poderosas bibliotecas javascript, talvez não seja tão necessário quanto antes. A qualidade do livro permanece. É o alfarrábio onde se esclarece as minúcias da linguagem.

Douglas Crockford é o principal arquiteto da biblioteca javascript do Yahoo e conhecido como Sr. Javascript. Inventou o JSON e o JSLint. A impressão que tenho dele é que um velhinho cheio de manias e opiniões fortes, além de ser um pouco ranzinza. Ao ler JavaScript: The Good Parts mudei de idéia. As manias viraram sabedoria.

O foco do livro é o núcleo da linguagem, portanto nada de DOM, eventos ou CSS. Na verdade é menos do que o núcleo, mas sim o subconjunto das features que o autor considera as "boas partes". O livro tem uma grande qualidade: é sucinto. Apenas 170 páginas para descrever o que Javascript tem de bom e apontar suas armadilhas. A gozação, irresistível, é que bastam estas poucas páginas para descrever tudo o que Javascript tem de bom.

As atrocidades da linguagem são devidamente esculhambadas para que sejam evitadas. Aprende-se um monte de técnicas avançadas, como closures, currying, protótipos e herança. Boas práticas são recomendadas.

Gostei de detalhes como a notação "em trilhos":
O divertido dos diagramas é que eles descrevem apenas a parte boa da linguagem. No exemplo acima inteiros são proibidos de começar com zero. Na verdade a linguagem aceita, mas interpreta o número como um octal. Uma tenebrosa fonte de bugs, já que quando o sujeito entra 09 como o mês de setembro e a linguagem diz que é um número inválido.

A O'Reilly ficou a dever na produção editorial. Como cada exemplo de código é baseado nos exemplos anteriores, eles bem que poderiam ter indexado os nomes das funções.

John Resig é o superprogramador que criou a biblioteca JQuery. Escreveu o Pro JavaScript Techniques, que foca no uso de javascript para interagir com os browsers. É o livro para se atualizar com as mais modernas tecnologias Web. Você vai aprender sobre o DOM, CSS, eventos e ajax, Dá todos os macetes para dominar as incompatibilidades entre navegadores e as deficiências de APIs como o DOM. Este foco no cliente o torna o complemento ideal ao livro do Crockford.

Apesar das origens do autor, o livro é agnóstico em matéria de bibliotecas, descrevendo detalhes de várias. Lendo o livro você verá por que hoje em dia é fundamental usar uma biblioteca para não ter que perder tempo lidando com as manias de cada navegador. Resig promete para este ano um livro ainda mais avançado, o Secrets of the Javascript Ninja. O nome do livro mostra bem como o sujeito é nerd:-)

Lendo estas recomendações, você terá superpoderes (ei, eu também sou nerd). Você não só será capaz de criar aplicações modernas como o Gmail, como de entender os sofisticados códigos das bibliotecas. Javascript é falsamente fácil e cheia de armadilhas. Para ter um um código limpo e fácil de manter é preciso conhecer bem o que e como fazer. Estes livros serão seus melhores mentores.

Atualização: Bom, o livro do Ninja ainda não saiu, mas o próprio Resig disse que o livro introdutório de Javascript que ele recomenda é o Professional JavaScript for Web Developers (Wrox Programmer to Programmer). Eu não sei. Pelo que vi do índice, me parece que seria um bom livro para substituir todos estes três. Só que você não teria a referência do Definitive Guide, a inteligência do Good Parts, nem o pragmatismo do Javascript Pro. Mais barato é com certeza.

2 comentários:

Rafael N. disse...

Baca, gostei dos exemplos. me deu um norte, pois quero me aprofundar no JS e estava meio perdido com tanta coisa inútil que tem por aí, a gente acaba sem saber o que realmente é bom. Parabéns pelo Blog.
Abs!

Breno Augusto Cruz Faria disse...

Olá. Parabéns pelo blog. Gostaria de saber sua opinião sobre o livro: JavaScript Guia do Programador - Autor: Maurício Samy Silva. Estou entre este livro e o já consagrado: Javascript o Guia Definitivo 4 Edição.

A minha dúvida é a seguinte, o livro Guia Definitivo está defasado para os dias de hoje, levando em consideração que ele aborda o JavaScript 1.5? Sou programador C++. Recentemente venho caminhando para o ambiente web, com PHP e agora estou me deparando com JavaScript, que estou ansioso para aprender.

Desde já, obrigado.

Att., Breno.