JavaScript - Nem Java, nem Script - Uma Interessante Linguagem Orientada a Objetos (sem classes)
Já escrevi sobre o Qooxdoo, uma biblioteca GUI para a web feita em JavaScript. Quem não quem conhece JavaScript, pode ficar impressionado com as capacidades desse framework orientado a objeto. E vai também, sem dúvida, ficar com as mãos amarradas no momento que tentar escrever alguma coisa com ele. Antes de nos aprofundarmos em Qooxdoo, temos que conhecer um pouco de JavaScript.
Este artigo é uma introdução de JavaScript, para você deixar de vê-la como uma forma de fazer pequenos scripts em browser e passar a reconhecer o potencial que ela tem, como uma linguagem orientada a objetos, com recursos únicos muito bons.
Primeiramente, é necessário se desligar do nome bastante enganador: JavaScript não tem herança alguma de Java - chamava LiveScript quando foi implementada pela primeira vez pela Netscape (e Mocha, antes disso). Ganhou o prefixo Java em uma jogada de marketing da Netscape aliada com a Sun, sem ter ganhado nada que a tornasse mais perto dessa outra linguagem da Sun, que estava começando a entrar na moda em 1995.
O sufixo Script do nome também dá uma impressão errada. Ela não tem mais de “script” do que outra linguagens interpretadas por aí. Apesar do host mais comum que estamos acostumados a ver JavaScript executando são os browsers, não existe nada na definição da linguagem que a limite nesse sentido.
Tendo isso esclarecido, podemos partir para JavaScript. É uma linguagem dinâmica, fracamente tipada, com orientação a objetos baseada em prototipos. O que isso quer dizer?
A primeira parte, linguagem dinâmica, é algo que está na moda ultimamente. Uma linguagem dinâmica é uma que é capaz de alterar sua estrutura durante a execução, algo que em linguagens tradicionais, acontece durante a compilação. Isso quer dizer que JavaScript pode criar novos tipos, adicionar métodos em objetos existentes.
Ser fracamente tipada é uma faca de dois gumes - variáveis não possuem tipos estritamente definidos, funções não obrigam tipos de parâmetros pré-determinados (nem a quantidade deles). Permite uma programação muito mais flexível do que seria possível em uma linguagem fortemente tipada, dando um poder muito grande para JavaScript, mas requer uma atenção maior do programador.
Finalmente, é orientada a objetos. Não tem, porém, classes ou tipos, como a orientação a objetos tradicional. Como pode ser orientada a objetos sem classes? JavaScript segue o modelo de orientação a objetos Prototipal. Nesse modelo, objetos são construídos, funções e campos são adicionados neles, e eles servem de protótipo, como uma forma, para outros objetos descendentes, sendo clonados e permitindo que funcionalidade seja adicionada na instância descendente. É uma modelo de difícil compreensão para quem está acostumado com a forma clássica, mas que, como os outros recursos que vimos até agora, dá para JavaScript um potencial enorme de solução de problemas de uma forma diferente da qual estamos acostumados.
Em JavaScript, tudo é um objeto. Inclusive funções são objetos, podendo ter membros, e métodos (outras funções). Outra característica interessante é que todos os objetos não são nada mais que Hashes - estruturas nome=valor contendo todos os campos e métodos da classe, que podem ser enumerados e alterados em qualquer momento que for necessário.
Na próxima parte, vamos criar alguns objetos em JavaScript para aprender o básico da sintaxe, e descobrir o que é lambda e closures, recursos que tornam a implementações de funções um tanto mais fácil.
Se você é novo por aqui, não deixe de assinar o feed RSS ou notificações por email. Não perca novos artigos!
Em 19 de Maio de 2007 às 19:48
JavaScript - Nem Java, nem Script - Uma Interessante Linguagem Orientada a Objetos (sem classes)
“Este artigo é uma introdução de JavaScript, para você deixar de vê-la como uma forma de fazer pequenos scripts em browser e passar a reconhecer o potencial que ela tem, como uma linguagem orientada a objetos, com recursos únicos muito bons.”
Em 18 de Agosto de 2007 às 15:00
Estou fazendo uma cotação para contratar profissionais java que conheça qooxdoo.
Qual a média de remuneraçao (hora) deste profissional?
Obrigada.
Em 18 de Agosto de 2007 às 15:35
Boa pergunta. Não sei dizer exatamente, mas imagino que seja um valor alto - não é uma habilidade que muita gente já tem, e a escassez leva esse valor para cima.
Em 20 de Maio de 2007 às 03:52
Acho que a chamam de script pois não possui um
processo de compilação anterior à sua execução.
Gosto muito de javascript, ainda mais trabalhando com
as ferramentas certas.
Em 20 de Maio de 2007 às 03:10
Bom, a definição para linguagens sem um processo de compilação é “linguagem interpretada”. Se basta não ter compilação para ser linguagem de script, linguagens como PHP também seriam consideradas (o que eu acredito não ser, geralmente).
A definição de uma linguagem de script é um pouco tênue, na minha opinião, geralmente tendo a conotação que é algo incompleto, não podendo ser usado para desenvolver uma aplicação completa. JavaScript, como linguagem, não tem essa limitação (apesar da implementação usual, com o browser como o host, tem um pouco).
Que ferramentas você considera as certas?
Em 22 de Maio de 2007 às 00:19
[...] viável, com riqueza de recursos e grande flexibilidade. Ou, na excelente definição do artigo JavaScript - Nem Java, nem Script - Uma Interessante Linguagem Orientada a Objetos (sem classes), por Leonel Togniolli: [JavaScript] é uma linguagem dinâmica, fracamente tipada, com orientação [...]