Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Prévia do material em texto

Paradigmas de Linguagens de 
Programação em Python
Prof. Julio Cartier Maia Gomes
2
Domínios de programação 
3
Suponha que um programador necessita decidir qual linguagem de 
programação deve utilizar para desenvolver um App simples para um 
celular Android, que possui apenas 3 telas que deveriam deslizar para os 
lados. 
● Não possui cadastro, objetos em 3D, interações complexas;
● nem cálculos matemáticos que precisem ser implementados. 
Quais linguagens 
ou ferramentas 
vocês 
escolheriam?
4
● menti.com
Quais linguagens 
ou ferramentas 
vocês 
escolheriam?
5
Esse programador implementou 
esse App utilizando a linguagem 
C# usando a Unity 3D, que é 
uma game engine, que possui 
motor gráfico embutido, que 
nesse caso não é utilizado. Isso 
faria com que o App tivesse 50 
MB no lugar dos 2MB que 
deveria ter.
Será que foi uma boa escolha?
Porque você acha que isso 
aconteceu?
6
Escolha infeliz de ferramentas 
de linguagens!
7
Escolha infeliz de ferramentas 
de linguagens!
https://www.tiobe.com
/tiobe-index/
8
● Conhecer os grandes domínios de aplicações e suas 
características;
● Compreender os fatores que influenciam a 
arquitetura das linguagens e os principais 
paradigmas;
● Conhecer os critérios para escolha de linguagens.
9
Software
Resolver um 
problema
Problemas Complexos x Custo x 
Tempo
– “Sentar e programar” → Projetar
– Análise e Projeto.
• Como implementar um sistema?
– Compreender o domínio do 
problema
– Propor modelo 
– Implementar
– Testar
– Implantar.
10
O que é um 
Paradigma?
Forma de interpretar e pensar o 
mundo
● Como interpretar problemas 
complexos....
● Como imaginar uma solução.
Paradigmas:
Imperativo
 Funcional
