Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

JavaScript agora é sério (FISL 2011)

2,647 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

×