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

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 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 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 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 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 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 Avaliação de Linguagens Capacidade de escrita - Contexto do domínio de problema-alvo

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

33 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 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 Avaliação de Linguagens Confiabilidade - Verificação de tipos Pascal x C C++ x Jada

36 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 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 Avaliação de Linguagens Custo - Treinamento de programadores

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

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

41 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 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 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 Influências sobre o projeto Arquitetura do computador Metodologia de programação

45 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 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 Categorias de Linguagens (paradigmas) Paradigma Imperativo Paradigma Orientado a Objetos Paradigma em Lógica Paradigma Funcional Multiparadigma

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

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

50 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 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 Métodos de Implementação Compiladores Interpretação Sistemas híbridos

53 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 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 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 Ambientes de programação Ferramentas para programação Java

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

58 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