Plano de Aula
Razes para Estudar Conceitos de LPs Domnios de Programao Critrios para Avaliar LPs Consideraes sobre os critrios de avaliao Influncias sobre o projeto de LPs Categorias de Linguagens Mtodos de Implementao
UFPB/CCT/DSC
idias
A profundidade com que pensamos influenciada pelo poder expressivo da linguagem com a qual nos comunicamos; difcil para as pessoas expressar estruturas que elas no conseguem descrever; Programadores sofrem o mesmo problema!!!
UFPB/CCT/DSC Paradigmas de Linguagens de Programao 3
UFPB/CCT/DSC
UFPB/CCT/DSC
linguagens
Computao est em evoluo contnua Processo de aprender uma nova linguagem mais difcil para quem no conhece os conceitos gerais de LPs
UFPB/CCT/DSC
da implementao
Permite usar a linguagem mais inteligentemente, pois estar avaliando as conseqncias de suas decises
UFPB/CCT/DSC
linguagens
Um dia voc poder precisar projetar uma Mesmo que no, a experincia enriquecedora
UFPB/CCT/DSC
Se as pessoas responsveis pela escolha de LPs forem melhor informadas, talvez linguagens melhores sejam utilizadas
UFPB/CCT/DSC
Domnios de Programao
Aplicaes Cientficas
UFPB/CCT/DSC
10
Domnios de Programao
Aplicaes Comerciais
Incio da dcada de 50 1960: COBOL (At hoje...) Produo de relatrios, armazenamento de informaes, etc. Muitas funes se tornaram aplicaes bem definidas e consolidadas:
planilhas, folhas de pagamento, etc.
UFPB/CCT/DSC Paradigmas de Linguagens de Programao 11
Domnios de Programao
Inteligncia Artificial
Primeira Linguagem:
LISP (funcional) - 1959
Dialeto hbrido:
OBJLOG (lgica + OO)
UFPB/CCT/DSC
12
Domnios de Programao
Programao de Sistemas
Softwares do sistema:
Sistema Operacional.
UFPB/CCT/DSC
13
Domnios de Programao
Linguagens de Scripts
Consiste em se agrupar uma lista de comandos em um arquivo a ser executado Auxiliam na execuo de tarefas do dia-a-dia Perl
crescimento sensvel de importncia com a WWW desenvolvimento de aplicaes que usam CGI
Shell (UNIX)
UFPB/CCT/DSC Paradigmas de Linguagens de Programao 14
Domnios de Programao
Linguagens de Propsito Especfico
UFPB/CCT/DSC
15
caractersticas das diversas LPs, observando-se os impactos sobre o processo de desenvolvimento de software
Precisamos de Critrios...
UFPB/CCT/DSC
16
UFPB/CCT/DSC
17
Legibilidade
Facilidade com que um programa pode ser
lido e entendido Conseqncia da Crise de Software Booch (1970) props o conceito de ciclo de vida Deve ser considerada no contexto do domnio do problema
UFPB/CCT/DSC Paradigmas de Linguagens de Programao 18
Legibilidade
Simplicidade
Afeta fortemente a legibilidade Linguagens com um grande nmero de componentes bsicos so mais difceis de aprender do que aquelas com um nmero reduzido Alguns programadores aprendem apenas um subconjunto da linguagem
UFPB/CCT/DSC Paradigmas de Linguagens de Programao 19
Legibilidade
Multiplicidade de Caractersticas:
count = count + 1; count++; count += 1; ++count;
UFPB/CCT/DSC
20
Legibilidade
Ortogonalidade
Um conjunto de construes pode ser combinado para formar um outro conjunto Apontadores em C (apontam p/ qualquer tipo) Adio em Assembly (adio separada) Ortogonalidade demais pode causar problemas:
ALGOL 68
UFPB/CCT/DSC Paradigmas de Linguagens de Programao 21
Legibilidade
Declaraes de Controle
Um programa que pode ser lido (quase) linearmente do incio ao fim muito mais fcil de entender do que um programa repleto de desvios (gotos)
FORTRAN BASIC
Estruturas de controle (if-then-else, while, for) permitem uma leitura mais compreensvel
UFPB/CCT/DSC Paradigmas de Linguagens de Programao 22
Legibilidade
Tipos e Estruturas de Dados
A possibilidade de definir estruturas e tipos de dados tambm afeta a legibilidade INT fim_de_arquivo = 1; BOOLEAN fim_de_arquivo = true;
while( not fim_de_arquivo == 1) while( not fim_de_arquivo )
UFPB/CCT/DSC Paradigmas de Linguagens de Programao 23
Legibilidade
Sintaxe
UFPB/CCT/DSC
24
Legibilidade
Palavras Especiais:
PASCAL (begin-end) FORTRAN 90 e ADA (if-endif) FORTRAN 90 permite que se defina variveis com nomes do e end if if > then then then = else else else = endif endif
Forma e significado
A aparncia deve ao menos parcialmente indicar o propsito. static em C;
UFPB/CCT/DSC Paradigmas de Linguagens de Programao 25
Escritabilidade
Indica o quo facilmente uma linguagem
pode ser usada em um determinado domnio de problema Deve ser considerada no contexto do domnio do problema da linguagem COBOL versus C
UFPB/CCT/DSC
26
Escritabilidade
Simplicidade e Ortogonalidade
Se uma linguagem tiver um grande nmero de construes, programadores podem no se familiarizar com todas
Mal uso de algumas e desuso de outras
Escritabilidade
Suporte para Abstrao
Possibilidade de se definir e usar estruturas complexas sem que os aspectos internos de iplementao dessas estruturas sejam vistos pelo programador
Implementao de uma rvore Binria em FORTRAN, Pascal e em Java
UFPB/CCT/DSC Paradigmas de Linguagens de Programao 28
Escritabilidade
Expressividade
UFPB/CCT/DSC
29
Confiabilidade
Um programa dito confivel se ele
UFPB/CCT/DSC
30
Confiabilidade
Checagem de Tipos
Verifica se os valores atribudos aos tipos esto de acordo com os definidos Quando uma linguagem faz uma verificao rigorosa de seus tipos, diz-se que ela fortemente tipada. Java e Pascal C
UFPB/CCT/DSC Paradigmas de Linguagens de Programao 31
Confiabilidade
Manipulao de Excees
a possibilidade de um programa interceptar um erro em tempo de execuo, tomar as medidas adequadas e continuar (ou no) a execuo Java, C++ e Ada Pascal, C e FORTRAN
UFPB/CCT/DSC
32
Confiabilidade
Aliasing
a possibilidade de se ter duas ou mais referncias para um mesmo local da memria uma tcnica perigosa de programao
C (apontadores e Unions) Java no possui essa propriedade
UFPB/CCT/DSC
33
Confiabilidade
Legibilidade e Escritabilidade
Quanto mais fcil de escrever um programa, maior a probabilidade dele estar certo Quanto mais fcil de escrever um programa, maior a facilidade de corrigi-lo e de (re-) escrev-lo
UFPB/CCT/DSC
34
Custo
uma funo de algumas outras
caractersticas
1) Custo de Treinamento
ortogonalidade e simplicidade
Custo
4) Custo de executar programas
projeto da linguagem
UFPB/CCT/DSC
36
Critrios so subjetivos
legibilidade, escritabilidade, etc.
ALU
UC
UFPB/CCT/DSC
38
UFPB/CCT/DSC
39
UFPB/CCT/DSC
40
Categorias de Linguagens
Imperativas Funcionais Orientadas a Objeto
Lgicas
UFPB/CCT/DSC
41
Imperativas
Do Latim: Imperare (significa comandar) Baseiam-se em comandos que atualizam
variveis armazenadas na memria Em princpio, podem ser implementadas de forma eficiente (devido arquitetura) Domnio: Aplicaes comerciais, S.O., etc. Exemplos: Pascal, C, COBOL, etc.
UFPB/CCT/DSC Paradigmas de Linguagens de Programao 42
Funcionais
Baseiam-se em princpios da matemtica
Interao (Imperativa) x Recurso Domnio: Matemtica, I.A. Exemplos: LISP, ML, Scheme, CLOS, etc.
UFPB/CCT/DSC
43
Orientadas a Objetos
Baseiam-se no conceito de classes Atributos + Mtodos = Classe; Hoje aplica-se a praticamente todos os
UFPB/CCT/DSC
44
Lgicas
Baseiam-se na noo de que um programa
implementa uma relao ao invs de um mapeamento Domnio: Inteligncia Artificial Exemplo: Prolog
UFPB/CCT/DSC
45
Mtodos de Implementao
Compilao Interpretao Pura Implementao Hbrida
UFPB/CCT/DSC
46
Compilao
Consiste em se traduzir um programa fonte
para um programa em linguagem de mquina (ou montagem), que pode ser executado (quase) diretamente Execuo rpida Fortran, C, COBOL, Pascal, etc.
UFPB/CCT/DSC
47
Compilao
Otimizao Dados
Cdigo Fonte
Analisador Lxico
Analisador Sinttico
Gerador de Cdigo
Computador
UFPB/CCT/DSC
48
Interpretao Pura
Executa (interpreta) os comandos do
cdigo fonte Simula uma mquina virtual Debugging mais simples 10 a 100 vezes mais lenta que a compilao Scripts Shell, Prolog, etc.
UFPB/CCT/DSC Paradigmas de Linguagens de Programao 49
Interpretao Pura
Cdigo Fonte
Interpretador
Resultados
UFPB/CCT/DSC
50
Implementao Hbrida
Utiliza as duas abordagens anteriores Traduz um programa fonte - de alto nvel -
para um programa intermedirio de fcil interpretao Java (atualmente j possvel compilar), Perl, etc.
UFPB/CCT/DSC
51
Implementao Hbrida
Dados
Cdigo Fonte
Analisador Lxico
Analisador Sinttico
Interpretador
Resultados
UFPB/CCT/DSC
52