Title: Dom
1Domí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
2Domí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
3Domí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)
4Domínios de Programação Inteligência Artificial
- Computações simbólicas, e não numéricas
- LISP
- PROLOG
5Domí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)
6Domí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
7Critérios de Avaliação de Linguagens
- Legibilidade
- Facilidade de Escrita (writability)
- Confiabilidade
- Custo
8Critérios de Avaliação de LinguagensLegibilidade
- 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
9Crité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
10Crité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
11Critérios de Avaliação de Linguagens Custo
- Treinamento
- Escrita de código
- Compilação
- Execução
- Implementação
- Manutenção
- da má confiabilidade
12Influências sobre o Projeto de Linguagens
- Arquitetura dos computadores
- Metodologias de programação ao longo da história
13Influências sobre o Projeto de LinguagensArquitet
ura 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
14Influências sobre o Projeto de LinguagensArquitet
ura dos computadores
- Modelo da arquitetura de Von Newmann
MEMÓRIA
resultados (piped)
instruções e dados (piped)
GARGALO de Von Newmann
ULA
UC
E/S
CPU
15Influências sobre o Projeto de LinguagensArquitet
ura 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
16Influências sobre o Projeto de LinguagensArquitet
ura dos computadores
- EXECUÇÃO
- inicialize o program counter
- repeat forever
- fetch
- decode
- execute
17Influências sobre o Projeto de LinguagensMetodolo
gias 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
18Categorias 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
19Trade-offs no Projeto de Linguagens
- Confiabilidade vs. Custo de manutenção
- Expressividade vs. Legibilidade
- Flexibilidade vs. Segurança
20Métodos de Implementação
- Compilação
- Interpretação Pura
- Sistemas híbridos
21Interface de computadores virtuais
Comp. FORTRAN
Comp.Pascal
Comp. C
Sistema Operacional
Interp. LISP
Interpretador de Macroinstruções
Comp. Ada
Núcleo da Máquina
Interp. comandos SO
Assembler
...
22O processo de compilação
Programa-fonte
alto nível
Analisador Léxico
tokens
Analisador Sintático
parse trees
Analisador Semântico Gerador de código
intermediário
Tabela de símbolos
Otimização
cód. intermediário
Gerador de código
ling. máquina - baixo nível
dados de entrada
Máquina
Resultados
23Interpretaçã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...
24Sistemas 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