58
1 Aula 2 Aula 2 Aspectos Preliminares Aspectos Preliminares Universidade do Vale do Rio dos S < Página da Disciplina > www.inf.unisinos.br/~barbosa www.inf.unisinos.br/~barbosa <Endereço do Professor > [email protected] [email protected]

1 Aula 2 Aspectos Preliminares Universidade do Vale do Rio dos Sinos barbosa [email protected]

Embed Size (px)

Citation preview

Page 1: 1 Aula 2 Aspectos Preliminares Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

1

Aula 2Aula 2Aspectos PreliminaresAspectos Preliminares

Universidade do Vale do Rio dos Sinos

< Página da Disciplina >

www.inf.unisinos.br/~barbosawww.inf.unisinos.br/~barbosa

<Endereço do Professor >

[email protected]@exatas.unisinos.br

Page 2: 1 Aula 2 Aspectos Preliminares Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

2

SUMÁRIOSUMÁRIO

Page 3: 1 Aula 2 Aspectos Preliminares Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

3

SUMÁRIOSUMÁRIO1 – Porque estudar linguagens?

Page 4: 1 Aula 2 Aspectos Preliminares Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

4

SUMÁRIOSUMÁRIO1 – Porque estudar linguagens?2 – Domínios paras as linguagens

Page 5: 1 Aula 2 Aspectos Preliminares Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

5

SUMÁRIOSUMÁRIO1 – Porque estudar linguagens?2 – Domínios paras as linguagens3 – Avaliação de linguagens

Page 6: 1 Aula 2 Aspectos Preliminares Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

6

SUMÁRIOSUMÁRIO1 – Porque estudar linguagens?2 – Domínios paras as linguagens3 – Avaliação de linguagens4 – Influências sobre o projeto

Page 7: 1 Aula 2 Aspectos Preliminares Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

7

SUMÁRIOSUMÁRIO1 – Porque estudar linguagens?2 – Domínios paras as linguagens3 – Avaliação de linguagens4 – Influências sobre o projeto5 – Categarias de linguagens

Page 8: 1 Aula 2 Aspectos Preliminares Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

8

SUMÁRIOSUMÁRIO1 – Porque estudar linguagens?2 – Domínios paras as linguagens3 – Avaliação de linguagens4 – Influências sobre o projeto5 – Categarias de linguagens6 – Negociações no projeto de linguagens

Page 9: 1 Aula 2 Aspectos Preliminares Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

9

SUMÁRIOSUMÁRIO1 – Porque estudar linguagens?2 – Domínios paras as linguagens3 – Avaliação de linguagens4 – Influências sobre o projeto5 – Categarias de linguagens6 – Negociações no projeto de linguagens7 – Métodos de implementação

Page 10: 1 Aula 2 Aspectos Preliminares Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

10

SUMÁRIOSUMÁRIO1 – Porque estudar linguagens?2 – Domínios paras as linguagens3 – Avaliação de linguagens4 – Influências sobre o projeto5 – Categarias de linguagens6 – Negociações no projeto de linguagens7 – Métodos de implementação8 – Ambientes de programação

Page 11: 1 Aula 2 Aspectos Preliminares Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

11

1 - Porque estudar linguagens?1 - Porque estudar linguagens?

Page 12: 1 Aula 2 Aspectos Preliminares Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

12

• Aumento da capacidade de expressar idéias1 - Porque estudar linguagens?1 - Porque estudar linguagens?

Page 13: 1 Aula 2 Aspectos Preliminares Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

13

• Aumento da capacidade de expressar idéias• Maior conhecimento para escolha de linguagens

1 - Porque estudar linguagens?1 - Porque estudar linguagens?

Page 14: 1 Aula 2 Aspectos Preliminares Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

14

• Aumento da capacidade de expressar idéias• Maior conhecimento para escolha de linguagens• Capacidade para aprender novas linguagens

1 - Porque estudar linguagens?1 - Porque estudar linguagens?

