Você está na página 1de 38

Paradigmas de

Linguagens de
Programação
Faculdade Nova Roma
Cursos de Ciências da Computação (6° Período)
Prof. Adriano Avelar -
Site: www.adrianoavelar.com
Email: edson.avelar@yahoo.com.br

faculdadenovaroma.com.br
Ementa

Introdução às linguagens de programação: conceitos


elementares. Evolução dos conceitos de linguagens de
programação. Atributos semânticos. Tipos de dados: construções
de definição e manipulação de tipos de dados; tipos abstratos de
dados. Subprogramas e recursividade. Linguagens imperativas.
Linguagens funcionais. Linguagens lógicas. Linguagens
Orientadas em objetos. Tratamento de Exceções. Introdução à
Programação Concorrente. Critérios para seleção de linguagens
de programação.

faculdadenovaroma.com.br
Objetivo

Introduzir conceitos e princípios fundamentais de


linguagens de programação
Elementos sintáticos e semânticos
Evolução de linguagens de programação
Visão geral dos paradigmas de linguagens de
programação
Imperativo, Funcional, Orientado a Objetos
Lógico e Orientado a Aspecto
Estratégias para seleção de linguagens de programação
Prática com linguagens de programação especializadas

faculdadenovaroma.com.br
Bibliografia Sugerida

Allen B. Tucker and Robert E. Noonan: “Linguagens de


Programação - Princípios e Paradigmas”. 2º Edição, McGraw
Hill. 2009.
SEBESTA, Robert W. Conceitos de linguagens de programação. 4. ed. Porto Alegre :
Bookman, 2000. xii, 624 p.

GHEZZI, Carlo; JAZAYERI, Mehdi. Programming language concepts. New


York: John Wiley, 1997.

faculdadenovaroma.com.br
Metodologia

O desenvolvimento do conteúdo da disciplina


é feito por meio de aulas expositivas,
apresentação de vídeos, debates
Realização de exercícios (em sala e
extraclasse)
Elaboração de trabalhos práticos.
Troca de Informações através de um grupo de
e-mail a ser criado.

faculdadenovaroma.com.br
Avaliação

P1
Uma prova escrita (10Pts)
Teoria sobre Paradigmas
Exercícios (Máximo de 1Pt de Bonificação)

P2
Um Prova Escrita (30% da P2)
Trabalho Prático (70% da P2)
Individual ou Dupla
Apresentar uma implementação de uma linguagem de
programação a ser definida por sorteio.

faculdadenovaroma.com.br
Observação sobre Exercícios:

Como são itens de bonificação, devem ser


entregues nas datas solicitas.
Não serão aceitos fora do prazo!

faculdadenovaroma.com.br
Visão Geral da Disciplina

Paradigmas de Linguagens
Categorias de Problemas
de Programação

faculdadenovaroma.com.br
Aula de Hoje

Motivação Introdução a
Por que estudar Linguagens de
princípios e modelos Programação
de linguagens de modelos de
programação? linguagens

Características desejáveis
em linguagens de
programação

faculdadenovaroma.com.br
Princípios de Linguagens de Programação

Definição (LP)
Uma linguagem de programação é uma linguagem
artificial projetada para expressar computações
que possam ser executadas por uma máquina,
particularmente um computador

Porque estudar Paradigmas de LP?

faculdadenovaroma.com.br
Porque estudar Paradigmas de LP?

Maior habilidade para resolver problemas;


Melhor uso de uma LP;
Melhor escolha de uma LP;
Maior facilidade em aprender novas LP;
Melhor Design de LPs.

faculdadenovaroma.com.br
Projeto de Linguagens de Programação

Visão de projeto:
Qual a finalidade da LP?
Qual sua diferença em relação a outras LP existentes?

LP de uso geral: atender diferentes domínios de


problemas, usuários e plataformas
Modelo de linguagem de programação
Modelo imperativo: baseado em comandos
Orientado a procedimentos
Orientado a objetos
Orientado a Aspectos
Modelo funcional: baseado em funções
Modelo lógico: baseado em axiomas lógicos
faculdadenovaroma.com.br
Modelos de Linguagens

Modelo imperativo Modelo declarativo


Linguagens expressam Linguagens que não
sequências de comandos possuem o conceito de
que realizam sequências de comandos
transformações sobre Linguagens funcionais,
dados baseadas em funções
base: máquina de von Linguagens lógicas,
Neumann baseada em axiomas
orientadas a lógicos
procedimentos

faculdadenovaroma.com.br
Modelos de execução

