PythonNaoEJava

Python não é Java

(Esse texto é uma tradução de Python is not Java, de Phillip J. Eby. O texto não está licenciado sob a Creative Commons, pois está sujeito a restrições.)

Recentemente, dei uma olhada no código de uma aplicação GUI baseada em wxPython, com aproximadamente 45,5KLOC, sem contar as bibliotecas utilizadas (e.g. Twisted). O código foi escrito por programadores Java relativamente novos em Python e sofre de alguns problemas de performance (como 30 segundos de tempo de inicialização). Examinando o código, notei que eles fizeram um monte de coisas que fazem sentido em Java, mas que são terrivelmente inadequadas em Python. Não porque "Python é mais lento que Java", mas porque há maneiras mais fáceis de alcançar os mesmos objetivos em Python que sequer existem em Java.

Enfim, o triste é que essas pobres pessoas trabalharam muito, muito mais do que precisavam, para produzir muito mais código do que necessitavam escrever, que então tem o desempenho muito mais lento que o equivalente idiomático em Python teria. Alguns exemplos:

Essa é apenas a ponta do iceberg da migração de mentalidade Java->Python, e é mais ou menos tudo em que eu posso entrar agora sem me aprofundar em pontos específicos a aplicações. Essencialmente, se você já usa Java há algum tempo e é novo em Python, não acredite em seus instintos. Seus instintos estão sintonizados para Java, não Python. Dê um passo atrás e, acima de tudo, pare de escrever tanto código.

Para fazer isso, torne-se mais exigente com o Python. Finja que o Python é uma varinha mágica que irá miraculosamente fazer o que quer que você queira sem você precisar levantar um dedo. Pergunte "Como Python já resolve meu problema?" e "Que característica da linguagem Python mais lembra meu problema?". Você vai ficar absolutamente espantado sobre quão freqüentemente acontece de aquela coisa que você precisa já estar lá de alguma forma. De fato, esse fenômeno é tão comum, mesmo entre programadores Python experientes, que a comunidade Python tem um nome para isso. Eles chamam isso de "máquina do tempo do Guido", porque às vezes parece que essa é a única maneira dele ter podido saber o que nós precisávamos antes de nós mesmos sabermos.

Enfim, se você não se sente como se estivesse no mínimo dez vezes mais produtivo com Python que com Java, há boas chances de que você está se esquecendo de usar a máquina do tempo! (E se você sente falta de sua IDE para Java, considere a possibilidade de que isso ocorre porque seus programas em Python são muito mais complexos do que precisariam ser.)

PythonNaoEJava (editada pela última vez em 2008-12-19 12:26:29 por AdamVictorNazarethBrandizzi)