Page 15: 1 Aula 2 Aspectos Preliminares Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

15

• Aumento da capacidade de expressar idéias• Maior conhecimento para escolha de linguagens• Capacidade para aprender novas linguagens• Entender a importância da implementação - Gerenciamento de memória: Fortran x C (Cray) - Recursividade x Iteração

1 - Porque estudar linguagens?1 - Porque estudar linguagens?

Page 16: 1 Aula 2 Aspectos Preliminares Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

16

• Aumento da capacidade de expressar idéias• Maior conhecimento para escolha de linguagens• Capacidade para aprender novas linguagens• Entender a importância da implementação - Gerenciamento de memória: Fortran x C (Cray) - Recursividade x Iteração• Capacidade de projetar novas linguagens - Quem projeta novas linguagens (nós)? - Interface é uma linguagem?

1 - Porque estudar linguagens?1 - Porque estudar linguagens?

Page 17: 1 Aula 2 Aspectos Preliminares Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

17

• Aumento da capacidade de expressar idéias• Maior conhecimento para escolha de linguagens• Capacidade para aprender novas linguagens• Entender a importância da implementação - Gerenciamento de memória: Fortran x C (Cray) - Recursividade x Iteração• Capacidade de projetar novas linguagens - Quem projeta novas linguagens (nós)? - Interface é uma linguagem?• Avanço da computação - O que guia a escolha de uma linguagem? - Fortran x Algol - C++ x Java - Java será Cobol do século XXI?

1 - Porque estudar linguagens?1 - Porque estudar linguagens?

Page 18: 1 Aula 2 Aspectos Preliminares Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

18

2 - Domínios para as linguagens2 - Domínios para as linguagens

• Aplicações científicas• Aplicações comerciais• Inteligência artificial• Programação de sistemas• Linguagens de scripting • Propósitos especiais

Page 19: 1 Aula 2 Aspectos Preliminares Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

19

• Aplicações científicas - Estruturas de dados: vetores e matrizes - Principal concorrente: Assembly (eficiência) - FORTRAN (década de 50 e 60) - Existe alguma outra linguagem científica? - Físicos usam FORTRAN - CESUP: Principal linguagem = FORTRAN

2 - Domínios para as linguagens2 - Domínios para as linguagens

Page 20: 1 Aula 2 Aspectos Preliminares Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

20

• Aplicações científicas - Estruturas de dados: vetores e matrizes - Principal concorrente: Assembly (eficiência) - FORTRAN (década de 50 e 60) - Existe alguma outra linguagem científica? - Físicos usam FORTRAN - CESUP: Principal linguagem = FORTRAN

• Aplicações comerciais - COBOL (década de 60) - Planilhas eletrônicas - Sistemas da Banco de Dados

2 - Domínios para as linguagens2 - Domínios para as linguagens

Page 21: 1 Aula 2 Aspectos Preliminares Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

21

2 - Domínios para as linguagens2 - Domínios para as linguagens• Inteligência Artificial - Processamento simbólico - Listas encadeadas x Matrizes - Capacidade de criar e executar código novo (assert/retract no Prolog) - Primeira linguagem: LISP (década de 60) - Linguagem Prolog (década de 70) LPA (Logic Programming Associates Ltda)

Page 22: 1 Aula 2 Aspectos Preliminares Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

22

• Inteligência Artificial - Processamento simbólico - Listas encadeadas x Matrizes - Capacidade de criar e executar código novo (assert/retract no Prolog) - Primeira linguagem: LISP (década de 60) - Linguagem Prolog (década de 70) LPA (Logic Programming Associates Ltda)

• Programação de Sistemas (software básico) - Linguagem Assembly - Linguagem C (baixo nível, eficiente, sem restrições de segurança)

2 - Domínios para as linguagens2 - Domínios para as linguagens

Page 23: 1 Aula 2 Aspectos Preliminares Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

23

2 - Domínios para as linguagens2 - Domínios para as linguagens

