Fortemente tipada ou Fracamente.

650 views
Skip to first unread message

Amandio Queiroz

unread,
Jul 13, 2018, 3:30:31 PM7/13/18
to PUG-PB
Perdi uma questão na prova de Python....estudei pelo livro Python para desenvolvedores 2ª edição autor: Luiz Eduardo Borges 

Trecho do livro: 

"Assim como python hoje existem inúmeras linguagens que são fortemente tipadas" 

A questão dizia que python é fortemente tipada e para ver o tipo da variável, seria com type (variável) 

O professor falou que essa alternativa está incorreta. 

Gostaria por gentileza de saber a opinião de alguém, sobre o assunto.

Fernando Junior

unread,
Jul 13, 2018, 5:07:38 PM7/13/18
to PUG-PB
Oi Armandio. Acredito que essa questão merece uma revisão.

Fortemente ou fracamente tipada é diferente de dinamicamente tipada.
Em minha visão, python é fortemente e dinamicamente tipada. O fato da tipagem ser dinâmica não quer dizer que seja fracamente tipada.

jhonatan...@gmail.com

unread,
Jul 13, 2018, 6:36:55 PM7/13/18
to PUG-PB
Como o Fernando mencionou. Python é fortemente e dinamicamente tipado.

O que determina a força da tipagem é se a partir do momento que a variável recebe um valor, o tipo daquele valor não pode sofrer mutações para outros tipos.

por exemplo, o php é fracamente tipado e eu posso fazer o seguinte:

$valorA = '10'; //valor string
$valorB = 20; //valot int

$total = $valorA + $valorB; //30 inteiro

perceba que somar uma string com um inteiro resultou em um inteiro. e posso fazer pior:

$valorA += 10; //valor a passará a contar um valor 20 inteiro.

A linguagem C também é conhecida como fracamente tipada pois permite que tenhamos ponteiros de um tipo que apontam para variáveis de outros tipos, que aliás, é assim que o php implementa seus tipos internamente (pois o php é na verdade um interpretador para a linguagem C).

O python é fortemente tipado pois não permite este tipo de mutabilidade dos tipos, não se pode "mutar" strings para inteiros entre outros hacks permitidos em linguagens fracamente tipadas. Ao mesmo tempo ele é dinamicamente tipado, pois ao criar variáveis não se declara um tipo fixo para elas, ao contrário de linguagens estaticamente tipadas como o Java no qual é obrigatório declarar o tipo de uma variável e aquela variável pode receber valores somente daquele tipo


Em sexta-feira, 13 de julho de 2018 16:30:31 UTC-3, Amandio Queiroz escreveu:

Hildeberto Abreu Magalhães

unread,
Jul 13, 2018, 6:47:29 PM7/13/18
to PUG-PB
Boa noite, Amandio.

Não é desconfiando de você, mas como tenho os livros aqui, achei por bem citar o trecho que, provavelmente, embasou sua decisão:


Trecho do livro citado (1ª edição):

Tipagem dinâmica
Python utiliza tipagem dinâmica, o que significa que o tipo de uma variável é inferido pelo interpretador em tempo de execução (isto é conhecido como Duck Typing). No momento em que uma variável é criada através de atribuição, o interpretador define um tipo para a variável, com as operações que podem ser aplicadas.
O Python tem tipagem forte, ou seja, ele verifica se as operações são válidas e não faz coerções automáticas entre tipos incompatíveis3. Para realizar a operação entre tipos não compatíveis, é necessário converter explicitamente o tipo da variável ou variáveis antes da operação.

Grifos meus.

Trecho do livro citado (2ª edição):

Tipagem dinâmica

Python utiliza tipagem dinâmica, o que significa que o tipo de uma variável é inferido pelo interpretador em tempo de execução (isto é conhecido como
Duck Typing). No momento em que uma variável é criada através de atribuição, o interpretador define um tipo para a variável, com as operações
que podem ser aplicadas.

A tipagem do Python é forte, ou seja, o interpretador verifica se as operações são válidas e não faz coerções automáticas entre tipos incompatíveis3. Para
realizar a operação entre tipos não compatíveis, é necessário converter explicitamente o tipo da variável ou variáveis antes da operação.

Grifos meus. O texto é praticamente igual, sem mudança semântica.

=====================================================================================================

  • Infelizmente o artigo não cita diretamente o Python, mas ele seria, certamente, incluído na classificação "Linguagens fortemente tipadas e dinamicamente tipadas", como o Ruby, citado no artigo.
  • Python é considerada fortemente tipada porque NÃO permite conversão implícita:http://excript.com/python/tipos-de-dados-python.html
  • Mas também é considerada dinamicamente tipada, pois um mesmo "rótulo" (nome de variável) pode apontar para "conteúdos" de tipos diferentes, em momentos diferentes do processamento: http://docplayer.com.br/60846041-Luciano-ramalho-setembro-2012-objetos-pythonicos-orientacao-a-objetos-e-padroes-de-projeto-em-python.html
  • Isso NÃO torna Python "fracamente tipada", como JavaScript, por exemplo.
  • A depender da completude de outra alternativa, pode ser que sua resposta esteja "incompleta", mas não está "incorreta".
    • Se houver uma alternativa "fortemente E dinamicamente", é mais completa, e eu apontaria como a resposta "mais" correta.
    • Se houver uma alternativa "dinamicamente", e o professor considere somente ela correta, creio que ele não soube formular bem a questão, por deixar duas respostas "corretas" mas "incompletas". Caberia recurso, na minha opinião.
    • Se houver uma alternatica "fracamente" que ele considera a correta, ele está confundindo as coisas... Caberia recurso.

Abraços!

Em sexta-feira, 13 de julho de 2018 16:30:31 UTC-3, Amandio Queiroz escreveu:
(...)
Reply all
Reply to author
Forward
0 new messages