Sequencial Concorrente
Uma computação é Múltiplas computações
realizada após o término podem ser executadas
da anterior simultaneamente
Controle de fluxo de Computações paralelas
execução interno ao Múltiplos processadores
programa: compartilham memória
Sequência Computações distribuídas
Seleção múltiplos computadores
Iteração conectados por uma
rede de comunicação
Invocações

faculdadenovaroma.com.br
Modelo de Execução/Construção

Compilada Interpretada

faculdadenovaroma.com.br
Modelo de Nível

Baixo Nível Alto Nível


Próximo à Próximo ao
Maquina • Alto Nível
programador

MOV AX,0002 int A, B;


MOV BX,0001 int main()
ADD AX,BX {
A = 2;
B = 1;
A = A + B;
}

faculdadenovaroma.com.br
Modelo de Aplicação

Científica
Algol, Fortran, Matlab
Comerciais
Cobol, Dataflex
Processamento de Listas
Lisp
Gerais
Java, C, C++, Visual Basic
Inteligência Artificial
PROLOG
Web
JSP, PHP, HTML

faculdadenovaroma.com.br
Critérios para avaliação de LP

Legibilidade
Simplicidade
Expressividade
Ortogonalidade
Confiabilidade
Portabilidade

faculdadenovaroma.com.br
Legibilidade

Facilidade de ler e escrever programas


Legibilidade influi:
desenvolvimento e depuração de programas
manutenção de programas
desempenho de equipes de programação
Fatores que melhoram a legibilidade:
Abstração de dados
Comandos de controle
Modularização de programas
Documentação
Convenções léxicas, sintaxe e semântica
Exemplo em Java: nomes de classes iniciam por letra maiúscula
nomes de campos usam letras minúsculas

faculdadenovaroma.com.br
Simplicidade

Representação de cada conceito seja simples de


aprender e dominar:
Simplicidade sintática exige que a representação seja feita de
modo preciso, sem ambiguidades
Contraexemplo 1: A++; A=A+1; A+=1; ++A.
Contraexemplo 2: a, b := x+1, y + 3;
Simplicidade semântica exige que a representação possua
um significado independente de contexto
Contraexemplo: private: B b; class Campo: private Campo
Simplicidade não significa concisão
A linguagem pode ser concisa mas usar muitos símbolos
especiais: Ex. Linguagens Funcionais

faculdadenovaroma.com.br
Expressividade

Representação clara e simples de dados e procedimentos a


serem executados pelo programa
Exemplo: tipos de dados em Pascal
Expressividade x concisão
Muito concisa: falta expressividade?
Muito extensa: falta simplicidade?
Linguagens mais modernas
Incorporam apenas um conjunto básico de representações de tipos
de dados e comandos
Aumentam o poder de expressividade com bibliotecas de
componentes
Ex. BigInteger em Java

faculdadenovaroma.com.br
Ortogonalidade

conjunto de construções primitivas pode se combinar em um


número grande de maneiras para construir as estruturas de uma
linguagem
Possibilidade de combinar entre si, sem restrições, os
componentes básicos da LP
Exemplo: permitir combinações de estruturas de dados, como arrays
de qualquer tipo.
Contraexemplo: não permitir que um array seja usado como
parâmetro de uma função
Componente de primeira ordem: pode ser livremente usado em
expressões, atribuições, como argumento e retorno de
procedimentos

faculdadenovaroma.com.br
Portabilidade

Multiplataforma: capacidade de um software


rodar em diferentes plataformas sem a
necessidade de maiores adaptações
Sem exigências especiais de hardware/software
Exemplo: aplicação compatível com Linux e
Windows

Longevidade:
ciclo de vida útil do software e o do hardware não
precisam ser síncronos; ou seja, é possível usar o
mesmo software após uma mudança de hardware

faculdadenovaroma.com.br
Confiabilidade

Mecanismos que facilitem a produção de programas


que atendam às sua especificações
Tipagem forte: o processador da linguagem deve:
assegurar que a utilização dos diferentes tipos de dados seja
compatível com a sua definição
evitar que operações perigosas, tal como aritmética de
ponteiros, seja permitida
Tratamento de exceções: sistemas de tratamento de
exceções permitem construir programas que:
possuam definições de como proceder em caso de
comportamento não usual
possibilitem tanto o diagnóstico quanto o tratamento de erros em
tempo de execução

faculdadenovaroma.com.br
Critérios para escolha de uma LP

