Your SlideShare is downloading. ×
Tdc2010 web
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Tdc2010 web

672

Published on

Apresentação sobre javascript, uma comparação geral das suas qualidades e do seu posicionamento no futuro. Apresentado no TDC 2010

Apresentação sobre javascript, uma comparação geral das suas qualidades e do seu posicionamento no futuro. Apresentado no TDC 2010

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
672
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
9
Comments
0
Likes
0
Embeds 0
No embeds

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
  • Assembler é uma línguagem de baixo nível, aonde o programador é obrigado a lidar com detalhes de máquina. Cada linha programada geralmente corresponde a uma linha de máquina register allocation and procedure calling sequences
  • Lidar com detalhes de máquina deixava a programação mais complexa e lenta. Sugiram linguagens que abstraiam este problema do programador. Estas linguagens geralmente tinham forte tipagem, e delas derivaram linguagens tais como C, C++ e java
  • Estas linguagens são um pouco mais lenta quando comparada a linguagem Assembler, mas ofereciam um velocidade de desenvolvimento melhor. Cada linha de çódigo fonte geralmente geravam cinco linhas de máquinas. Geralmente cada programador programa uma mesma quantidade de linhas de código, independente da linguagem. Então para cada linha de máquina programada em Assembler, uma linguagem de alto nível geraria 5 linhas.
  • Um pouco depois do surgimento de linguagem para programar sistemas, surge a linguagens scripting. Eles geralmente tinha fraca tipagem, eram interpretadas
  • Tipos ajudam a gerenciar complexidade, possuem um melhor desempenho pela ausência de necessidade de verificação runtime e lidam melhor com estruturas e algoritimos complexos.
  • Linguagem de scripting possuem maior flexibilidade, menor complexidade e maior velocidade de desenvolvimento. São perfeitas para unir dois componentes. Porém, são um pouco mais lentas…
  • faster machines, better scripting languages, the increasing importance of graphical user interfaces and component architectures, and the growth of the Internet, have greatly increased the applicability of scripting languages GUIs now account for half or more of the total effort in many programming projects. GUIs are fundamentally gluing applications: the goal is not to create new functionality, but to make connections between a collection of graphical controls and the internal functions of the application. I am not aware of any rapid-development environments for GUIs based on a system programming language.
  • Para o usuário, javascript já ajudava muito ao evitar chamadas desnecessários ao servidor, numa época de conexões discadas
  • Transcript

    • 1. Javascript: A linguagem do futuro Ramon Felipe de Oliveira Analista de Sistema Softplan SCJA - SCJP - SCWCD
    • 2. Agenda
      • História Linguagens
      • Scripting X Não Scripting
      • Javascript
      • Patterns
      • Testes
      • ECMAScript 5
    • 3. No começo... assembly
      • Baixo Nível
      • 1 linha código = 1 instrução de máquina
      • Detalhes de máquina
    • 4. Depois...
      • Linguagens de maior nível
      • Abstraem detalhes de máquina
      • Forte tipagem
      • Fortan, Algol e depois C, C++, java
    • 5. Depois...
      • Um pouco menos eficientes
      • 1 linha código = 5 instrução de máquina
      • 1000 X 5000
    • 6. Um pouco depois...
      • Scripting
      • Fraca tipagem
      • Interpretada
      • 1 linha código = 20 instrução de máquina
    • 7. Forte tipagem é bom?
      • Tipos ajudam a gerenciar complexidade
      • Permite otimização pela dimuição de verificação runtime
      • Importante com estruturas e algoritmos complexos
    • 8. Scripting
      • Maior flexibilidade
      • Maior velocidade de desenvolvimento
      • Um pouco mais lentas
    • 9. Cada macaco no seu ganho
      • SPL
        • Criacão de componentes
      • Scripting
        • União de componentes
    • 10. Scriptings em ascensão?
      • Aumento da importância de GUI
      • Aumento da aplicabilidade
      • Internet
      • Linguagens scripting melhores
    • 11. Caixa de Skinner Skinner “ O problema com falsos padrões”
    • 12. Comparativo desenvolvimento
    • 13.  
    • 14. Origens
      • Javascript surgiu em 1995 e quando lançado se chamava LiveScript
      Brendan Eich Brendan Eich
    • 15. Características
      • Pequena
      • Interpretada (compilada)
      • Sofisticada
      • Linguagem cliente
      • Baixa tipagem
      • Objetos são “containers”
      • Herança por protótipos
    • 16. Objeto em JS
    • 17. Sintaxe Literal
      • var obj = {
      • nome: “Fusca",
      • detalhes: {
      • cor: “vermelho",
      • ano: 1988
      • }
      • }
    • 18. Functions
    • 19. Functions
    • 20. Função add
      • function add(x, y) {
        • var total = x + y;
        • return total;
      • }
    • 21. Função add
      • var add = function(x, y) {
        • var total = x + y;
        • return total;
      • }
    • 22.  
    • 23.
      • function add() {
        • var soma = 0;
        • for (var i = 0, j = arguments.length; i < j; i++) {
          • soma += arguments[i];
          • }
          • return soma;
          • }
    • 24. Herança por Protótipo
    • 25. Herança por Protótipo
    • 26. Problema
    • 27.
      • function criarPessoa(nome, sobrenome) {
      • return {
      • nome: nome,
      • sobrenome: sobrenome
      • }
      • }
      • function nomeCompleto(pessoa) {
      • return pessoa.nome + ‘ ‘ + pessoa.sobrenome;
      • }
      • function nomeCompletoInvertido(pessoa) {
      • return pessoa.sobrenome + ', ' + pessoa.nome;
      • }
      Solução 1
    • 28. > p = criarPessoa(“João&quot;, “Silva&quot;); > nomeCompleto(p) João Silva > nomeCompletoInvertido(p) Silva, João Apesar de funcionar, não é uma solução interessante . Provavelmente, logo existirá dezenas de funções no global namespace.
    • 29.
      • function criarPessoa(nome, sobrenome) {
      • return {
      • nome: nome,
      • sobrenome : sobrenome,
      • nomeCompleto: function() {
      • return this.nome + ‘ ‘ + this.sobrenome;
      • },
      • nomeCompletoInvertido: function() {
      • return this.sobrenome + ', ' + this.nome;
      • }
      • }
      • }
      Solução 2
    • 30. > s = criarPessoa(“João&quot;, “Silva&quot;) > s. nomeCompleto() João Silva > s. nomeCompletoInvertido() Silva, João
    • 31. Solução 3
      • function Pessoa(nome, sobrenome) {
      • this.nome = nome;
      • this.sobrenome = sobrenome;
      • }
      • Pessoa.prototype.nomeCompleto = function() {
      • return this.nome+ ' ' + this.sobrenome;
      • }
      • Pessoa.prototype.nomeCompletoInverso = function() {
      • return this.sobrenome + ', ' + this.nome;
      • }
    • 32. Prototype
    • 33. Closures
      • function realizaSoma(a) {
      • return function(b) {
      • return a + b;
      • }
      • }
      • x = realizaSoma(5 );
      • y = realizaSoma(20 );
      • x(6) ? y(7) ?
    • 34. Patterns
      • Old school
      • Revealing Pattern
      • Custom Objects
      • Module Pattern
      • Lazy Function Definition
    • 35. Revealing Pattern
        • Ver Exemplo
    • 36. TDD e javascript
      • JsUnit, um framework para teste de unidade
        • JsUnit é um open source framework, inspirado no jUnit e escrito inteiramente em javascript
      • JsMock, um Mock Object Library para JavaScript
        • JSMock é um Mock Object library para JavaScript que fornece ferramentas necessárias para efetivos testes interativos.
    • 37. ECMAScript 5
      • Strict Mode
      • Extensibilidade de objetos configuráveis
      • Suporte JSON
      • Principais browsers vão dar suporte integral
    • 38.
      • Perguntas?
    • 39.
      • ` Obrigado!
    • 40. Referências
      • http://docs.jquery.com
      • http://www.json.org/
      • http://developer.yahoo.com/yui/theater/
      • https :// developer .mozilla.org/ en / javascript
      • http://javascript.crockford.com/
      • High Performance Web Sites :: Browser Performance Wishlist
      • Best Practices for Speeding Up Your Web Site
      • http://blog.dynatrace.com/2009/11/09/101-on-jquery-selector-performance/
      • http://www.artzstudio.com/2009/04/jquery-performance-rules/
      • http://www.tcl.tk/doc/scripting.html

    ×