Skip to content
This repository has been archived by the owner on Apr 26, 2024. It is now read-only.

Latest commit

 

History

History
40 lines (21 loc) · 5.99 KB

preface.md

File metadata and controls

40 lines (21 loc) · 5.99 KB

You Don't Know JS

Prefácio

Tenho certeza que você notou, mas o "JS" como título da série não é uma abreviação de palavras usadas para falar mal de JavaScript, embora xingar sobre as peculiaridades da linguagem é algo com o qual todos nós podemos provavelmente nos identificar.

Desde os primórdios da web, o JavaScript tem sido a fundação de tecnologias que determinam a experiência interativa do conteúdo que consumimos. Apesar de efeitos nos traçados do mouse e perturbadores pop-ups com prompts terem sido a forma que o JavaScript começou, quase duas décadas depois, as capacidades do JavaScript cresceram em muitas ordens de magnitude, e poucos duvidam de sua importância como coração da plataforma de software mais acessível do mundo: a web.

Como linguagem, tem sido alvo permanente de críticas, em parte por sua herança mas principalmente pela filosofia de sua concepção. Até o seu nome evoca, como Brendan Eich uma vez colocou, um status de "irmão mais novo bobinho" se comparado ao seu irmão mais velho e maduro "Java". De qualquer forma, o nome é um mero acidente relacionado à políticas e marketing. As duas linguagens são bem diferentes em muitos pontos importantes. "JavaScript" está tão relacionado a "Java" quanto "Casaco" está relacionado com "Casa".

Pelo fato do JavaScript adotar conceitos e sintaxe idiomática de diversas linguagens, incluindo orgulhosas raízes procedurais ao estilo de C, assim como sutis e menos óbvias raízes funcionais ao estilo de Scheme/Lisp, é bastante acessível para uma larga audiência de desenvolvedores(as), até mesmo aqueles com pouca ou nenhuma experiência com programação. O exemplo de "Hello World" do JavaScript é tão simples que a linguagem é convidativa e fácil de se sentir confortável logo no primeiro contato.

Apesar do JavaScript ser talvez uma das linguagens mais fáceis de se começar, suas excentricidades fazem com que o domínio sólido da linguagem seja muito menos comum do que em outras linguagens. Enquanto se precisa um conhecimento aprofundado em linguagens como C ou C++ para escrever um programa em grande escala, uma aplicação similar em JavaScript pode ser desenvolvida, e muitas vezes é, apenas arranhando parte do que a linguagem pode fazer de verdade.

Conceitos sofisticados e profundamente enraizados na linguagem tendem a surgir de modo aparentemente simples, como a utilização de funções como callbacks, o que encoraja o(a) desenvolvedor(a) JavaScript a usar a linguagem apenas como forma de alcançar um objetivo, sem se preocupar muito com o que está acontecendo nos bastidores.

É, simultaneamente, uma linguagem simples, fácil de usar e com forte aceitação, mas também um conjunto de mecanismos de linguagem complexos e cheios de nuances, cuja falta de um estudo minucioso pode mascarar um verdadeiro entendimento até mesmo para os(as) desenvolvedores(as) JavaScript mais experientes.

É aí que se encontra o paradoxo do JavaSript, o tendão de Aquiles da linguagem, o desafio que estamos propondo. Pelo fato do JavaScript poder ser utilizado sem sua compreensão, o verdadeiro conhecimento sobre a linguagem geralmente nunca é alcançado.

Missão

Se a cada ponto que você encontrar uma surpresa ou se sentir frustrado com JavaScript, sua resposta for adicionar mais um item à sua lista negra, como muitos(as) estão acostumados(as) a fazer, você em breve entrará em uma penumbra cinzenta que irá te afastar de toda a riqueza da linguagem.

A ideia de aprender JavaScript separando todas as partes frustrantes da linguagem foi famosamente apelidada de "A parte boa". Eu vou implorar a você, querido(a) leitor(a), para ao invés disso, considerar essa parte como "A Parte Fácil" ou "A Parte Segura", ou até mesmo "A Parte Incompleta".

A série de livros You Don't Know JavaScript oferece um desafio inverso: aprender e entender profundamente tudo sobre JavaScript, até mesmo "As Partes Difíceis".

Aqui, nós abordamos profundamente a tendência dos(das) desenvolvedores(as) JS de aprender "apenas o suficiente" para seguir em frente, sem se forçarem a entender exatamente a forma e o motivo pelos quais a linguagem se comporta da maneira que o faz. Além disso, evitamos o senso comum de recuar quando a estrada fica irregular ou perigosa.

Eu não fico feliz, nem você deveria ficar, em parar assim que algo funciona, sem realmente entender o porquê. Eu gentilmente desafio você a viajar para a parte "menos acessada" da estrada e se envolver com tudo que o JavaScript pode fazer. Com esse conhecimento, nenhuma técnica, nenhum framework, nenhum nome que virou moda na semana estará além da sua compreensão.

Cada um desses livros tem um enfoque específico em partes da linguagem que em geral são compreendidas de maneira incorreta ou mal compreendidas, e mergulha a fundo nelas. Você deverá finalizar a leitura com confiança em relação ao seu entendimento, não só das partes teóricas, mas também das partes que você "precisa saber".

O JavaScript que você conhece agora é um provável conjunto de partes ensinadas a você por outros(as) que também tiveram um conhecimento incompleto. Esse JavaScript não é nada além de uma sombra da verdadeira linguagem. Você não conhece realmente o JavaScript, ainda, mas se você caminhar por esta série você saberá. Continuem lendo, amigos(as). O JavaScript aguarda vocês.

Sumário

JavaScript é incrível! É fácil de aprendê-la parcialmente, e muito difícil aprendê-la por completo (ou até mesmo suficientemente). Quando desenvolvedores(as) se sentem confusos(as), geralmente culpam a linguagem ao invés de sua falta de conhecimento. Esses livros têm como objetivo corrigir isso, inspirando uma apreciação forte da linguagem que agora você pode (e deve) conhecer profundamente.

Nota: Muitos dos exemplos desse livro supõem que você dispõe de ambientes JavaScript modernos (e de longo alcance futuro), como o ES6. Alguns códigos podem não funcionar como descrito se você estiver utilizando ambientes mais antigos (pre-ES6).