Anda di halaman 1dari 22

Captulo 1

Aspectos Preliminares

ISBN 0-321-19362-8

Tpicos
Motivao Domnios de Programao Critrios de Avaliao de Linguagem Influncias sobre Projetos de Linguagem Categorias de Linguagem Custo/Benefcio em Projetos de Linguagem Mtodos de Implementao Ambientes de Programao

1-2

Motivao: Por que estudar Linguagens de Programao ?


Aumentar a capacidade de expressar idias Maior embasamento para a escolha de linguagens apropriadas Aumentar a capacidade para aprender novas linguagens Entender melhor a importncia da implementao Melhorar a capacidade de projetar novas linguagens Aumento global da computao
1-3

Domnios de Programao
Aplicaes cientficas
Necessitam grande nmero de computaes aritmticas com nmeros reais

Aplicaes comerciais
Produzem relatrios, usam nmeros decimais e manipulam textos

Inteligncia artificial
Usa computaes simblicas em vez de numricas

Programao de sistemas (software bsico)


Necessita eficincia devido ao uso contnuo

Linguagens de Scripting
Colocam uma lista de comandos em um arquivos para serem executados

Linguagens de propsitos especiais


1-4

Critrios de Avaliao de Linguagens


Legibilidade
Critrio mais importante Caractersticas que contribuem para legibilidade:
Simplicidade global
Muitos componentes bsicos ruim Mais de uma maneira de realizar uma operao ruim

Ortogonalidade
Torna as linguagens fceis de leitura e aprendizagem O signficado de um recurso da linguagem independente do contexto Um conjunto relativamente pequeno de construes primitivas podem ser combinadas em um nmero relativamente pequeno de maneiras para construir as estruturas de dados e controle da linguagem Qualquer combinao possvel das construes primitivas aceita Falta de ortogonalidade acarreta excees s regras da linguagem

1-5

Critrios de Avaliao de Linguagens


Caractersticas da legibilidade (continuao)
Instrues de controle Tipos de dados e estruturas Consideraes sobre a sintaxe
Tamanho dos indentificadores Palavras especiais (reservadas) Forma e significado

1-6

Critrios de Avaliao de Linguagens


Capacidade de Escrita (Writability)
Caractersticas:
Simplicidade e ortogonalidade Suporte para abstrao Expressividade

Confiabilidade
Caractersticas:
Verificao de tipos Manipulao de excees Apelidos Legibilidade e capacidade de escrita
1-7

Critrios de Avaliao 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 implementao da linguagem Custo da m confiabilidade (*) Custo da manuteno de programas (*) Outros: portabilidade, generalidade e boa definio (documento definindo a linguagem)
1-8

Influncias sobre Projeto de Linguagem


Arquitetura de computadores : Von Neumann Em parte , linguagens imperativas so usadas por causa da arquitetura de von Neumann
Dados e programas so armazenados na mesma memria A memria separada da CPU Instrues e dados so canalizados (piped) da memria para a CPU Base para linguagens imperativas
Variveis modelam as clulas de memria Instrues de atribuio modelam o piping Forma iterativa de repetio (eficiente)

1-9

Arquitetura de Von Neumann

1-10

Influncias sobre Projeto de Linguagem


Metodologias de programao
Anos 50 e incio dos 60 : Aplicaes simples, preocupao sobre eficincia da mquina Final dos anos 60 : Eficincia das pessoas tornouse importante; legibilidade, estruturas de controle melhores
Programao estruturada Projeto top-down e refinamento passo a passo

Final dos anos 70: Programas orientados para o processo para orientados a dados
Abstrao de dados

Meio dos anos 80: Programao orientada a objeto


1-11

Categorias de Linguagem
Imperativas
Caractersticas principais so variveis, expresses de atribuio e iteraes C, Pascal

Funcionais
A computao baseada no clculo de funes LISP, Scheme

1-12

Categorias de Linguagem
Lgicas
Baseadas em regras Regras so especificadas sem ordem especial Prolog, OWL

Orientadas a Objeto
Encapsula : dados + processos Herana e criao de tipos dinmicos Crescimento das linguagens imperativas C++, Java

1-13

Custo/Benefcio em Projetos de Linguagem


Confiabilidade vs. custo de execuo Legibilidade vs. capacidade de escrita Flexibilidade vs. segurana

1-14

Visualizao em Camadas de um Computador

1-15

Mtodos de Implementao
Compilao
Traduz linguagem de alto nvel para cdigo de mquina Traduo lenta Execuo rpida

1-16

Processo de Compilao

1-17

Mtodos de Implementao
Interpretao pura
No h traduo Execuo lenta Tornando-se rara

1-18

Interpretao Pura

1-19

Mtodos de Implementao
Sistemas de implementao hbridos
Custo de traduo pequeno Velocidade de execuo mdia

1-20

Sistemas de Implementao Hbridos

1-21

Ambientes de Programao
Coleo de ferramentas usadas no desenvolvimento de software UNIX
Sistema operacional antigo com uma coleo 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++
1-22