1 / 24

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. Domínios de Programação Aplicações Científicas. Estruturas de dados simples: matrizes

lesley-dyer
Download Presentation

Domínios de Programação

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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

  2. Domínios de ProgramaçãoAplicaçõ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

  3. Domínios de ProgramaçãoAplicaçõ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)

  4. Domínios de ProgramaçãoInteligência Artificial • Computações simbólicas, e não numéricas • LISP • PROLOG

  5. Domínios de ProgramaçãoProgramaçã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)

  6. Domínios de ProgramaçãoLinguagens 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

  7. Critérios de Avaliação de Linguagens • Legibilidade • Facilidade de Escrita (“writability”) • Confiabilidade • Custo

  8. Crité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

  9. Critérios de Avaliação de LinguagensFacilidade 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

  10. Critérios de Avaliação de LinguagensConfiabilidade • Verificação de tipos • Tratamento de exceções • Aliasing • Pouca legibilidade ou pouca facilidade de escrita tendem a gerar programas pouco confiáveis

  11. Critérios de Avaliação de LinguagensCusto • Treinamento • Escrita de código • Compilação • Execução • Implementação • Manutenção • da má confiabilidade

  12. Influências sobre o Projeto de Linguagens • Arquitetura dos computadores • Metodologias de programação ao longo da história

  13. Influências sobre o Projeto de LinguagensArquitetura 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 linguagensimperativas

  14. Influências sobre o Projeto de LinguagensArquitetura dos computadores Modelo da arquitetura de Von Newmann MEMÓRIA resultados (“piped”) GARGALO de Von Newmann instruções e dados (“piped”) ULA UC E/S CPU

  15. Influências sobre o Projeto de LinguagensArquitetura 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”

  16. Influências sobre o Projeto de LinguagensArquitetura dos computadores EXECUÇÃO • inicialize o program counter • repeat forever • fetch • decode • execute

  17. Influências sobre o Projeto de LinguagensMetodologias 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

  18. 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

  19. “Trade-offs” no Projeto de Linguagens • Confiabilidade vs. Custo de manutenção • Expressividade vs. Legibilidade • Flexibilidade vs. Segurança

  20. Métodos de Implementação • Compilação • Interpretação Pura • Sistemas híbridos

  21. Comp. FORTRAN Interface de computadores virtuais Comp.Pascal Comp. C Sistema Operacional Interp. LISP Interpretador de Macroinstruções Comp. Ada Núcleo da Máquina Interp. comandos SO Assembler ...

  22. O processo de compilação Programa-fonte alto nível Analisador Léxico tokens Analisador Sintático parse trees Tabela de símbolos Analisador Semântico Gerador de código intermediário Otimização cód. intermediário Gerador de código ling. máquina - baixo nível dados de entrada Máquina Resultados

  23. 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...

  24. 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

More Related