Orientado a objetos
Lógico
11
O que é um 
Paradigma?
● Variáveis e procedimentos;
● Descrevo passo a passo o que 
deve ser feito;
● Evoluiu para o procedural e 
estruturado com if, while, for;
● Primeiras linguagens de 
programação são deste 
paradigma:
○ Fortran, Pascal, C, etc.
12
Imperativo
13
Imperativo
14
Funcional
● Na programação funcional, toda 
ação realizada pelo programa 
deve ser implementada como 
uma função ou uma composição 
de funções.
● Chamadas de função, incluindo a 
recursão;
● Linguagens: CML, LISP, 
Scheme, Haskell
15
Funcional
● fatorial em Scheme (recursão)
(define fatorial
(lambda (n)
(if (= n 0)
1
(* n (fatorial (- n 1))))))
16
Orientada a objetos
● Uso de classes, objetos, herança, 
polimorfismo, maior abstração de 
dados, encapsulamento;
● Ex: Smalltalk, C++, Eiffel, Java, 
C#
17
Orientada a objetos
● C++
class MinhaClasse {
 public: 
 int meuNumero;
 string minhaString;
};
int main() {
 MyClass meuObjeto;
 meuObjeto.meuNumero = 15;
 meuObjeto.minhaString = "Texto";
 return 0;
}
18
Lógico
● Relações lógicas entre entradas e 
saídas, asserções;
● Especifica-se apenas fatos e regras 
de inferência.
● Ex: Prolog, Mercury
● O programador deve preocupar 
somente em descrever o problema a 
ser solucionado (especificação), 
deixando a critério da máquina a 
busca pela solução.
19
Lógico
Prolog
● Interface: permite que o usuário entre com 
premissas codificadas em uma linguagem 
lógica e faça consultas para extrair 
conclusões destas premissas.
● Motor de inferência: atualiza a base de 
conhecimento com premissas fornecidas pelo 
usuário e faz inferências para extrair 
Informações implícitas. 
● Base de conhecimento: armazena as 
premissas fornecidas pelo usuário.
20
O que é um 
Paradigma?
Muitas linguagens são 
multiparadigma
21
O que é um 
Paradigma?
22
CRITÉRIOS DE 
AVALIAÇÃO DE 
LINGUAGENS
● Legibilidade;
● Facilidade de escrita;
● Confiabilidade;
● Outro fator, o custo.
23
CRITÉRIOS DE 
AVALIAÇÃO DE 
LINGUAGENS
Legibilidade
Um dos critérios mais importantes 
para julgar uma linguagem de 
programação é a facilidade com que 
os programas podem ser lidos e 
entendidos.
24
CRITÉRIOS DE 
AVALIAÇÃO DE 
LINGUAGENS
Legibilidade
Simplicidade geral
● Facilidade de compreensão;
● Simplicidade geral;
● E simplicidade extrema?
○ Muitas formas de fazer a 
mesma coisa pode prejudicar; 
○ Multiplicidade de recursos
Em Java um usuário pode incrementar 
uma simples variável inteira de quatro 
maneiras:
contador = contador + 1
contador += 1
contador++
++contador
25
CRITÉRIOS DE 
AVALIAÇÃO DE 
LINGUAGENS
Legibilidade
Simplicidade geral
● E simplicidade extrema?
○ Sobrecarga de operadores;
○ Na qual um operador tem mais de 
um significado.
○ Em C/C++: por exemplo, o 
operador "*" pode significar, 
dependendo do contexto, 
multiplicação, conteúdo de 
ponteiro ou declaração de 
ponteiro.
26
CRITÉRIOS DE 
AVALIAÇÃO DE 
LINGUAGENS
Legibilidade
Ortogonalidade
● Ortogonalidade
○ Poucas primitivas, muitas 
combinações;
○ Exemplo: Combinação de 
operadores lógicos ("and"; "or") 
com operadores aritméticos (como 
"+" e "-") para criação de uma 
expressão mais complexa. 
○ É considerada ortogonal quando 
seus recursos podem ser 
combinados .
27
CRITÉRIOS DE 
AVALIAÇÃO DE 
LINGUAGENS
Legibilidade
Tipos de dados
● A presença de mecanismos 
adequados para definir tipos e 
estruturas de dados é outro 
auxílio significativo à legibilidade.
● Exemplo, não existe nenhum tipo 
booleano na linguagem. Em tal 
linguagem, poderíamos ter uma 
atribuição como:
○ timeOut = 1
CRITÉRIOS DE 
AVALIAÇÃO DE 
LINGUAGENS
28
CRITÉRIOS DE 
AVALIAÇÃO DE 
LINGUAGENS
Legibilidade
Tipos de dados
● O significado dessa sentença não 
é claro. Em uma linguagem que 
inclui tipos booleanos, teríamos:
○ timeOut = true
● O significado dessa sentença é 
perfeitamente claro.
● Adequação torna a leitura mais 
clara.
29
CRITÉRIOS DE 
AVALIAÇÃO DE 
LINGUAGENS
Legibilidade
Projeto de Sintaxe
;
● Palavras especiais. A aparência 
de um programa e sua 
legibilidade são muito 
influenciadas pela forma das 
palavras especiais de uma 
linguagem (por exemplo, while, 
class e for).
30
CRITÉRIOS DE 
AVALIAÇÃO DE 
LINGUAGENS
Facilidade de escrita
;
● A facilidade de escrita é a medida 
do quão facilmente uma 
linguagem pode ser usada para 
criar programas para um domínio.
31
CRITÉRIOS DE 
AVALIAÇÃO DE 
LINGUAGENS
Facilidade da escrita
;
○ Expressividade: Várias 
maneiras de expressar as 
coisas
32
CRITÉRIOS DE 
AVALIAÇÃO DE 
LINGUAGENS
Confiabilidade
;
● Diz-se que um programa é 
confiável quando está de acordo 
com suas especificações em 
todas as condições.
○ Verificação de tipos;
○ Tratamento de exceções;
○ Apelidos;
○ Legibilidade e facilidade de 
escrita.
33
CRITÉRIOS DE 
AVALIAÇÃO DE 
LINGUAGENS
Confiabilidade
Verificação de tipos
● Significa verificar, em tempo de 
compilação ou execução, se 
existem erros de tipo. Por 
exemplo, atribuir um valor 
booleano a uma variável do 
tipo inteira, vai resultar em 
erro.
● Python verificação em tempo 
de execução.
34
CRITÉRIOS DE 
AVALIAÇÃO DE 
LINGUAGENS
Confiabilidade
Tratamento de 
exceções
● O tratamento de exceção em 
uma linguagem de programação 
garante a correta execução, 
aumentando a confiabilidade.
● As linguagens Python, C++ e Java 
possuem boa capacidade de 
tratar exceções, ao contrário da 
linguagem C.
● Obrigar a tratar situações de erro 
(Java, C++, C#, Python)
35
CRITÉRIOS DE 
AVALIAÇÃO DE 
LINGUAGENS
Confiabilidade
Apelidos
● Aliasing (Apelidos) é o fato de ter 
dois ou mais nomes, 
referenciando a mesma célula de 
memória, o que é um recurso 
perigoso e afeta a confiabilidade.
● Perigo: vários nomes para mesmo 
valor na memória
● Uma variável pode ser 
referenciada por vários nomes ou 
apelidos.
lista= [1, 2, 3,4]
outro_nome = lista
36
CRITÉRIOS DE 
AVALIAÇÃO DE 
LINGUAGENS
Confiabilidade
Legibilidade e 
facilidade de escrita
● A legibilidade afeta tanto na 
fase de codificação como na 
fase de manutenção. 
Programas de difícil leitura são 
difíceis de serem escritos 
também.
● Uma linguagem com boa 
legibilidade e facilidade de 
escrita gera códigos claros. 
● Certamente evita erros!
37
CRITÉRIOS DE 
AVALIAÇÃODE 
LINGUAGENS
Custo
● Treinamento, de escrita do 
programa, 
● do compilador, 
● de execução do programa, 
● de implementação da 
linguagem e o 
● de manutenção do código. 
38
CRITÉRIOS DE 
AVALIAÇÃO DE 
LINGUAGENS
Custo
Treinamento
● Custo de Treinamento para 
programadores varia em função 
da expertise do programador, 
simplicidade e ortogonalidade 
da linguagem;
39
CRITÉRIOS DE 
AVALIAÇÃO DE 
LINGUAGENS
Custo
Escrever programa
● Custo para escrever programas 
na linguagem varia em função 
da facilidade de escrita.
40
CRITÉRIOS DE 
AVALIAÇÃO DE 
LINGUAGENS
Custo
Compilar o programa
● Esse custo varia em função do 
custo de aquisição do 
compilador.
41
CRITÉRIOS DE 
AVALIAÇÃO DE 
LINGUAGENS
Custo
Executar o programa
● Custo para executar 
programas, varia em função do 
projeto da linguagem.
42
CRITÉRIOS DE 
AVALIAÇÃO DE 
LINGUAGENS
Custo
Implementar a linguagem
● A popularidade da LP vai 
depender de um econômico 
sistema de implementação. Por 
exemplo, Python e Java 
possuem compiladores e 
interpretadores gratuitos.
43
CRITÉRIOS DE 
AVALIAÇÃO DE 
LINGUAGENS
Custo
Confiabilidade
● O custo da má confiabilidade: 
se um sistema crítico falhar, o 
custo será elevado.
44
CRITÉRIOS DE 
AVALIAÇÃO DE 
LINGUAGENS
Custo
Manutenção
● Custo de manutenção: 
depende de vários fatores, mas 
principalmente da legibilidade, 
já que a tendência é que a 
manutenção seja dada por 
pessoas que não participaram 
do desenvolvimento do 
software.

Mais conteúdos dessa disciplina