Вы находитесь на странице: 1из 40

Aspectos Preliminares Sobre Linguagens de Programao

Regina Clia Coelho


rccoelho@unifesp.br

Plano de Ensino

Regina Clia Coelho

Reviso
Aula Passada:
Definio de Paradigmas Definio de Linguagem Definio de Linguagem de Programao Componentes de uma Linguagem de Programao Caractersticas de Linguagem de Programao Motivos para Estudar Linguagens de Programao Domnios de Programao

Plano de Ensino

Regina Clia Coelho

Reviso
Aula Passada:
Critrios de Avaliao

Legibilidade

Hoje

Capacidade de Escrita Confiabilidade Custo

Influncias sobre o Projeto da Linguagem Categorias de Linguagem Mtodos de Implementao

Plano de Ensino

Regina Clia Coelho

Capacidade de Escrita
Medida da facilidade de usar a linguagem para criar programas no domnio do problema Forma de expressar um problema de forma natural, sem desviar a ateno do programador para truques da linguagem. Caractersticas de Legibilidade afetam tambm a capacidade de escrita Caractersticas que contribuem para a capacidade de escrita
Simplicidade e Ortogonalidade Suporte para a abstrao Expressividade (poder de expresso)

Plano de Ensino

Regina Clia Coelho

Simplicidade e Ortogonalidade
Um grande nmero de construes:
Leva ao desconhecimento de algumas delas Uso inadequado de alguns recursos Desuso de recursos mais elegantes ou eficientes Uso acidental de recursos desconhecidos, com resultados imprevisveis

Plano de Ensino

Regina Clia Coelho

Suporte para Abstrao


a capacidade de definir e usar estruturas ou operaes complicadas de forma a ignorar os detalhes
Ajuda a dominar a complexidade dos problemas

Abstrao feita em duas categorias:


Processo Reduz complexidade do cdigo
Exemplo:

O uso de subprogramas simplifica a escrita do cdigo, tornando-o mais curto.

Dados Reduz a complexidade das estruturas de dados


Exemplo:

Em Fortran, a implementao de uma rvore binria de inteiros necessita de 3 vetores, dois para ndices e outro para o contedo C++, basta definir o dado e os ponteiros para os ns-filhos em uma classe. Um nico objeto desta classe define o n raiz.

Em

Plano de Ensino

Regina Clia Coelho

Expressividade
Existncia de operadores poderosos permitindo que muita coisa seja feita com pouco cdigo
Exemplos em C
Operador ++ For ao invs de while

Construes simples para operaes frequentes.

Plano de Ensino

Regina Clia Coelho

Confiabilidade
Indica se um programa se comporta de acordo com as especificaes sob todas condies Significa escrever programas garantindo que se atinja o efeito desejado. Caractersticas que contribuem para a confiabilidade:
Verificao de tipos Manipulao de excees Aliasing Legibilidade e Capacidade de Escrita

Plano de Ensino

Regina Clia Coelho

Verificao de tipos
Verifica se existe erros de tipo. Pode ser feita em:
Tempo de compilao Tempo de execuo

Podem ser verificados os limites de vetores


Exemplo: Pascal, Ada e Java exigem que o ndice esteja dentro da faixa C no verifica limites. ndices fora da faixa podem acessar outras posies de memria

Plano de Ensino

Regina Clia Coelho

Manipulao de excees
a capacidade de um programa:
Interceptar erros em tempo de execuo Por em prtica medidas corretivas Prosseguir na execuo

Exemplos:
Ada, C++, Java permitem manipular excees C e Fortran no dispem de manipulao de excees

Plano de Ensino

Regina Clia Coelho

Aliasing (apelidos)
ter dois ou mais mtodos ou nomes para fazer referncia mesma posio de memria.
Exemplo: Duas variveis de ponteiro apontando para a mesma posio de memria.

A existncia de aliasing prejudicial confiabilidade. A maioria das linguagens permitem algum tipo de aliasing.

Plano de Ensino

Regina Clia Coelho

Legibilidade e Capacidade de escrita


Um programa escrito em linguagem inadequada para rea usar mtodos no naturais
Tem maior probabilidade de no estar correto

A legibilidade afeta a escrita e a manuteno, prejudicando a confiabilidade

Plano de Ensino

Regina Clia Coelho

Custo
O custo total de se usar determinada linguagem afetado pelos custos de:
Treinar os programadores
Funo da simplicidade e da ortogonalidade Linguagens mais poderosas Quanto

costumam ser mais difceis de aprender

maior a complexidade e quanto mais recursos contm a linguagem maior o grau de dificuldade de aprendizado

Escrever programas na linguagem (programao)


Funo da capacidade de escrita Costuma ser o fator motivador para desenvolver novas linguagens Est

ligado aos fatores de simplicidade: quanto menor o nmero de componentes bsicos, mais fcil a leitura e a programao do cdigo fonte

Plano de Ensino

Regina Clia Coelho

Custo
Compilar os programas
Precisa

haver compiladores que realizem a sua tarefa num tempo adequado

Executar os programas
Otimizao

a palavra chave. Trata-se de preocupao em desenvolver um cdigo otimizado, com execuo mais rpida. A gerao de cdigos compilados ineficientes podem tornar o custo de execuo elevado

Sistema de implementao da linguagem


So os sistemas que permitem compilar/executar o programa Se

as licenas forem caras ou necessitarem de hardware caro, pode afetar popularidade da linguagem

Plano de Ensino

Regina Clia Coelho

Custo
M confiabilidade
Testes realizados na linguagem visam confiana. Se Se

o sistema falhar em sistemas crticos, pode resultar em custo elevado falhar em sistemas no crticos, pode elevar custos em termos de aes judiciais

Manuteno dos programas


Afetada A

principalmente pela legibilidade (quanto mais fcil escrever o programa, mais fcil torna-se a manuteno )

manuteno feita frequentemente por pessoas que no desenvolveram o programa O custo de manuteno costuma estar entre duas a quatro vezes o custo de desenvolvimento

Plano de Ensino

Regina Clia Coelho

Custo
Os fatores mais considerveis em termos de custos de linguagem so o desenvolvimento do programa, manuteno e confiabilidade, sendo as duas ltimas mais onerosas.

Plano de Ensino

Regina Clia Coelho

Outros Critrios de Avaliao


Portabilidade
Quo facilmente um programa pode ser movido de implementao para outra uma

Generalidade
Seu uso em uma gama de aplicaes

Boa definio
A preciso e a completeza da definio oficial da linguagem

Existncia de boas ferramentas


Compiladores Debuggers

Plano de Ensino

Regina Clia Coelho

Influncias sobre o Projeto da Linguagem


Arquitetura do Computador
Linguagens so desenvolvidas com base na arquitetura mais usada, conhecida como arquitetura von Neumann

Metodologias de programao
Novas metodologias de desenvolvimento de software Novos paradigmas de programao Novas linguagens de programao

Plano de Ensino

Regina Clia Coelho

Influncia da Arquitetura do Computador


Modelo da arquitetura de Von Newmann

MEMRIA
resultados (piped) instrues e dados (piped)

ULA CPU

UC

E/S

Plano de Ensino

Regina Clia Coelho

Influncia da Arquitetura do Computador


Programas: residem na memria mas so executados na CPU (cada instruo transferida da memria para o processador) Execuo de cdigo numa mquina Von Newmann: ciclo fetch-execute (buscarexecutar) Endereo da prxima instruo: mantido num registro chamado contador de programa Execuo
inicialize o program counter repeat forever fetch add counter program decode execute

Plano de Ensino

Regina Clia Coelho

Influncia da Arquitetura do Computador


Dados e programas armazenados na memria Memria separada da CPU Instrues e dados trafegam da memria para a CPU e vice-versa As Linguagens Imperativas so as dominantes por causa do uso da arquitetura von Neumann.
Recursos centrais das linguagens imperativas: variveis modelam as clulas de memria, as instrues de atribuio e a forma iterativa de repetio (mtodo mais eficiente dessa arquitetura).

Plano de Ensino

Regina Clia Coelho

Influncia sobre as Metodologias de Programao


Mudana no custo do hardware para o software
Hardware: custo diminuiu Desenvolvimento de Software: custo aumentou, sem aumento significante na produtividade do programador

Dcada de 1950 e incio da dcada de 1960


Aplicaes simples Preocupaes com a eficincia da mquina

Plano de Ensino

Regina Clia Coelho

Influncia sobre as Metodologias de Programao


Final da dcada de 1960
A eficincia das pessoas se tornou um ponto importante Legibilidade, melhores estruturas de controle Programao estruturada Projeto top-down e refinamento passo-a-passo

Final da dcada de 1970


Orientado para processo orientada a dados Abstrao de dados

Plano de Ensino

Regina Clia Coelho

Influncia sobre as Metodologias de Programao


Meados da dcada de 1980
Programao orientada a objetos Abstrao de dados + herana + polimorfismo

Anos 90
Concorrncia Internet

Plano de Ensino

Regina Clia Coelho

Categorias das Linguagens


Imperativa
Caractersticas centrais: variveis, estruturas de atribuio e iterao Ordem especfica das instrues importante Exemplos: C, Pascal, Fortran

Orientada a objetos (parente prximo das linguagens imperativas)


