Skip to content

Latest commit

 

History

History
108 lines (91 loc) · 2.78 KB

inovacoes.org

File metadata and controls

108 lines (91 loc) · 2.78 KB

Inovações, Discussão, “Pior é melhor”

1 Inovações: Nomes e escopo (com tipagem dinâmica)

Questão: Qual é o escopo de uma variável não declarada? \linebreak

Supondo escopo estático (léxico)

  • Quando acessamos uma variável x, como saber se ela é local, global ou algo entre os dois (c/ escopo aninhado)?

Ruby tem dois níveis de escopo (local e global)

  • Distinção usando prefixos
  • foo é local
  • $foo é global
  • @foo é um atributo de instância
  • @@foo é um atributo de classe

\pause Python, R

  • Regra interessante \linebreak → tudo é local, a menos que especificado o contrário

2 Inovações: Tipos de dados

Declaração de tipos é desnecessária

  • Checagem de tipos feita dinamicamente
    • Algumas linguagens são mais estritas \linebreak → Scheme, Python, Ruby
    • \pause Outras menos (Perl, Javascript, Rexx, Tcl)

Perl

  • Assume que o programador codifica erros importantes
  • Na ausência de checagem → comportamento razoável
    $a[3] = "1";
    print $a[3] + $a[4], "\n";
        

3 Inovações: Orientação a objeto

Declaração de classes são executáveis (Python, Ruby)

  • Compilação condicional

\pause Exemplo com código em Ruby

class My_class
   def initialize(a, b)
     @a = a;   @b = b;
   end
   if expensive_function()
     def get()
         return @a
     end
   else
     def get()
         return @b
     end
   end
end

4 Discussão

Como aprender a programar?

  • Linguagem de script versus linguagem de sistema

Ronald P. Loui (Washington University)

  • In Praise of Scripting: Real Programming Pragmatism

Qual linguagem de script para ensinar a programar?

  • Gawk
  • Javascript
  • PHP
  • ASP
  • Perl
  • Python (Raspberry Pi)
  • Ruby

E sobre a escalabilidade de linguagens de script?

5 Pior é melhor?

Linguagens de script versus Linguagens de sistema

  • Qual é melhor?

\pause A discussão balança entre

  • Expressividade/flexibilidade vs segurança e desempenho
  • \pause Rápido e sujo vs aplicações polidas

\pause Richard Gabriel (Lucid Corp., 1989)