JavaScript agora é sério (FISL 2011)
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
2,411
On Slideshare
2,409
From Embeds
2
Number of Embeds
2

Actions

Shares
Downloads
33
Comments
0
Likes
4

Embeds 2

http://twitter.com 1
https://twimg0-a.akamaihd.net 1

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. JavaScript: agora é sério Luciano Ramalho luciano@ramalho.org Grupo de Discussão JSPRO http://groups.google.com/group/jsproFriday, July 1, 2011
  • 2. 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 groups.google.com/group/jsproFriday, July 1, 2011
  • 3. 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 groups.google.com/group/jsproFriday, July 1, 2011
  • 4. 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 groups.google.com/group/jsproFriday, July 1, 2011
  • 5. 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 groups.google.com/group/jsproFriday, July 1, 2011
  • 6. JavaScript x ECMAScript ECMAS: European Computer Manufacturers Association 1 1997 1ª edição 2 1998 ISO/IEC 16262 padrão 3 1999 regex, try/catch, JS 1.5 de fato 5 2009 strict mode, get/set, JSON Harmony ???? várias idéias de JS 1.6, 1.7, 1.8... groups.google.com/group/jsproFriday, July 1, 2011
  • 7. Gramática x Pragmática Gramá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 groups.google.com/group/jsproFriday, July 1, 2011
  • 8. 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) groups.google.com/group/jsproFriday, July 1, 2011
  • 9. Tipagem dinâmica e fraca ? groups.google.com/group/jsproFriday, July 1, 2011
  • 10. Tipagem dinâmica e fraca Exemplos do D. Crockford (O Melhor do JavaScript) groups.google.com/group/jsproFriday, July 1, 2011
  • 11. O lado bom do JavaScript Vantagens 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) groups.google.com/group/jsproFriday, July 1, 2011
  • 12. 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 groups.google.com/group/jsproFriday, July 1, 2011
  • 13. 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 groups.google.com/group/jsproFriday, July 1, 2011
  • 14. 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 groups.google.com/group/jsproFriday, July 1, 2011
  • 15. forEach // print process.argv process.argv.forEach( function (val, index, array) { console.log(index + : + val); }); groups.google.com/group/jsproFriday, July 1, 2011
  • 16. 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 groups.google.com/group/jsproFriday, July 1, 2011
  • 17. 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 groups.google.com/group/jsproFriday, July 1, 2011
  • 18. 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 groups.google.com/group/jsproFriday, July 1, 2011
  • 19. Vamos continuar esta conversa E-mail: luciano@ramgarlic.com 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 groups.google.com/group/jsproFriday, July 1, 2011