Baixe o app para aproveitar ainda mais
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++
Compartilhar