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.