Skip to content

Latest commit

 

History

History
149 lines (129 loc) · 4.44 KB

caracteristicas.org

File metadata and controls

149 lines (129 loc) · 4.44 KB

Características Comuns

1 Batch/Interativo e Expressividade

Definição precisa é difícil

  • Mas elas tem um conjunto de características em comum

Uso em batch ou interativo

  • Ler o programa fonte (script) linha por linha
    • Rexx, Python, Tcl, Guile, Ruby
  • Notável exceção: Perl (insiste em ler todo o código antes)

\pause Expressividade

  • Suportar o rápido desenvolvimento e uso interativo
    • Pouco código para fazer coisas simples → expressividade
  • Abordagens
    • Uso forte de pontuação e identificadores curtos (Perl)
    • English-like, várias palavras e pouca pontuação
  • Evitar declarações extensivas, estrutura complexa

2 Economia de expressão

Exemplos Hello World de (ou falta de) economia de expressão

Java

class Hello {
   public static void main (String[] args) {
      System.out.println ("Hello, world!");
   }
}

\pause Ada

with ada.text_IO; use ada.text_IO;
procedure hello is
begin
    put_line ("Hello, world!");
end hello;

\pause Perl, Python, Ruby (Linguagens de script)

print "Hello, world!\n"

3 Regras simples de escopo

Inexistência de declarações, regras de escopo simples

  • Tudo é global por default (Perl)
    • Declarações opcionais limitam para um escopo aninhado
  • Tudo é local por default (PHP, Tcl, …)
    • Globais devem ser importadas explicitamente
  • Em Python
    • Atribuição define o escopo
    • Sintaxe especial para atribuir para variável de outro escopo

4 Tipagem dinâmica flexível / Acesso fácil ao sistema

Tipagem dinâmica flexível

  • Checagem imediatamente antes do uso (PHP, Python, ..)
  • Interpretação de acordo com contexto (Rexx, Perl, Tcl)
    • Exemplo em perl
    $a = "4";
    print $a . 3 . "\n";
    print $a + 3 . "\n";
        
    • \pause Parecido com coerção (sem a noção de um tipo “natural”)
  • \pause Linguagens sem tipo → Ousterhout’s Plot (Figure 1)
    • Exemplo em Tcl \scriptsize
      button .b -text Hello! -font {Times 16} -command {puts hello}
              

\pause Acesso fácil a chamadas de sistema

  • Muito mais suporte que linguagens tradicionais
  • Perl tem mais de 100 comandos embutidos para acessar sistema

5 Manipulação de strings (sed) / Estruturas de dados

Casamento de padrões e manipulação de strings

  • Expressões regulares estendidas (regexp)

\pause Estruturas de dados de alto nível

  • Conjuntos, dicionários, listas, tuplas
  • \pause No caso de Perl, faz parte da sintaxe de nomes ($ @ #)

6 Reflexão

Mudanças rápidas no desenvolvimento de LPs

  • Linguagens de script

\pause Várias razões para esse enfoque

  • Dinamismo da comunidade de código aberto
  • Baixo investimento para criar uma nova linguagem

\pause Linguagens de script incorporam novidades recentes

  • Exemplo com Ruby
    • Modelo uniforme de objetos (parecido com Smalltalk)
    • Iteradores (Clu)
    • Atribuição de múltiplos caminhos
    • Tratador de exceção estruturado
    • Reflexão
  • Python
    • Funções anônimas de primeira classe
    • Listas (list comprehensions) no estilo de Haskell