A adoção de recursos para habilitar tipagem estática, em Python, pode auxiliar na evolução de sistemas grandes

Há um debate, sempre atual, sobre os trade-offs da adoção de tipagem estática ou de tipagem dinâmica. Nesse debate, um quase consenso é que a evolução de sistemas grandes, escritos com tipagem dinâmica, é mais difícil. Essa ideia, inclusive, foi defendida recentemente pelo criador da linguagem Python, Guido van Rossum.

Aprendi uma lição dolorosa: para programas pequenos a tipagem dinâmica é ótima, porém para programas grandes você precisa ter uma abordagem mais disciplinada, e ajuda se a linguagem realmente lhe der essa disciplina, em vez de lhe dizer “Bem, você pode fazer o que quiser”

(Guido van Rossum)

O próprio Guido van Rossum, liderou uma iniciativa para adicionar suporte a anotações de tipo à linguagem Python. Na abordagem proposta por ele, isso pode acontecer de forma flexível, gradual e não impositiva. Alegadamente, segundo Guido, os benefícios incluem redução do volume de bugs, além da facilitar a compreensão e manutenção do código – habilitando mais suporte de IDEs modernas, incrementando a produtividade.

O MyPy, checker criado pelo grupo de desenvolvedores do Dropbox do qual Guido fazia parte, é utilizado, hoje, em mais de quatro milhões de linhas de Python da empresa.

Além do MyPy, há outra solução bastante promissora e amplamente adotada: o Pyright. Trata-se de um checker desenvolvido pela Microsoft, que, segundo seus desenvolvedores, chega a ser até 5 vezes mais rápida que as soluções concorrentes. A solução foi majoritariamente escrita em TypeScript.

As abordagens, tanto do MyPy quanto do Pyright, estão alinhadas com as conclusões de um famoso artigo, escrito por Erik Meijer e Peter Drayton e publicado pela Microsoft, que pondera as características de ambas as estratégias de tipagem.

Static typing where possible, dynamic typing when needed! (Meijer e Drayton)

Alinhando o entendimento do paper, bem como com a visão do criador da linguagem Python, infere-se que é recomendável explorar todo poder da tipagem dinâmica na elaboração de códigos pequenos e protótipos. Entretanto, na medida em que crescem, bases de código ficam mais sólidas e baratas de manter com a adoção gradual de conceitos e ferramentas para tipagem estática.

Em Resumo
  • O fato

    Sistemas grandes codificados com tipagem dinâmica são mais caros para manter. Afinal, a flexibilidade em códigos assim, que permite evolução inicial muito rápida, facilita também a introdução de bugs que, com tipagem estática, seriam identificados em tempo de compilação.
  • O insight

    A adoção de checkers como MyPy ou Pyright, permite que tenhamos em Python os mesmos benefícios de linguagens com tipagem estática. Essa adoção pode acontecer de maneira gradual.
  • Os benefícios

    Times podem se beneficiar de tipagem estática evitando bugs, facilitando a compreensão do código e habilitando mais suporte das IDEs.

Thiago Gaglietti de Candido

Atuo na área de tecnologia e desenvolvimento de software com foco nas áreas de liderança técnica, arquitetura de software, aplicações de alto desempenho e inteligência artificial. No decorrer de minha carreira, trabalhei com organizações de diversos segmentos e liderei equipes em projetos de sucesso. 

Talvez você goste também

Carregando posts…

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *