JavaScript agora é sério (FISL 2011)

2,208 views
2,095 views

Published on

Published in: Technology, News & Politics

JavaScript agora é sério (FISL 2011)

  1. 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. 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. 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. 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. 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. 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. 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. 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. 9. Tipagem dinâmica e fraca ? groups.google.com/group/jsproFriday, July 1, 2011
  10. 10. Tipagem dinâmica e fraca Exemplos do D. Crockford (O Melhor do JavaScript) groups.google.com/group/jsproFriday, July 1, 2011
  11. 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. 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. 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. 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. 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. 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. 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. 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. 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

×