Implementação Sintaxe
Disponibilidade quanto Certos tipos de
a plataforma; problemas acomodam-
Eficiência; se melhor a certos
modelos;
Competência na LP
Semântica
Experiência do
programador; Aplicação X facilidade;
Competência do grupo Ambiente de
envolvido; Programação
Portabilidade Ferramentas diminuem
Execução em várias o esforço;
plataformas Uso de bibliotecas
Modelo de computação

faculdadenovaroma.com.br
Estudo de Caso PHP
- Afinidade
- Confiabilidade
- Portabilidade Android
- Finalidade (web) - Afinidade
- Facilidade
MySQL - Disponibilidade de
- Ambiente de Equipamento
programação - Finalidade (Mobile)
- Afinidade

Linguagem C
- Ambiente de
Linguagem C++ programação
- Ambiente de
programação
- Código Fonte J2ME (Java Micro
Aberto Edition)
- Ambiente de
programação

faculdadenovaroma.com.br
Linguagens de Programação

faculdadenovaroma.com.br
Histórico das Linguagens de Programação

Década de 1960
Programação baseada na arquitetura do hardware
existente
Computadores caros e inacessíveis
Seqüência de instruções
Sem preocupação com reutilização de código
Exemplos de linguagens populares:
Uso acadêmico: ALGOL
Uso científico: FORTRAN
Uso comercial: COBOL

faculdadenovaroma.com.br
Histórico das Linguagens de Programação

Década de 1970: surgimento da Engenharia


de Software
Abstração de dados: definição de tipos
Abstração de controle: comandos, procedimentos
Inicia preocupação com “programming in the large”:
módulos e programação Estruturada

Exemplos de linguagens populares:


Uso acadêmico: Pascal (tipos de dados)
Uso comercial: COBOL Estruturado
(arquivos/relatórios)
faculdadenovaroma.com.br
Histórico das Linguagens de Programação

Década de 1980: modularização


Ênfase em mecanismos de LP e abstrações
Correção de programas: verificação de tipos, exceções
Programação concorrente e distribuída e tempo real
Programação baseada em objetos (implementação de Tipos
Abstratos de Dados)
Programação orientada a objetos (herança)

Exemplos de linguagens
Uso acadêmico: Pascal / Modula / C
Programação de tempo real: Ada 83
Orientada a objetos: SmallTalk

faculdadenovaroma.com.br
Histórico das Linguagens de Programação

Década de 1990: base na Arquitetura


Estruturação de dados: encapsulamento
Estruturação da computação: classe
Estruturação do programa: classes e objetos
Programação para Internet: plataforma neutra

Exemplos de linguagens
Object-Pascal / Delphi
C / C++ / Objective-C
Ada83 / Ada95
Java

faculdadenovaroma.com.br
faculdadenovaroma.com.br
faculdadenovaroma.com.br
Histórico das Linguagens de Programação

Atualmente
Mecanismos alternativos de modularidade
programação orientada a aspectos

RAD (Rapid Application Development)


Maior ênfase na distribuição e mobilidade
Integração com bases de dados,
incluindo XML e bancos de dados relacionais.
Uso extensivo de frameworks
Spring, Hibernate, EJB
Crescimento das linguagens voltadas para Internet

faculdadenovaroma.com.br
Linguagens mais populares de 2013

http://readme.lk/busting-bubbles-ten-popular-programming-languages/

faculdadenovaroma.com.br
Exercício (Entrega até o final da aula)

Nome: ___________ Data: ______

1 - Por que é importante estudar os


paradigmas de linguagens de programação?
2 - Qual sua linguagem de programação
preferida? Por que?

faculdadenovaroma.com.br
Exercício

Entrega: a definir em aula


Realização individual ou em dupla

Enunciado:
Apresente uma redação sobre o tema “critérios
de seleção de linguagens de programação”
Mínimo: 2 páginas
Usar o template da SBC para artigos técnicos
http://www.sbc.org.br/index.php?option=com_jdownloads&
Itemid=195&task=finish&cid=38&catid=32

faculdadenovaroma.com.br
Exercício

Título: “critérios de seleção de linguagens de programação”


Resumo
Este trabalho apresenta os critérios ....
Introdução
A programação surgiu para ajudar o homem a resolver problemas ....
Referências
[1] Adriano. A, Fuluno B., “Programação Imperativa”, Anais do SBC,
p. 11, 2013

• Exemplo:
http://homepages.dcc.ufmg.br/~figueiredo/publications/wei07ready.pdf

faculdadenovaroma.com.br

Você também pode gostar