javascript agora é sério (fisl 2011)

19
JavaScript: agora é sério Luciano Ramalho [email protected] Grupo de Discussão JSPRO http://groups.google.com/group/jspro Friday, July 1, 2011

Upload: luciano-ramalho

Post on 17-Dec-2014

1.918 views

Category:

Technology


1 download

DESCRIPTION

 

TRANSCRIPT

Page 2: JavaScript agora é sério (FISL 2011)

groups.google.com/group/jspro

Quem sou eu?Luciano Ramalho, programador desde 1978 (Web ’94)

BOL (Abril S/A), UOL, AOL, Globo.com, IDG Now! etc.

Entusiasta de linguagens

Python, Ruby, Scheme, Java, PHP, JavaScript, Perl, C, C++, Pascal, Smalltalk, Tcl/Tk, Processing, BASIC, VB, HyperTalk, Lingo, Assembly Z-80, 8086, HP-25, TI-58...

JavaScript com CouchDB na BIREME/OPAS/OMS

APyB, FISL 1...11 (quase), Garoa Hacker Clube

Friday, July 1, 2011

Page 3: JavaScript agora é sério (FISL 2011)

groups.google.com/group/jspro

JavaScript: um nome maldito

Não tem nada a ver com Java, foi uma decisão de marketing

Não é um Java simplificado, mas essa percepção complica entender a semântica de JavaScript

Ambas imitam a sintaxe de C e C++

Marca pertencia à Sun, agora pertence à Oracle

Sun licenciou a marca para a Netscape, Mozilla Foundation herdou a licença

Friday, July 1, 2011

Page 4: JavaScript agora é sério (FISL 2011)

groups.google.com/group/jspro

JavaScript: um nome maldito

Uma salada de equívocos de outras linguagens de scripting (Perl, Tcl; PHP bebeu na mesma fonte)

Variáveis automáticas: erros difíceis de localizar

Sintaxe de C (for(;;) ilógico, switch perigoso...)

Sem noção de módulos, nem mesmo include

Abuso do contexto global, sem noção de namespace

Tipagem fraca = conversão automática

Friday, July 1, 2011

Page 5: JavaScript agora é sério (FISL 2011)

groups.google.com/group/jspro

JavaScript x ECMAScript

JavaScript: quem define é a Mozilla Foundation

documentação oficial:

https://developer.mozilla.org/en/JavaScript

versão estável atual: 1.8.5

Firefox 4 e 5, SeaMonkey 2.1

Friday, July 1, 2011

Page 6: JavaScript agora é sério (FISL 2011)

groups.google.com/group/jspro

JavaScript x ECMAScript

ECMAS: European Computer Manufacturers Association

1 1997 1ª edição

2 1998 ISO/IEC 16262

3 1999 regex, try/catch, JS 1.5

5 2009 strict mode, get/set, JSON

Harmony ???? várias idéias de JS 1.6, 1.7, 1.8...

padrãode fato

Friday, July 1, 2011

Page 7: JavaScript agora é sério (FISL 2011)

groups.google.com/group/jspro

Gramática x PragmáticaGramática:

Sintaxe: como se constrói comandos, evitando erros sintáticos

Semântica: significado (“paradigma”): como se constrói programas corretos aproveitando as características da linguagem

Léxico: vocabulário (funções, bibliotecas): como tirar proveito das bibliotecas e não reinventar a roda

Pragmática: usos e costumes

Friday, July 1, 2011

Page 8: JavaScript agora é sério (FISL 2011)

groups.google.com/group/jspro

Pragmática é o que mudou no JavaScript moderno

Como a linguagem é utilizada no mundo real

“sotaque”, expressões idiomáticas, estilo

“boas maneiras” e boas práticas

Contextos de uso

ambientes (cliente, servidor), embutida, independente

Ecosistema

ferramentas, frameworks, “autoridades” (gurus)

Friday, July 1, 2011

Page 9: JavaScript agora é sério (FISL 2011)

groups.google.com/group/jspro

Tipagem dinâmica e fraca

?Friday, July 1, 2011

Page 10: JavaScript agora é sério (FISL 2011)

groups.google.com/group/jspro

Tipagem dinâmica e fraca

Exemplos do D. Crockford(O Melhor do JavaScript)

Friday, July 1, 2011

Page 11: JavaScript agora é sério (FISL 2011)

groups.google.com/group/jspro

O lado bom do JavaScriptVantagens tradicionais de linguagens scripting

Gerenciamento automático de memória

Objetos nativos com sintaxe conveniente e expressiva

Arrays (como listas dinâmicas e heterogêneas)

Objects (como dicionários ou arrays associativos)

Expressões regulares (integradas como em Perl)

Funções e closures (como em Scheme)

Friday, July 1, 2011

Page 12: JavaScript agora é sério (FISL 2011)

groups.google.com/group/jspro

Funções de primeira classe

First-class functions

Como em “First-class citizens”

Cidadãos que gozam de todos os direitos civis Funções como objetos de primeira classe

Friday, July 1, 2011

Page 13: JavaScript agora é sério (FISL 2011)

groups.google.com/group/jspro

Funções de primeira classe

Como qualquer objeto de primeira classe, uma função pode ser:

Criada dentro uma expressão, em tempo de execução

Atribuída a uma variável

Inserida em uma estrutura (array, object)

Passada como parâmetro para outra função

Devolvida como resultado de uma outra função

Friday, July 1, 2011

Page 14: JavaScript agora é sério (FISL 2011)

groups.google.com/group/jspro

Funções de Ordem Superior

Higher-order functions

Aceitam outras funções como argumentos

Exemplos clássicos: Map, Filter, Reduce

Exemplo comum em JS: Array.forEach

Friday, July 1, 2011

Page 15: JavaScript agora é sério (FISL 2011)

groups.google.com/group/jspro

forEach

// print process.argvprocess.argv.forEach( function (val, index, array) { console.log(index + ': ' + val);

});

Friday, July 1, 2011

Page 16: JavaScript agora é sério (FISL 2011)

groups.google.com/group/jspro

Funções de primeira classe

Aplicações mais comuns:

Callbacks em sistemas orientados a eventos (GUIs, clientes e servidores de protocolos de redes de alto desempenho e escalabilidade)

Conceito tão poderoso que graças a ele muitas das limitações conceituais de JavaScript podem ser superadas ou contornadas

Friday, July 1, 2011

Page 17: JavaScript agora é sério (FISL 2011)

groups.google.com/group/jspro

Pragmática: novos usos

AJAX: XMLHttpRequest e JSON

HTML5: armazenagem no cliente e Canvas

Plug-ins para navegadores e outros aplicativos

Node.js

Plataforma de programação assíncrona

Friday, July 1, 2011

Page 18: JavaScript agora é sério (FISL 2011)

groups.google.com/group/jspro

Pragmática: novos usos

Apache CouchDB

BD NoSQL e plataforma CouchApp

Aptana Jaxer, EJScript, RingoJS, AppengineJS, Wakanda...

Servidores de aplicações

Common.js

Uma biblioteca padrão de uso geral

Friday, July 1, 2011

Page 19: JavaScript agora é sério (FISL 2011)

groups.google.com/group/jspro

Vamos continuar esta conversa

E-mail: [email protected]

Grupo de discussão http://groups.google.com/group/jspro

Referências

JavaScript: the good parts (Douglas Crockford)

JavaScript patterns (Stoyan Stefanov)

http://www.delicious.com/ramalho/javascript

Friday, July 1, 2011