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,
if
, while
,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 'x' poderia 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
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
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.
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 momentoEm 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