• Scripting - Lista de comandos (scripts) - Shells do Unix - BATs do DOS - Linguagens de scripting x Outras linguagens • Propósitos especiais

Page 24: 1 Aula 2 Aspectos Preliminares Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

24

3 - Avaliação de Linguagens3 - Avaliação de Linguagens

• Legibilidade• Capacidade de escrita• Confiabilidade• Custo

Page 25: 1 Aula 2 Aspectos Preliminares Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

25

• Legibilidade - Codificação x Manutenção

3 - Avaliação de Linguagens3 - Avaliação de Linguagens

Page 26: 1 Aula 2 Aspectos Preliminares Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

26

• Legibilidade - Codificação x Manutenção - Simplicidade global Linguagem grande: usamos um subset (APIS em Java) Multiplicidade de recursos (incremento de variáveis em C) Sobrecarga (soma de elementos e OO)

3 - Avaliação de Linguagens3 - Avaliação de Linguagens

Page 27: 1 Aula 2 Aspectos Preliminares Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

27

• Legibilidade - Codificação x Manutenção - Simplicidade global Linguagem grande: usamos um subset (APIS em Java) Multiplicidade de recursos (incremento de variáveis em C) Sobrecarga (soma de elementos e OO) - Ortogonalidade Pascal e C: Passagem de vetores sempre por referência Facilitada nas linguagens declarativas (Prolog, Lisp, etc)

3 - Avaliação de Linguagens3 - Avaliação de Linguagens

Page 28: 1 Aula 2 Aspectos Preliminares Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

28

• Legibilidade - Codificação x Manutenção - Simplicidade global Linguagem grande: usamos um subset (APIS em Java) Multiplicidade de recursos (incremento de variáveis em C) Sobrecarga (soma de elementos e OO) - Ortogonalidade Pascal e C: Passagem de vetores sempre por referência Facilitada nas linguagens declarativas (Prolog, Lisp, etc) - Instruções de controle: Banimento do GOTO e estruturação

3 - Avaliação de Linguagens3 - Avaliação de Linguagens

Page 29: 1 Aula 2 Aspectos Preliminares Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

29

• Legibilidade - Codificação x Manutenção - Simplicidade global Linguagem grande: usamos um subset (APIS em Java) Multiplicidade de recursos (incremento de variáveis em C) Sobrecarga (soma de elementos e OO) - Ortogonalidade Pascal e C: Passagem de vetores sempre por referência Facilitada nas linguagens declarativas (Prolog, Lisp, etc) - Instruções de controle: Banimento do GOTO e estruturação - Tipos de dados: Tipo booleano em C (0 = FALSE)

3 - Avaliação de Linguagens3 - Avaliação de Linguagens

Page 30: 1 Aula 2 Aspectos Preliminares Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

30

• Legibilidade - Codificação x Manutenção - Simplicidade global Linguagem grande: usamos um subset (APIS em Java) Multiplicidade de recursos (incremento de variáveis em C) Sobrecarga (soma de elementos e OO) - Ortogonalidade Pascal e C: Passagem de vetores sempre por referência Facilitada nas linguagens declarativas (Prolog, Lisp, etc) - Instruções de controle: Banimento do GOTO e estruturação - Tipos de dados: Tipo booleano em C (0 = FALSE) - Sintaxe (tamanho de identificadores, etc)

3 - Avaliação de Linguagens3 - Avaliação de Linguagens

Page 31: 1 Aula 2 Aspectos Preliminares Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

31

3 - Avaliação de Linguagens3 - Avaliação de Linguagens• Capacidade de escrita - Contexto do domínio de problema-alvo

Page 32: 1 Aula 2 Aspectos Preliminares Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

32

3 - Avaliação de Linguagens3 - Avaliação de Linguagens• Capacidade de escrita - Contexto do domínio de problema-alvo - Ortogonalidade

Page 33: 1 Aula 2 Aspectos Preliminares Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

33

