Anda di halaman 1dari 52

Paradigmas de Linguagens de Programao

Parte 1 Introduo ao Estudo de Linguagens de Programao (LPs)

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

Paradigmas de Linguagens de Programao

Razes para Estudar Conceitos de LPs


Aumentar a capacidade de expressar

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

Razes para Estudar Conceitos de LPs


Permitir simular estruturas de outras

linguagens naquela que estiver usando


Index em FORTRAN, substring em C subprograma em Pascal, funo sem retorno em C

UFPB/CCT/DSC

Paradigmas de Linguagens de Programao

Razes para Estudar Conceitos de LPs


Aumentar o conhecimento para escolher

linguagens de programao apropriadas


Programadores tendem a continuar usando a linguagem que lhes mais familiar, mesmo que esta no seja a mais adequada

UFPB/CCT/DSC

Paradigmas de Linguagens de Programao

Razes para Estudar Conceitos de LPs


Melhorar a habilidade de aprender novas

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

Paradigmas de Linguagens de Programao

Razes para Estudar Conceitos de LPs


Melhorar o entendimento da importncia

da implementao

Permite usar a linguagem mais inteligentemente, pois estar avaliando as conseqncias de suas decises

UFPB/CCT/DSC

Paradigmas de Linguagens de Programao

Razes para Estudar Conceitos de LPs


Melhorar a habilidade de projetar novas

linguagens

Um dia voc poder precisar projetar uma Mesmo que no, a experincia enriquecedora

UFPB/CCT/DSC

Paradigmas de Linguagens de Programao

Razes para Estudar Conceitos de LPs


Avano da Computao como um todo

Nem sempre a linguagem mais utilizada a melhor


ALGOL 60 versus FORTRAN

Se as pessoas responsveis pela escolha de LPs forem melhor informadas, talvez linguagens melhores sejam utilizadas

UFPB/CCT/DSC

Paradigmas de Linguagens de Programao

Domnios de Programao
Aplicaes Cientficas

Estruturas de dados simples Operaes em ponto-flutuante Primeira linguagem:


FORTRAN (Formula Translator)

UFPB/CCT/DSC

Paradigmas de Linguagens de Programao

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

Linguagem mais usada:


PROLOG

Dialeto hbrido:
OBJLOG (lgica + OO)

UFPB/CCT/DSC

Paradigmas de Linguagens de Programao

12

Domnios de Programao
Programao de Sistemas

Softwares do sistema:
Sistema Operacional.

Eficincia na execuo Caractersticas de baixo nvel Linguagem mais utilizada: C


Quase todo o Unix escrito nela

UFPB/CCT/DSC

Paradigmas de Linguagens de Programao

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

Atendem a um determinado domnio de problema


GPSS (General Purpose Statistic Simulation) RPG (Report Generator) ANS.1 (Abstract Sintaxe One)

UFPB/CCT/DSC

Paradigmas de Linguagens de Programao

15

Critrios Para Avaliar LPs


Faz-se necessrio avaliar as

caractersticas das diversas LPs, observando-se os impactos sobre o processo de desenvolvimento de software

Precisamos de Critrios...

UFPB/CCT/DSC

Paradigmas de Linguagens de Programao

16

Critrios Para Avaliar LPs


Legibilidade Aplicabilidade Escritabilidade Custos

UFPB/CCT/DSC

Paradigmas de Linguagens de Programao

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;

Sobrecarga de Operadores Simplicidade demais pode ser um problema:


Assembly (reduzido nmero de estruturas)

UFPB/CCT/DSC

Paradigmas de Linguagens de Programao

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

A forma dos elementos tem um efeito significativo sobre a linguagem


Identificadores
FORTRAN 77 (6 caracteres) BASIC ANSI (1 caractere ou 1 caractere seguido de 1 nmero) Java (no tem limite)

UFPB/CCT/DSC

Paradigmas de Linguagens de Programao

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

Paradigmas de Linguagens de Programao

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

Ortogonalidade demais pode prejudicar a escritabilidade


