terça-feira, 26 de novembro de 2013

Javascript

            

LINGUAGEM DE SCRIPT 

 

Também conhecida como linguagem descripting, ou linguagem de extensão, são linguagens de programação executadas do interior de programas e/ou de outras linguagens de programação, não se restringindo a esses ambientes. As linguagens de script servem para estender a funcionalidade de um programa e/ou controlá-lo, acessando sua API e, são frequentemente usadas como ferramentas de configuração e instalação em sistemas operacionais(Shell script), como por exemplo, em alguns sistemas operacionais da família Linux, que usam a linguagem bash
Todas as linguagens de script são linguagens interpretadas, porém, nem todas as linguagens interpretadas são linguagens de script. Os programas escritos em linguagens de script são, normalmente, referidos como scripts.


JAVASCRIPT (JS)

 é uma linguagem de programação interpretada . Como parte dos navegadores web, suas implementações permitem que scripts do lado do cliente interajam com o usuário sem a necessidade deste script passar pelo servidor, que controle o navegador, que realize comunicação assíncrona e que altere o conteúdo do documento exibido.
 Também se tornou comum em programação do lado do servidor, desenvolvimento de jogos e criação de aplicativos para desktop. 
 JavaScript é uma linguagem de script baseada em protótipos com tipagem dinâmica e tem funções de primeira classe. Sua sintaxe foi influenciada pela linguagem C.
 JavaScript copiou muitas nomenclaturas e convenções de nomenclatura de Java, mas as duas línguas não são relacionadas e tem  semânticas muito diferentes. 
Os princípios de chave no design interno do JavaScript são tomadas a partir da linguagens de programação Self e Scheme. É uma linguagem multi-paradigma, suportando estilo de programação orientada a objeto, imperativa, e funcional.
Hoje, "JavaScript" é uma marca registrada da Oracle Corporation, sendo usada sob licença para tecnologia inventada e implementada pela Netscape Communications e entidades atuais, como Mozilla Foundation.

CARACTERÍSTICAS DO JAVASCRIPT


Linguagem Imperativa e Estruturada

 Imperativa é um paradigma de programação descrita como ações, enunciados ou comandos que mudam o estado (variáveis) de um programa. Muito parecido com o comportamento imperativo das linguagens naturais que expressam ordens, programas imperativos são uma sequência de comandos para o computador executar. 

 O nome do paradigma, Imperativo, está ligado ao tempo verbal imperativo, onde o programador diz ao computador: faça isso, depois isso, depois aquilo... Este paradigma de programação se destaca pela simplicidade, uma vez que todo ser humano, ao se programar, o faz imperativamente, baseado na ideia de ações e estados, quase como um programa de computador.

JavaScript suporta os elementos de sintaxe de programação estruturada da linguagem C (por exemplo, ifwhile,switch). Uma exceção é a questão do escopo: o escopo em blocos ao estilo do C não é suportado, em seu lugar JavaScript utiliza escopo a nível de função. JavaScript 1.7, entretanto, suporta escopo a nível de bloco através do comando let
Como C, JavaScript faz distinção entre expressões e comandos. Uma diferença sintática do C é que a quebra de linha termina automaticamente o comando, sendo o ponto-e-vírgula opcional ao fim do comando.

Programação Dinâmica

 Descreve uma classe de linguagem de alto nível que, em tempo de execução, executa muitos procedimentos comuns que outras linguagens devem realizar durante a compilação. 

Estes procedimentos podem incluir ampliação do programa, em adicionar novo código, em ampliação de objetos e definições, ou por modificar o sistema de tipo, tudo durante a execução do programa.

Estes procedimentos pode se emulados em quase qualquer linguagem com complexidade suficiente, porém linguagens dinâmicas provêm ferramentas diretas para fazer uso deles. Muito destes recursos foram implementados como características nativas na linguagem Lisp.

Várias linguagens dinâmicas são também de tipagem dinâmicas, mas nem todas o são. Linguagens dinâmicas podem ser (mas não sempre) frequentemente referenciadas como "linguagens de script", apesar que este artigo estritamente se referir a linguagens específicas para um dado ambiente.

Diferentemente de utilizar métodos estáticos que são executados em tempo de compilação (se um método adequado não existir em tempo de compilação, haverá um erro), as linguagens dinâmicas realizam suas tarefas tempo de execução.

Elas fazem pouca ou nenhuma verificação da existência de métodos em tempo de compilação, uma vez que o fazem somente em tempo de execução.

Tipagem dinâmica

Como na maioria das linguagens de script, tipos são associados a valores, e não a variáveis. Por exemplo, a variável 'xpoderia ser compreendida como um número e mais tarde compreendida como uma string. 
JavaScript suporta várias formas de testar o tipo de um objeto, incluindo duck typing, que é um estilo de tipagem em que os métodos e propriedades de um objeto determinam a semântica válida, ao invés de sua herança de uma determinada classe ou implementação de uma interface específica.
"When I see a bird that walks like a duck and swims like a duck and quacks like a duck, I call that bird a duck."


Baseada em objetos

JavaScript é quase inteiramente baseada em objetos. 
Objetos JavaScript são arrays associativos, aumentados com protótipos. 
Os nomes da propriedade de um objecto  são chaves strings. Elas suportam duas sintaxes: notação de ponto (obj.x = 10) e notação de colchetes (obj["x"] = 10), que são equivalentes. Propriedades e seus valores podem ser adicionadas, mudadas, ou deletadas em tempo de execução. 
A maioria das propriedades de um objeto (e aqueles em sua cadeia de herança de protótipo) pode ser enumerada usando-se uma estrutura de repetição for...in
Javascript possui um pequeno número de objetos internos como Function e Date.

Avaliação em tempo de execução

JavaScript inclui uma função eval que pode executar instruções fornecidas como strings em tempo de execução.

Funcional

Em JavaScript as funções são tratadas com Funções de First-Class, pois tratam funções como cidadãos de primeira classe. Especificamente, isso significa que a linguagem suporta funções passadas como argumentos para outras funções, retornando-os como valores de outras funções, e atribuindo-os a variáveis ​​ou armazená-os em estruturas de dados.As funções são de primeira classe, pois eles são objetos em si próprios. Como tal, eles possuem propriedades e métodos, tais como .call() e .bind() 

Funções aninhadas

Funções 'internas' ou 'aninhadas' são funções definidas dentro de outras funções. Elas são criadas cada vez que a função externa é invocada. Além disso, cada função criada constitui um fechamento lexical: o escopo léxico da função externa, incluindo os constantes, variáveis ​​locais e valores dos argumentos, se torna parte do estado interno de cada objeto da função interna, mesmo após a conclusão da execução da função externa.

Fechamentos Lexical

 (também fechamento lexical ou escopo da função) é uma função ou referência a uma função, juntamente com um ambiente de uma tabela referenciada que armazena referências a cada uma das variáveis ​​não-locais (também chamadas de variáveis ​​livres ou upvalues​​) dessa função. 
 Permite assim, que funções aninhadas sejam criadas com o escopo léxico no momento de sua definição e possui o operador()para invocá-las em outro momento
 Em um fechamento, ao contrário de um ponteiro de função simples, permite-se que uma função possa acessar essas variáveis ​​não-locais, mesmo quando chamado fora de seu escopo lexical imediato.
 Fechamento então é essa combinação de código que pode ser executado fora do escopo no qual foi definido, com seu próprio escopo durante a execução.

http://shichuan.github.io/javascript-patterns/ Padrões de Programação de JavaScript

Nenhum comentário:

Postar um comentário