3 - Avaliação de Linguagens3 - Avaliação de Linguagens• Capacidade de escrita - Contexto do domínio de problema-alvo - Ortogonalidade - Abstração: Processos (subprogramas) e Dados (EDs) TADs como base para Objetos

Page 34: 1 Aula 2 Aspectos Preliminares Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

34

3 - Avaliação de Linguagens3 - Avaliação de Linguagens• Capacidade de escrita - Contexto do domínio de problema-alvo - Ortogonalidade - Abstração: Processos (subprogramas) e Dados (EDs) TADs como base para Objetos - Expressividade: A++ mais expressivo que A := A + 1 ?

Page 35: 1 Aula 2 Aspectos Preliminares Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

35

3 - Avaliação de Linguagens3 - Avaliação de Linguagens• Confiabilidade - Verificação de tipos Pascal x C C++ x Jada

Page 36: 1 Aula 2 Aspectos Preliminares Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

36

3 - Avaliação de Linguagens3 - Avaliação de Linguagens• Confiabilidade - Verificação de tipos Pascal x C C++ x Jada - Manipulação de exceções Abertura de arquivos em Pascal: Assign/Reset/Rewrite Java: Try/Catch/Finally

Page 37: 1 Aula 2 Aspectos Preliminares Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

37

3 - Avaliação de Linguagens3 - Avaliação de Linguagens• Confiabilidade - Verificação de tipos Pascal x C C++ x Jada - Manipulação de exceções Abertura de arquivos em Pascal: Assign/Reset/Rewrite Java: Try/Catch/Finally - Aliasing Perigoso C: UNIONS e Ponteiros

Page 38: 1 Aula 2 Aspectos Preliminares Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

38

3 - Avaliação de Linguagens3 - Avaliação de Linguagens• Custo - Treinamento de programadores

Page 39: 1 Aula 2 Aspectos Preliminares Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

39

3 - Avaliação de Linguagens3 - Avaliação de Linguagens• Custo - Treinamento de programadores - Escrita de programas na linguagem

Page 40: 1 Aula 2 Aspectos Preliminares Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

40

3 - Avaliação de Linguagens3 - Avaliação de Linguagens• Custo - Treinamento de programadores - Escrita de programas na linguagem - Ambientes de programação: Turbo Pascal, JCreator (Java), etc

Page 41: 1 Aula 2 Aspectos Preliminares Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

41

3 - Avaliação de Linguagens3 - Avaliação de Linguagens• Custo - Treinamento de programadores - Escrita de programas na linguagem - Ambientes de programação: Turbo Pascal, JCreator (Java), etc - Custos de compilação e execução (máquinas virtuais: JVM, etc)

Page 42: 1 Aula 2 Aspectos Preliminares Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

42

3 - Avaliação de Linguagens3 - Avaliação de Linguagens• Custo - Treinamento de programadores - Escrita de programas na linguagem - Ambientes de programação: Turbo Pascal, JCreator (Java), etc - Custos de compilação e execução (máquinas virtuais: JVM, etc) - Otimização de código

Page 43: 1 Aula 2 Aspectos Preliminares Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

43

3 - Avaliação de Linguagens3 - Avaliação de Linguagens• Custo - Treinamento de programadores - Escrita de programas na linguagem - Ambientes de programação: Turbo Pascal, JCreator (Java), etc - Custos de compilação e execução (máquinas virtuais: JVM, etc) - Otimização de código - Confiabilidade

Page 44: 1 Aula 2 Aspectos Preliminares Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

44

4 - Influências sobre o projeto 4 - Influências sobre o projeto • Arquitetura do computador

• Metodologia de programação

Page 45: 1 Aula 2 Aspectos Preliminares Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

45

4 - Influências sobre o projeto 4 - Influências sobre o projeto • Arquitetura do computador - Arquitetura Von Neumann: Linguagens Imperativas - Máquinas Virtuais como novas arquiteturas - Projeto japonês do computador de V geração

• Metodologia de programação

Page 46: 1 Aula 2 Aspectos Preliminares Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

46

