Domínios de Programação
-
Upload
lesley-dyer -
Category
Documents
-
view
28 -
download
1
description
Transcript of Domínios de Programação
![Page 1: Domínios de Programação](https://reader030.fdocument.pub/reader030/viewer/2022020307/56813566550346895d9cced6/html5/thumbnails/1.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020307/56813566550346895d9cced6/html5/thumbnails/2.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020307/56813566550346895d9cced6/html5/thumbnails/3.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020307/56813566550346895d9cced6/html5/thumbnails/4.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020307/56813566550346895d9cced6/html5/thumbnails/5.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020307/56813566550346895d9cced6/html5/thumbnails/6.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020307/56813566550346895d9cced6/html5/thumbnails/7.jpg)
Critérios de Avaliação de Linguagens
• Legibilidade
• Facilidade de Escrita (“writability”)
• Confiabilidade
• Custo
![Page 8: Domínios de Programação](https://reader030.fdocument.pub/reader030/viewer/2022020307/56813566550346895d9cced6/html5/thumbnails/8.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020307/56813566550346895d9cced6/html5/thumbnails/9.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020307/56813566550346895d9cced6/html5/thumbnails/10.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020307/56813566550346895d9cced6/html5/thumbnails/11.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020307/56813566550346895d9cced6/html5/thumbnails/12.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020307/56813566550346895d9cced6/html5/thumbnails/13.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020307/56813566550346895d9cced6/html5/thumbnails/14.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020307/56813566550346895d9cced6/html5/thumbnails/15.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020307/56813566550346895d9cced6/html5/thumbnails/16.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020307/56813566550346895d9cced6/html5/thumbnails/17.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020307/56813566550346895d9cced6/html5/thumbnails/18.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020307/56813566550346895d9cced6/html5/thumbnails/19.jpg)
“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](https://reader030.fdocument.pub/reader030/viewer/2022020307/56813566550346895d9cced6/html5/thumbnails/20.jpg)
Métodos de Implementação
• Compilação
• Interpretação Pura
• Sistemas híbridos
![Page 21: Domínios de Programação](https://reader030.fdocument.pub/reader030/viewer/2022020307/56813566550346895d9cced6/html5/thumbnails/21.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020307/56813566550346895d9cced6/html5/thumbnails/22.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020307/56813566550346895d9cced6/html5/thumbnails/23.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020307/56813566550346895d9cced6/html5/thumbnails/24.jpg)
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