O problema com esse tipo de discussão é simplesmente que os termos "digitação fraca" e "digitação strong" são indefinidos, diferentemente dos termos "digitação estática", "digitação dinâmica", "digitação explícita", "digitação implícita". "," digitação de pato "," digitação estrutural "ou" digitação nominal ". Heck, até mesmo os termos "manifestar digitação" e "latente digitação", que ainda são áreas abertas de pesquisa e discussão são provavelmente melhor definidos.
Então, até que seu amigo forneça uma definição do termo "digitação fraca" que seja estável o suficiente para servir como base para uma discussão, não faz sentido responder a essa pergunta.
Infelizmente, além da resposta de Nick , nenhum dos respondentes se preocupou em fornecer sua definição, e você pode veja a confusão que gera em alguns dos comentários. É difícil dizer, já que ninguém fornece suas definições, mas acho que conto pelo menos três diferentes, apenas nesta mesma página.
Algumas das definições mais comumente usadas são (e sim, eu sei que praticamente nenhuma delas faz sentido, mas essas são as definições que vi as pessoas realmente usarem):
- digitação fraca = digitação insegura / digitação strong = digitação segura
- tipagem fraca = tipagem dinâmica / tipagem strong = tipagem estática
- digitação fraca = digitar pato / digitar strong = digitar nominal
- tipagem fraca = tipagem estrutural / tipagem strong = tipagem nominal
- digitação fraca = digitação implícita / digitação strong = digitação explícita
- digitação fraca = digitação latente / digitação strong = digitação manifesta
- digitação fraca = sem digitação / digitação strong = digitando
- digitação fraca = conversões implícitas / digitação strong = apenas conversões explícitas
- digitação fraca = conversões implícitas ou explícitas / digitação strong = sem conversões
- digitação fraca = conversões implícitas / digitação strong = somente conversões explícitas
- digitação fraca = conversões implícitas ou explícitas / digitação strong = sem conversões
- tipagem fraca = interpretação / tipagem strong = compilação
- digitação fraca = digitação lenta / strong = rápida
- digitação fraca = coleta de lixo / digitação strong = gerenciamento de memória manual
- digitação fraca = gerenciamento de memória manual / digitação strong = coleta de lixo
- … e muitos outros
As três definições que parecem ser usadas mais amplamente, no entanto, são
- digitação fraca = sua linguagem de programação idiota / digitação strong = minha linguagem de programação super incrível
- tipagem fraca = todas as outras linguagens de programação / tipagem strong = a única linguagem de programação que sempre me preocupei em aprender (geralmente Java, C # ou C ++; estranhamente, pessoas que aprendem Haskell ou Scheme como sua primeira e única linguagem não parecem compartilhar essa visão de mundo)
- digitação fraca = todas as línguas que não entendo / digitação strong = Java (substitua com C # ou C ++ à vontade)
A menos que todos concordem com uma definição do que "tipagem fraca" mesmo é , não faz sentido pensar em quais seriam suas vantagens. Vantagens de quê? Pior ainda, se não houver nenhuma definição , então todos podem apenas mudar suas definições para ajustá-las a seus argumentos, e toda discussão é praticamente garantida para se transformar em um flamewar.
Eu pessoalmente mudei minha própria definição várias vezes ao longo dos anos e agora cheguei ao ponto em que nem considero os termos mais úteis. Eu também costumava pensar que a digitação fraca (em suas várias definições) tem um lugar no script de shell, mas sempre que tenho que resolver o mesmo problema no Bash e no PowerShell, lembro dolorosamente como estava errado.