4 - Influências sobre o projeto 4 - Influências sobre o projeto • Arquitetura do computador - Arquitetura Von Neumann: Linguagens Imperativas - Máquinas Virtuais como novas arquiteturas - Projeto japonês do computador de V geração

• Metodologia de programação - Programação não estrutura (GOTOs): BASIC, COBOL, etc - Programação estruturada: COBOL estruturado, Pascal, etc - Programação Orientada a Objetos: C++, Java, etc

Page 47: 1 Aula 2 Aspectos Preliminares Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

47

5 - Categorias de Linguagens (paradigmas)5 - Categorias de Linguagens (paradigmas)

• Paradigma Imperativo• Paradigma Orientado a Objetos• Paradigma em Lógica• Paradigma Funcional• Multiparadigma

Page 48: 1 Aula 2 Aspectos Preliminares Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

48

6 - Negociações no projeto de linguagens6 - Negociações no projeto de linguagens

• Negociação entre os critérios de avaliação

Page 49: 1 Aula 2 Aspectos Preliminares Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

49

6 - Negociações no projeto de linguagens6 - Negociações no projeto de linguagens

• Negociação entre os critérios de avaliação• Critérios conflitantes:

Page 50: 1 Aula 2 Aspectos Preliminares Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

50

6 - Negociações no projeto de linguagens6 - Negociações no projeto de linguagens

• Negociação entre os critérios de avaliação• Critérios conflitantes: • Confiabilidade x Custo de execução - Verificação de tipos em tempo de execução

Page 51: 1 Aula 2 Aspectos Preliminares Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

51

6 - Negociações no projeto de linguagens6 - Negociações no projeto de linguagens

• Negociação entre os critérios de avaliação• Critérios conflitantes: • Confiabilidade x Custo de execução - Verificação de tipos em tempo de execução• Flexibilidade x Segurança - C x Pascal - C++ x Java

Page 52: 1 Aula 2 Aspectos Preliminares Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

52

7 - Métodos de Implementação7 - Métodos de Implementação

• Compiladores

• Interpretação

• Sistemas híbridos

Page 53: 1 Aula 2 Aspectos Preliminares Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

53

7 - Métodos de Implementação7 - Métodos de Implementação

• Compiladores - Análise léxica, Análise sintática e Geração de código

- UNISINOS: Disciplinas específicas• Interpretação

• Sistemas híbridos

Page 54: 1 Aula 2 Aspectos Preliminares Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

54

7 - Métodos de Implementação7 - Métodos de Implementação

• Compiladores - Análise léxica, Análise sintática e Geração de código

- UNISINOS: Disciplinas específicas• Interpretação - Processo de desenvolvimento

- 10 a 100 vezes mais lenta do que a compilação

- Usada em scripts• Sistemas híbridos

Page 55: 1 Aula 2 Aspectos Preliminares Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

55

7 - Métodos de Implementação7 - Métodos de Implementação

• Compiladores - Análise léxica, Análise sintática e Geração de código

- UNISINOS: Disciplinas específicas• Interpretação - Processo de desenvolvimento

- 10 a 100 vezes mais lenta do que a compilação

- Usada em scripts• Sistemas híbridos - Máquinas virtuais - Exemplos: Java (JVM) e Prolog (WAM)

Page 56: 1 Aula 2 Aspectos Preliminares Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

56

8 - Ambientes de programação8 - Ambientes de programação

• Ferramentas para programação

• Java

Page 57: 1 Aula 2 Aspectos Preliminares Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

57

8 - Ambientes de programação8 - Ambientes de programação

• Ferramentas para programação - Editor

- Compilador

- Ligador

- Depuração

• Java

Page 58: 1 Aula 2 Aspectos Preliminares Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

58

8 - Ambientes de programação8 - Ambientes de programação

• Ferramentas para programação - Editor

- Compilador

- Ligador

- Depuração

• Java - Compilador e Máquina Virtual

- Diversos ambientes (JCreator, Kawa, etc)