Buscar

Aspectos Introdutórios

Prévia do material em texto

Click to edit Master title style
Click to edit Master subtitle style
ISBN 0-321-19362-8
Capítulo 1
Aspectos Preliminares
1-*
Tópicos
Motivação
Domínios de Programação
Critérios de Avaliação de Linguagem 
Influências sobre Projetos de Linguagem
Categorias de Linguagem
Custo/Benefício em Projetos de Linguagem
Métodos de Implementação
Ambientes de Programação
1-*
Motivação: Por que estudar Linguagens de Programação ?
Aumentar a capacidade de expressar idéias
Maior embasamento para a escolha de linguagens apropriadas
Aumentar a capacidade para aprender novas linguagens
Entender melhor a importância da implementação
Melhorar a capacidade de projetar novas linguagens
Aumento global da computação
1-*
Domínios de Programação
Aplicações científicas
Necessitam grande número de computações aritméticas com números reais
Aplicações comerciais
Produzem relatórios, usam números decimais e manipulam textos
Inteligência artificial
Usa computações simbólicas em vez de numéricas
Programação de sistemas (software básico)
Necessita eficiência devido ao uso contínuo
Linguagens de Scripting 
Colocam uma lista de comandos em um arquivos para serem executados
Linguagens de propósitos especiais
1-*
Critérios de Avaliação de Linguagens
Legibilidade
Critério mais importante
Características que contribuem para legibilidade:
Simplicidade global
Muitos componentes básicos é ruim
Mais de uma maneira de realizar uma operação é ruim
Ortogonalidade
Torna as linguagens fáceis de leitura e aprendizagem
O signficado de um recurso da linguagem é independente do contexto
Um conjunto relativamente pequeno de construções primitivas podem ser combinadas em um número relativamente pequeno de maneiras para construir as estruturas de dados e controle da linguagem
Qualquer combinação possível das construções primitivas é aceita 
Falta de ortogonalidade acarreta exceções às regras da linguagem
1-*
Critérios de Avaliação de Linguagens
Características da legibilidade (continuação)
Instruções de controle
Tipos de dados e estruturas
Considerações sobre a sintaxe
Tamanho dos indentificadores
Palavras especiais (reservadas)
Forma e significado
1-*
Critérios de Avaliação de Linguagens
Capacidade de Escrita (Writability)
Características:
Simplicidade e ortogonalidade
Suporte para abstração
Expressividade
Confiabilidade 
Características:
Verificação de tipos
Manipulação de exceções
Apelidos
Legibilidade e capacidade de escrita
1-*
Critérios de Avaliação de Linguagens
Custo
Categorias
Custo do treinamento de programadores para usar a linguagem
Custo para escrever programas (*)
Custo para compilar programas
Custo para executar programas
Custo do sistema de implementação da linguagem
Custo da má confiabilidade (*)
Custo da manutenção de programas (*)
Outros: portabilidade, generalidade e boa definição (documento definindo a linguagem) 
1-*
Influências sobre Projeto de Linguagem
Arquitetura de computadores : Von Neumann 
Em parte , linguagens imperativas são usadas por causa da arquitetura de von Neumann 
Dados e programas são armazenados na mesma memória
A memória é separada da CPU
Instruções e dados são canalizados (piped) da memória para a CPU
Base para linguagens imperativas 
Variáveis modelam as células de memória
Instruções de atribuição modelam o piping
Forma iterativa de repetição (eficiente)
1-*
Arquitetura de Von Neumann
1-*
Influências sobre Projeto de Linguagem
Metodologias de programação
Anos 50 e início dos 60 : Aplicações simples, preocupação sobre eficiência da máquina
Final dos anos 60 : Eficiência das pessoas tornou-se importante; legibilidade, estruturas de controle melhores
Programação estruturada
Projeto top-down e refinamento passo a passo
Final dos anos 70: Programas orientados para o processo para orientados a dados 
Abstração de dados
Meio dos anos 80: Programação orientada a objeto
1-*
Categorias de Linguagem
Imperativas
Características principais são variáveis, expressões de atribuição e iterações
C, Pascal
Funcionais
A computação é baseada no cálculo de funções 
LISP, Scheme
1-*
Categorias de Linguagem 
Lógicas
Baseadas em regras
Regras são especificadas sem ordem especial
Prolog, OWL
Orientadas a Objeto
Encapsula : dados + processos 
Herança e criação de tipos dinâmicos 
Crescimento das linguagens imperativas
C++, Java
1-*
Custo/Benefício em Projetos de Linguagem
Confiabilidade vs. custo de execução
Legibilidade vs. capacidade de escrita 
Flexibilidade vs. segurança
1-*
Visualização em Camadas de um Computador
1-*
Métodos de Implementação
Compilação
Traduz linguagem de alto nível para código de máquina
Tradução lenta
Execução rápida
1-*
Processo de Compilação
1-*
Métodos de Implementação
Interpretação pura
Não há tradução
Execução lenta
Tornando-se rara
1-*
Interpretação Pura
1-*
Métodos de Implementação
Sistemas de implementação híbridos
Custo de tradução pequeno
Velocidade de execução média
1-*
Sistemas de Implementação Híbridos
1-*
Ambientes de Programação
Coleção de ferramentas usadas no desenvolvimento de software 
UNIX
Sistema operacional antigo com uma coleção de ferramentas
Borland JBuilder
Ambiente integrado de desenvolvimento para Java
Microsoft Visual Studio.NET
Um grande, complexo ambiente visual
Usado para desenvolver programas em C#, Visual BASIC.NET, Jscript, J#, ou C++

Continue navegando