A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

1 Aula 2 Aspectos Preliminares Universidade do Vale do Rio dos Sinos

Apresentações semelhantes


Apresentação em tema: "1 Aula 2 Aspectos Preliminares Universidade do Vale do Rio dos Sinos"— Transcrição da apresentação:

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

2 2 SUMÁRIO

3 3 SUMÁRIO 1 – Porque estudar linguagens?

4 4 SUMÁRIO 1 – Porque estudar linguagens? 2 – Domínios paras as linguagens

5 5 SUMÁRIO 1 – Porque estudar linguagens? 2 – Domínios paras as linguagens 3 – Avaliação de linguagens

6 6 SUMÁRIO 1 – Porque estudar linguagens? 2 – Domínios paras as linguagens 3 – Avaliação de linguagens 4 – Influências sobre o projeto

7 7 SUMÁRIO 1 – Porque estudar linguagens? 2 – Domínios paras as linguagens 3 – Avaliação de linguagens 4 – Influências sobre o projeto 5 – Categarias de linguagens

8 8 SUMÁRIO 1 – Porque estudar linguagens? 2 – Domínios paras as linguagens 3 – Avaliação de linguagens 4 – Influências sobre o projeto 5 – Categarias de linguagens 6 – Negociações no projeto de linguagens

9 9 SUMÁRIO 1 – Porque estudar linguagens? 2 – Domínios paras as linguagens 3 – Avaliação de linguagens 4 – Influências sobre o projeto 5 – Categarias de linguagens 6 – Negociações no projeto de linguagens 7 – Métodos de implementação

10 10 SUMÁRIO 1 – Porque estudar linguagens? 2 – Domínios paras as linguagens 3 – Avaliação de linguagens 4 – Influências sobre o projeto 5 – Categarias de linguagens 6 – Negociações no projeto de linguagens 7 – Métodos de implementação 8 – Ambientes de programação

11 11 1 - Porque estudar linguagens?

12 12 Aumento da capacidade de expressar idéias 1 - Porque estudar linguagens?

13 13 Aumento da capacidade de expressar idéias Maior conhecimento para escolha de linguagens 1 - Porque estudar linguagens?

14 14 Aumento da capacidade de expressar idéias Maior conhecimento para escolha de linguagens Capacidade para aprender novas linguagens 1 - Porque estudar linguagens?

15 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?

16 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?

17 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?

18 18 2 - 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

19 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 linguagens

20 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 linguagens

21 21 2 - 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)

22 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 linguagens

23 23 2 - 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

24 24 3 - Avaliação de Linguagens Legibilidade Capacidade de escrita Confiabilidade Custo

25 25 Legibilidade - Codificação x Manutenção 3 - Avaliação de Linguagens

26 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 Linguagens

27 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 Linguagens

28 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 Linguagens

29 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 Linguagens

30 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 Linguagens

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

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

33 33 3 - 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

34 34 3 - 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 ?

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

36 36 3 - 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

37 37 3 - 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

38 38 3 - Avaliação de Linguagens Custo - Treinamento de programadores

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

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

41 41 3 - 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)

42 42 3 - 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

43 43 3 - 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

44 44 4 - Influências sobre o projeto Arquitetura do computador Metodologia de programação

45 45 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

46 46 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

47 47 5 - Categorias de Linguagens (paradigmas) Paradigma Imperativo Paradigma Orientado a Objetos Paradigma em Lógica Paradigma Funcional Multiparadigma

48 48 6 - Negociações no projeto de linguagens Negociação entre os critérios de avaliação

49 49 6 - Negociações no projeto de linguagens Negociação entre os critérios de avaliação Critérios conflitantes:

50 50 6 - 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

51 51 6 - 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

52 52 7 - Métodos de Implementação Compiladores Interpretação Sistemas híbridos

53 53 7 - 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

54 54 7 - 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

55 55 7 - 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)

56 56 8 - Ambientes de programação Ferramentas para programação Java

57 57 8 - Ambientes de programação Ferramentas para programação - Editor - Compilador - Ligador - Depuração Java

58 58 8 - Ambientes de programação Ferramentas para programação - Editor - Compilador - Ligador - Depuração Java - Compilador e Máquina Virtual - Diversos ambientes (JCreator, Kawa, etc)


Carregar ppt "1 Aula 2 Aspectos Preliminares Universidade do Vale do Rio dos Sinos"

Apresentações semelhantes


Anúncios Google