JavaScript é construído sobre algumas idéias muito boas e algumas muito ruins.
As boas idéias incluem funções, tipificação solta, objetos dinâmicos e uma notação literal objeto expressivo. As más idéias incluem um modelo de programação baseado em variáveis globais.
Funções de JavaScript são objetos de primeira classe com (principalmente) delimitação lexical. JavaScript é a primeira língua lambda para ir mainstream. No fundo, JavaScript tem mais em comum com Lisp e Scheme do que com Java. É Lisp em pele de C. Isto faz com que uma linguagem JavaScript extraordinariamente poderosa.
A moda na maioria das linguagens de programação hoje exige tipagem forte. A teoria é que tipagem forte permite que um compilador para detectar uma grande classe de erros em tempo de compilação. Quanto mais cedo se pode detectar e reparar os erros, a menos que nos custou. JavaScript é uma linguagem fracamente tipada, para compiladores JavaScript são incapazes de detectar erros do tipo. Isso pode ser alarmante para as pessoas que estão vindo para JavaScript a partir de linguagens fortemente tipados. Mas acontece que a tipagem forte não elimina a necessidade de testes cuidadosos. E eu encontrei no meu trabalho que os tipos de erros que encontra forte verificação de tipo não são os erros que se preocupar. Por outro lado, acho frouxa digitando para ser libertadora. Eu não preciso para formar hierarquias de classes complexas. E eu nunca tenho que lançar ou lutar com o tipo de sistema para obter o comportamento que eu quero.
JavaScript tem uma notação literal objeto muito poderoso. Os objetos podem ser criados simplesmente listando seus componentes. Esta notação foi a inspiração para JSON, o formato de intercâmbio de dados popular.
Uma característica controversa em JavaScript é herança prototípica. JavaScript tem um sistema de objetos classfree em que os objetos herdam propriedades diretamente de outros objetos. Isso é muito poderoso, mas é desconhecido para programadores treinados classicamente. Se você tentar aplicar padrões de projeto clássicos diretamente para JavaScript, você será frustrado. Mas se você aprender a trabalhar com a natureza prototípica do JavaScript, seus esforços serão recompensados.
JavaScript é muito criticado pela sua escolha de idéias-chave. Para a maior parte, no entanto, essas escolhas foram boas, se incomum. Mas havia uma escolha que foi particularmente ruim: JavaScript depende de variáveis globais para a ligação. Todas as variáveis de nível superior de todas as unidades de compilação são lançados juntos em um espaço comum chamado o objeto global. Isso é uma coisa ruim, porque as variáveis globais são maus, e em JavaScript que são fundamentais. Felizmente, como veremos, JavaScript também nos dá as ferramentas para mitigar este problema.
Em alguns casos, não podemos ignorar as partes ruins. Há algumas partes terríveis inevitáveis, que serão chamados a medida que ocorrem. [...] JavaScript é uma linguagem de muitos contrastes. Ele contém muitos erros e bordas afiadas, então você pode se perguntar: "Por que eu deveria usar JavaScript?" Há duas respostas. A primeira é que você não tem escolha. A Web tornou-se uma importante plataforma para desenvolvimento de aplicativos e JavaScript é a única linguagem que é encontrada em todos os navegadores. É lamentável que Java falhou nesse ambiente, se ele não tivesse, poderia haver uma opção para as pessoas que desejam uma linguagem clássica rigidez. Mas Java deixou e JavaScript está florescendo, então não há evidência de que o JavaScript fez a coisa certa.
A outra resposta é que, apesar de suas deficiências, JavaScript é realmente bom. É leve e expressivo. E uma vez que você pegar o jeito dele, programação funcional é um monte de diversão.
Mas, para usar bem a língua, você deve estar bem informado sobre suas limitações. Eu vou bater em pessoas com alguma brutalidade. Não deixe que isso o desanime. As partes boas são boas o suficiente para compensar as partes ruins.
Douglas Crockford's
Javascript: The Good Parts, O'Reilly, pag. 20. cap. 1.
Javascript: The Good Parts, O'Reilly, pag. 20. cap. 1.
Nenhum comentário:
Postar um comentário