Hierarquizao (herana), extrema modularizao/abstrao (cdigo e dados) Exemplos: Java, C++, Smalltalk

Plano de Ensino

Regina Clia Coelho

Categorias das Linguagens


Funcional
Baseadas na computao de funes ou regras de inferncia. A recurso um conceito natural nestas linguagens Exemplos: LISP, Scheme, Haskell

Lgica
Baseado em regras (regras so especificadas sem ordem pr- determinada) Exemplo: Prolog

Marcao
No especificam computao, so usadas para definir o layout de informao em documentos Web Exemplos: XHTML, XML
Plano de Ensino Regina Clia Coelho

Mtodos de Implementao
Definem como programas na linguagem podem ser executados no cdigo compreendido pelo processador O processador s reconhece cdigo de mquina Compilao
Programas so traduzidos para linguagem de mquina

Plano de Ensino

Regina Clia Coelho

Mtodos de Implementao
Interpretao pura
Programas so lido e interpretados por outro programa

Sistemas de Implementao Hbridos


compilado para um cdigo intermedirio (pequeno custo de traduo)

Plano de Ensino

Regina Clia Coelho

Compilao
Traduz programas em alto-nvel (linguagem fonte) em cdigo de mquina (linguagem de mquina) Traduo lenta, execuo rpida O processo de compilao possui vrias fases:
Anlise lxica
Rene

os caracteres do programa-fonte em unidades lxicas (identificadores, palavras especiais, operadores, smbolos de pontuao)

Plano de Ensino

Regina Clia Coelho

Compilao
Anlise sinttica
Transforma

unidades lxicas em rvores de anlises (parse trees), as quais representam a estrutura sinttica do programa

Anlise semntica
Gera

cdigo intermedirio (algumas vezes so a prpria linguagem de montagem)

Gerao de cdigo
Cdigo de mquina gerado

Plano de Ensino

Regina Clia Coelho

O Processo de Compilao
Programa fonte Analisador Lxico
Unidades lxicas

Programa executvel
Linguagem de mquina

Tabela de Smbolos

Gerador de Cdigo

Analisador Sinttico

rvores de anlises

Analisador Semntico

Cdigo intermedirio

Otimizador de cdigo

Plano de Ensino

Regina Clia Coelho

Interpretao Pura
Nenhuma traduo feita Cada comando lido e executado pelo interpretador Facilita a implementao de programas (erros de execuo so rapidamente mostrados) Execuo lenta
10 a 100 vezes mais lenta do que programas compilados

Plano de Ensino

Regina Clia Coelho

Interpretao Pura
Geralmente requer mais espao
A tabela de smbolos deve estar presente

raro em linguagens de alto-nvel, mas h excees:


JavaScript puramente interpretado

Plano de Ensino

Regina Clia Coelho

Sistemas de Implementao Hbridos


Faz uma compilao para um cdigo intermedirio O cdigo intermedirio interpretado Os comandos do cdigo intermedirio so interpretados com facilidade mais rpido que interpretao pura

Plano de Ensino

Regina Clia Coelho

Sistemas de Implementao Hbridos


O cdigo fonte no precisa ser disponibilizado Exemplos
Programas em Perl so parcialmente compilados para detectar erros antes da interpretao Implementaes iniciais de Java eram hbridas
A

forma intermediria, bytecode, provia portabilidade para qualquer mquina que tivesse a Mquina Virtual Java

Plano de Ensino

Regina Clia Coelho

Sistemas de Implementao Hbridos

Plano de Ensino

Regina Clia Coelho

Resumo
O estudo de linguagens de programao vlido por uma srie de motivos:
Aumenta nossa capacidade de usar diferentes construes para escrever programas Habilita-nos a escolher linguagens de forma mais inteligente Ajuda-nos a aprender novas linguagens mais facilmente

Os critrios mais importantes para a avaliao de linguagens:


Legibilidade, capacidade de escrita, confiabilidade e custo

As principais influncias no projeto de uma linguagem tm sido a arquitetura da mquina e as metodologias de projeto de software Os principais mtodos para implementar linguagens so:
compilao, interpretao pura e implementao hbrida
Plano de Ensino Regina Clia Coelho

Exerccio
Escreva uma avaliao de pelo menos 3 linguagens de programao usando os critrios descritos (legibilidade, capacidade de escrita e confiabilidade). Faa um resumo ao final caractersticas de cada uma. comparando as

Plano de Ensino

Regina Clia Coelho

Slides
Prof. Erwin Doescher (UNIFESP)

Plano de Ensino

Regina Clia Coelho

Referncia
Captulo 1:
Sebesta, R. W. Conceitos de Linguagens de Programao, 5. Edio, Editora Bookman, 2003.

Plano de Ensino

Regina Clia Coelho

Вам также может понравиться