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

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 of Domínios de Programação

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