1 Aula 2 Aspectos Preliminares Universidade do Vale do Rio dos Sinos www.inf.unisinos.br/~barbosa barbosa@exatas.unisinos.br

Embed Size (px)

Text of 1 Aula 2 Aspectos Preliminares Universidade do Vale do Rio dos Sinos www.inf.unisinos.br/~barbosa...

  • Slide 1
  • 1 Aula 2 Aspectos Preliminares Universidade do Vale do Rio dos Sinos www.inf.unisinos.br/~barbosa barbosa@exatas.unisinos.br
  • Slide 2
  • 2 SUMRIO
  • Slide 3
  • 3 SUMRIO 1 Porque estudar linguagens?
  • Slide 4
  • 4 SUMRIO 1 Porque estudar linguagens? 2 Domnios paras as linguagens
  • Slide 5
  • 5 SUMRIO 1 Porque estudar linguagens? 2 Domnios paras as linguagens 3 Avaliao de linguagens
  • Slide 6
  • 6 SUMRIO 1 Porque estudar linguagens? 2 Domnios paras as linguagens 3 Avaliao de linguagens 4 Influncias sobre o projeto
  • Slide 7
  • 7 SUMRIO 1 Porque estudar linguagens? 2 Domnios paras as linguagens 3 Avaliao de linguagens 4 Influncias sobre o projeto 5 Categarias de linguagens
  • Slide 8
  • 8 SUMRIO 1 Porque estudar linguagens? 2 Domnios paras as linguagens 3 Avaliao de linguagens 4 Influncias sobre o projeto 5 Categarias de linguagens 6 Negociaes no projeto de linguagens
  • Slide 9
  • 9 SUMRIO 1 Porque estudar linguagens? 2 Domnios paras as linguagens 3 Avaliao de linguagens 4 Influncias sobre o projeto 5 Categarias de linguagens 6 Negociaes no projeto de linguagens 7 Mtodos de implementao
  • Slide 10
  • 10 SUMRIO 1 Porque estudar linguagens? 2 Domnios paras as linguagens 3 Avaliao de linguagens 4 Influncias sobre o projeto 5 Categarias de linguagens 6 Negociaes no projeto de linguagens 7 Mtodos de implementao 8 Ambientes de programao
  • Slide 11
  • 11 1 - Porque estudar linguagens?
  • Slide 12
  • 12 Aumento da capacidade de expressar idias 1 - Porque estudar linguagens?
  • Slide 13
  • 13 Aumento da capacidade de expressar idias Maior conhecimento para escolha de linguagens 1 - Porque estudar linguagens?
  • Slide 14
  • 14 Aumento da capacidade de expressar idias Maior conhecimento para escolha de linguagens Capacidade para aprender novas linguagens 1 - Porque estudar linguagens?
  • Slide 15
  • 15 Aumento da capacidade de expressar idias Maior conhecimento para escolha de linguagens Capacidade para aprender novas linguagens Entender a importncia da implementao - Gerenciamento de memria: Fortran x C (Cray) - Recursividade x Iterao 1 - Porque estudar linguagens?
  • Slide 16
  • 16 Aumento da capacidade de expressar idias Maior conhecimento para escolha de linguagens Capacidade para aprender novas linguagens Entender a importncia da implementao - Gerenciamento de memria: Fortran x C (Cray) - Recursividade x Iterao Capacidade de projetar novas linguagens - Quem projeta novas linguagens (ns)? - Interface uma linguagem? 1 - Porque estudar linguagens?
  • Slide 17
  • 17 Aumento da capacidade de expressar idias Maior conhecimento para escolha de linguagens Capacidade para aprender novas linguagens Entender a importncia da implementao - Gerenciamento de memria: Fortran x C (Cray) - Recursividade x Iterao Capacidade de projetar novas linguagens - Quem projeta novas linguagens (ns)? - Interface uma linguagem? Avano da computao - O que guia a escolha de uma linguagem? - Fortran x Algol - C++ x Java - Java ser Cobol do sculo XXI? 1 - Porque estudar linguagens?
  • Slide 18
  • 18 2 - Domnios para as linguagens Aplicaes cientficas Aplicaes comerciais Inteligncia artificial Programao de sistemas Linguagens de scripting Propsitos especiais
  • Slide 19
  • 19 Aplicaes cientficas - Estruturas de dados: vetores e matrizes - Principal concorrente: Assembly (eficincia) - FORTRAN (dcada de 50 e 60) - Existe alguma outra linguagem cientfica? - Fsicos usam FORTRAN - CESUP: Principal linguagem = FORTRAN 2 - Domnios para as linguagens
  • Slide 20
  • 20 Aplicaes cientficas - Estruturas de dados: vetores e matrizes - Principal concorrente: Assembly (eficincia) - FORTRAN (dcada de 50 e 60) - Existe alguma outra linguagem cientfica? - Fsicos usam FORTRAN - CESUP: Principal linguagem = FORTRAN Aplicaes comerciais - COBOL (dcada de 60) - Planilhas eletrnicas - Sistemas da Banco de Dados 2 - Domnios para as linguagens
  • Slide 21
  • 21 2 - Domnios para as linguagens Inteligncia Artificial - Processamento simblico - Listas encadeadas x Matrizes - Capacidade de criar e executar cdigo novo (assert/retract no Prolog) - Primeira linguagem: LISP (dcada de 60) - Linguagem Prolog (dcada de 70) LPA (Logic Programming Associates Ltda)
  • Slide 22
  • 22 Inteligncia Artificial - Processamento simblico - Listas encadeadas x Matrizes - Capacidade de criar e executar cdigo novo (assert/retract no Prolog) - Primeira linguagem: LISP (dcada de 60) - Linguagem Prolog (dcada de 70) LPA (Logic Programming Associates Ltda) Programao de Sistemas (software bsico) - Linguagem Assembly - Linguagem C (baixo nvel, eficiente, sem restries de segurana) 2 - Domnios para as linguagens
  • Slide 23
  • 23 2 - Domnios para as linguagens Scripting - Lista de comandos (scripts) - Shells do Unix - BATs do DOS - Linguagens de scripting x Outras linguagens Propsitos especiais
  • Slide 24
  • 24 3 - Avaliao de Linguagens Legibilidade Capacidade de escrita Confiabilidade Custo
  • Slide 25
  • 25 Legibilidade - Codificao x Manuteno 3 - Avaliao de Linguagens
  • Slide 26
  • 26 Legibilidade - Codificao x Manuteno - Simplicidade global Linguagem grande: usamos um subset (APIS em Java) Multiplicidade de recursos (incremento de variveis em C) Sobrecarga (soma de elementos e OO) 3 - Avaliao de Linguagens
  • Slide 27
  • 27 Legibilidade - Codificao x Manuteno - Simplicidade global Linguagem grande: usamos um subset (APIS em Java) Multiplicidade de recursos (incremento de variveis em C) Sobrecarga (soma de elementos e OO) - Ortogonalidade Pascal e C: Passagem de vetores sempre por referncia Facilitada nas linguagens declarativas (Prolog, Lisp, etc) 3 - Avaliao de Linguagens
  • Slide 28
  • 28 Legibilidade - Codificao x Manuteno - Simplicidade global Linguagem grande: usamos um subset (APIS em Java) Multiplicidade de recursos (incremento de variveis em C) Sobrecarga (soma de elementos e OO) - Ortogonalidade Pascal e C: Passagem de vetores sempre por referncia Facilitada nas linguagens declarativas (Prolog, Lisp, etc) - Instrues de controle: Banimento do GOTO e estruturao 3 - Avaliao de Linguagens
  • Slide 29
  • 29 Legibilidade - Codificao x Manuteno - Simplicidade global Linguagem grande: usamos um subset (APIS em Java) Multiplicidade de recursos (incremento de variveis em C) Sobrecarga (soma de elementos e OO) - Ortogonalidade Pascal e C: Passagem de vetores sempre por referncia Facilitada nas linguagens declarativas (Prolog, Lisp, etc) - Instrues de controle: Banimento do GOTO e estruturao - Tipos de dados: Tipo booleano em C (0 = FALSE) 3 - Avaliao de Linguagens
  • Slide 30
  • 30 Legibilidade - Codificao x Manuteno - Simplicidade global Linguagem grande: usamos um subset (APIS em Java) Multiplicidade de recursos (incremento de variveis em C) Sobrecarga (soma de elementos e OO) - Ortogonalidade Pascal e C: Passagem de vetores sempre por referncia Facilitada nas linguagens declarativas (Prolog, Lisp, etc) - Instrues de controle: Banimento do GOTO e estruturao - Tipos de dados: Tipo booleano em C (0 = FALSE) - Sintaxe (tamanho de identificadores, etc) 3 - Avaliao de Linguagens
  • Slide 31
  • 31 3 - Avaliao de Linguagens Capacidade de escrita - Contexto do domnio de problema-alvo
  • Slide 32
  • 32 3 - Avaliao de Linguagens Capacidade de escrita - Contexto do domnio de problema-alvo - Ortogonalidade
  • Slide 33
  • 33 3 - Avaliao de Linguagens Capacidade de escrita - Contexto do domnio de problema-alvo - Ortogonalidade - Abstrao: Processos (subprogramas) e Dados (EDs) TADs como base para Objetos
  • Slide 34
  • 34 3 - Avaliao de Linguagens Capacidade de escrita - Contexto do domnio de problema-alvo - Ortogonalidade - Abstrao: Processos (subprogramas) e Dados (EDs) TADs como base para Objetos - Expressividade: A++ mais expressivo que A := A + 1 ?
  • Slide 35
  • 35 3 - Avaliao de Linguagens Confiabilidade - Verificao de tipos Pascal x C C++ x Jada
  • Slide 36
  • 36 3 - Avaliao de Linguagens Confiabilidade - Verificao de tipos Pascal x C C++ x Jada - Manipulao de excees Abertura de arquivos em Pascal: Assign/Reset/Rewrite Java: Try/Catch/Finally
  • Slide 37
  • 37 3 - Avaliao de Linguagens Confiabilidade - Verificao de tipos Pascal x C C++ x Jada - Manipulao de excees Abertura de arquivos em Pascal: Assign/Reset/Rewrite Java: Try/Catch/Finally - Aliasing Perigoso C: UNIONS e Ponteiros
  • Slide 38
  • 38 3 - Avaliao de Linguagens Custo - Treinamento de programadores
  • Slide 39
  • 39 3 - Avaliao de Linguagens Custo - Treinamento de programadores - Escrita de programas na linguagem
  • Slide 40
  • 40 3 - Avaliao de Linguagens Custo - Treinamento de programadores - Escrita de programas na linguagem - Ambientes de programao: Turbo Pascal, JCreator (Java), etc
  • Slide 41
  • 41 3 - Avaliao de Linguagens Custo - Treinamento de programadores - Escrita de programas na linguagem - Ambientes de programao: Turb