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

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

Aula 2 Aspectos Preliminares

Apresentações semelhantes


Apresentação em tema: "Aula 2 Aspectos Preliminares"— Transcrição da apresentação:

1 Aula 2 Aspectos Preliminares
Universidade do Vale do Rio dos Sinos Aula 2 Aspectos Preliminares < Página da Disciplina > <Endereço do Professor >

2 SUMÁRIO

3 SUMÁRIO 1 – Porque estudar linguagens?

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

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

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 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 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 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 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 1 - Porque estudar linguagens?

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

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

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

15 1 - Porque estudar linguagens?
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

16 1 - Porque estudar linguagens?
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?

17 1 - Porque estudar linguagens?
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?

18 Aplicações científicas Aplicações comerciais Inteligência artificial
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 2 - Domínios para as linguagens
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

20 2 - Domínios para as linguagens
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

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 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) Programação de Sistemas (software básico) - Linguagem Assembly - Linguagem C (baixo nível, eficiente, sem restrições de segurança)

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 Legibilidade Capacidade de escrita Confiabilidade Custo
3 - Avaliação de Linguagens Legibilidade Capacidade de escrita Confiabilidade Custo

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

26 3 - Avaliação de Linguagens
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)

27 3 - Avaliação de Linguagens
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)

28 3 - Avaliação de Linguagens
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

29 3 - Avaliação de Linguagens
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)

30 3 - Avaliação de Linguagens
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)

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

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

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

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

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

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

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

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

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

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

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

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

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 "Aula 2 Aspectos Preliminares"

Apresentações semelhantes


Anúncios Google