domínios de programação

24
Domínios de Programação • Aplicações Científicas • Aplicações Comerciais • Inteligência Artificial • Programação de Sistemas • Linguagens de Scripting • Linguagens para Propósitos Especiais

Upload: lesley-dyer

Post on 02-Jan-2016

29 views

Category:

Documents


1 download

DESCRIPTION

Domínios de Programação. Aplicações Científicas Aplicações Comerciais Inteligência Artificial Programação de Sistemas Linguagens de Scripting Linguagens para Propósitos Especiais. Domínios de Programação Aplicações Científicas. Estruturas de dados simples: matrizes - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Domínios de Programação

Domínios de Programação

• Aplicações Científicas

• Aplicações Comerciais

• Inteligência Artificial

• Programação de Sistemas

• Linguagens de Scripting

• Linguagens para Propósitos Especiais

Page 2: Domínios de Programação

Domínios de Programação Aplicações Científicas

• Estruturas de dados simples: matrizes

• Operações aritméticas em ponto flutuante

• FORTRAN, ALGOL 60

• Nenhuma linguagem é significativamente melhor do que o FORTRAN até hoje

Page 3: Domínios de Programação

Domínios de Programação Aplicações Comerciais

• Facilidade para produzir relatórios

• Exemplo: COBOL (60)

• Há pouco desenvolvimento nas linguagens de aplicação comercial, além do que foi feito para COBOL (usado ainda hoje)

Page 4: Domínios de Programação

Domínios de Programação Inteligência Artificial

• Computações simbólicas, e não numéricas

• LISP

• PROLOG

Page 5: Domínios de Programação

Domínios de Programação Programação de Sistemas

• Desenvolvimento de software básico (sistemas operacionais)

• Linguagens para programação de sistemas exigem execução rápida

• PL/S (IBM), BLISS (Digital), Extended ALGOL (Burroughs)

• Unix e C (poucas restrições de segurança)

Page 6: Domínios de Programação

Domínios de Programação Linguagens de Scripting

• Script é uma lista de comandos em um arquivo, para serem executados “em lote”

• sh

• ksh (Bell Labs)

• awk (Aho, Wienberger e Kernighan)

• tcl

• Perl

Page 7: Domínios de Programação

Critérios de Avaliação de Linguagens

• Legibilidade

• Facilidade de Escrita (“writability”)

• Confiabilidade

• Custo

Page 8: Domínios de Programação

Critérios de Avaliação de Linguagens

Legibilidade• Simplicidade: poucos componentes básicos, cuidado

com a multiplicidade de recursos, overloading inteligente de operadores

• Ortogonalidade: conjunto consistente de regras para combinar construções primitivas, com poucas exceções

• Instruções de controle

• Tipos e estruturas de dados

• Sintaxe

Page 9: Domínios de Programação

Critérios de Avaliação de Linguagens Facilidade de escrita

• Simplicidade: grande número de construções diferentes leva a dificuldades para escrever programas

• Suporte para abstração: capacidade de definir estruturas/operações complexas ignorando detalhes.

Abrstração pode ser em dados e em código. • Expressividade: adequação das formas de especificar

computações

Page 10: Domínios de Programação

Critérios de Avaliação de Linguagens Confiabilidade

• Verificação de tipos

• Tratamento de exceções

• Aliasing

• Pouca legibilidade ou pouca facilidade de escrita tendem a gerar programas pouco confiáveis

Page 11: Domínios de Programação

Critérios de Avaliação de Linguagens Custo

• Treinamento

• Escrita de código

• Compilação

• Execução

• Implementação

• Manutenção

• da má confiabilidade

Page 12: Domínios de Programação

Influências sobre o Projeto de Linguagens

• Arquitetura dos computadores

• Metodologias de programação ao longo da história

Page 13: Domínios de Programação

Influências sobre o Projeto de Linguagens

Arquitetura dos computadores• Últimos 40 anos: imensa maioria das

linguagens de programação foi projetada em função da arquitetura Von Neumann

• As linguagens baseadas nesta arquitetura são denominadas linguagens imperativas

Page 14: Domínios de Programação

Influências sobre o Projeto de Linguagens

Arquitetura dos computadores

Modelo da arquitetura de Von Newmann

MEMÓRIA

ULA UC

CPU

E/S

instruções e dados (“piped”)

resultados(“piped”)

GARGALO de Von Newmann

Page 15: Domínios de Programação

Influências sobre o Projeto de Linguagens

Arquitetura dos computadores• Execução de código numa máquina Von

Newmann: ciclo “fetch-execute”

• Programas: residem na memória mas são executados na CPU (cada instrução é transferida da memória para o processador)

• Endereço da próxima instrução: mantido num registro chamado “program counter”

Page 16: Domínios de Programação

Influências sobre o Projeto de Linguagens

Arquitetura dos computadores

EXECUÇÃO

• inicialize o program counter

• repeat forever– fetch– decode– execute

Page 17: Domínios de Programação

Influências sobre o Projeto de Linguagens

Metodologias de Programação• Final anos 60: Programação Estruturada

• Anos 70: projeto “top-down”, refinamento, modularidade, verificação de tipos, mais instruções de controle

• Final anos 70: abstração de dados

• Anos 80: programação orientada a objetos

• Anos 90: concorrência, internet

Page 18: Domínios de Programação

Categorias de Linguagens

• Imperativas: Pascal, C...– Ordem específica das instruções é importante

• Orientadas a Objetos: C++, Delphi, Java...– Hierarquização, classificação, extrema

modularização/abstração (código e dados)

• Funcionais (LISP) e Lógicas (Prolog)– Baseadas na computação de funções ou regras

de inferência. A recursão é um conceito natural nestas linguagens

Page 19: Domínios de Programação

“Trade-offs” no Projeto de Linguagens

• Confiabilidade vs. Custo de manutenção

• Expressividade vs. Legibilidade

• Flexibilidade vs. Segurança

Page 20: Domínios de Programação

Métodos de Implementação

• Compilação

• Interpretação Pura

• Sistemas híbridos

Page 21: Domínios de Programação

Interface de computadores virtuais

Núcleo daMáquina

Interpretador de Macroinstruções

Sistema Operacional

Comp.PascalComp.

FORTRAN

Interp.LISP

Comp.C

Comp.Ada

Assembler

Interp.comandos

SO

...

Page 22: Domínios de Programação

O processo de compilaçãoPrograma-fonte

Analisador Léxico

Analisador Sintático

Analisador SemânticoGerador de código intermediário

Gerador de código

Máquina

OtimizaçãoTabela de símbolos

Resultados

tokens

parse trees

cód.intermediário

alto nível

ling. máquina - baixo níveldados deentrada

Page 23: Domínios de Programação

Interpretação pura

• Programas são interpretados por outro programa (interpretador), sem conversão

• Interpretador = simulador de software, máquina virtual cujas instruções são um programa em ling. alto nível

• vantagem: facilidade de depuração

• desvantagem: lentidão, muito espaço de memória

• Exemplos: Linguagens de scripting, LISP...

Page 24: Domínios de Programação

Sistemas Híbridos

• Perl

• Implementações iniciais de Java– código intermediário de Java = “código de bytes”– portabilidade– cód. bytes + interpretador = Java Virtual Machine– hoje: tradução do cód. bytes p/ cód. máquina– applets Java = são baixados em código de bytes