UFPB/CCT/DSC Paradigmas de Linguagens de Programao 27

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

Pode se referir a diversas caractersticas


count++; for (C, C++, Java) (Pascal, C)

UFPB/CCT/DSC

Paradigmas de Linguagens de Programao

29

Confiabilidade
Um programa dito confivel se ele

executa de acordo com suas especificaes sob quaisquer circunstncias

UFPB/CCT/DSC

Paradigmas de Linguagens de Programao

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

Paradigmas de Linguagens de Programao

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

Paradigmas de Linguagens de Programao

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

Paradigmas de Linguagens de Programao

34

Custo
uma funo de algumas outras

caractersticas

1) Custo de Treinamento
ortogonalidade e simplicidade

2) Custo de escrever programas na linguagem


escritabilidade

3) Custo de compilar programas


UFPB/CCT/DSC Paradigmas de Linguagens de Programao 35

Custo
4) Custo de executar programas
projeto da linguagem

5) Custo do sistema de implementao 6) Custo da confiabilidade pobre 7) Custo de manuteno


muitas outras caractersticas, sobretudo a legibilidade

UFPB/CCT/DSC

Paradigmas de Linguagens de Programao

36

Consideraes sobre os Critrios de Avaliao

Pode haver outros critrios:


portabilidade, generalidade, definio, etc.

Critrios so subjetivos
legibilidade, escritabilidade, etc.

Critrios tm valores diferentes, dependendo da perspectiva:


implementadores, usurios, projetistas
UFPB/CCT/DSC Paradigmas de Linguagens de Programao 37

Influncias no Projeto de LPs


Arquitetura do Computador Arquitetura de Von Neumann influenciou fortemente a adoo de linguagens imperativas
Memria

Resultados das Operaes

Instrues e dados UCP

ALU

UC

UFPB/CCT/DSC

Paradigmas de Linguagens de Programao

38

Influncias no Projeto de LPs


Devido Arquitetura de Von Neumann as

caractersticas centrais das linguagens imperativas so:


variveis clulas de memria atribuies operaes sequenciamento

UFPB/CCT/DSC

Paradigmas de Linguagens de Programao

39

Influncias no Projeto de LPs


Metodologias de Programao

orientao a processos orientao a dados

UFPB/CCT/DSC

Paradigmas de Linguagens de Programao

40

Categorias de Linguagens
Imperativas Funcionais Orientadas a Objeto

Lgicas

UFPB/CCT/DSC

Paradigmas de Linguagens de Programao

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

para realizar computaes


Funes

Interao (Imperativa) x Recurso Domnio: Matemtica, I.A. Exemplos: LISP, ML, Scheme, CLOS, etc.

UFPB/CCT/DSC

Paradigmas de Linguagens de Programao

43

Orientadas a Objetos
Baseiam-se no conceito de classes Atributos + Mtodos = Classe; Hoje aplica-se a praticamente todos os

domnios Exemplos: Java, C++, Simula 67, etc.

UFPB/CCT/DSC

Paradigmas de Linguagens de Programao

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

Paradigmas de Linguagens de Programao

45

Mtodos de Implementao
Compilao Interpretao Pura Implementao Hbrida

Interpretao de Cdigo Armazenado

UFPB/CCT/DSC

Paradigmas de Linguagens de Programao

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

Paradigmas de Linguagens de Programao

47

Compilao
Otimizao Dados

Cdigo Fonte

Analisador Lxico

Analisador Sinttico

Gerador de Cod. Interm. (e Analisador Semntico)

Gerador de Cdigo

Computador

Resultados Tabela de Smbolos

UFPB/CCT/DSC

Paradigmas de Linguagens de Programao

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

Paradigmas de Linguagens de Programao

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

Paradigmas de Linguagens de Programao

51

Implementao Hbrida

Dados

Cdigo Fonte

Analisador Lxico

Analisador Sinttico

Gerador de Cdigo. Intermedirio

Interpretador

Resultados

UFPB/CCT/DSC

Paradigmas de Linguagens de Programao

52

Anda mungkin juga menyukai