Python 3

Para quem tem acompanhado a lista de discussões Python Developers já deve ter percebido que as discussões sobre a versão 3 da linguagem Python vêm se intensificando a cada dia que passa.

Já foi dito a algum tempo atrás nessa mesma lista que a preocupação de manter compatibilidade retroativa com as versões atuais da linguagem Python serão praticamente nulas. Os desenvolvedores da linguagem se deram ao direito de quebrar essa compatibilidade para que finalmente eles possam corrigir erros de design que acompanham a linguagem desde as suas primeiras versões.

É importante que todos que usam Python intensivamente comecem a acompanhar essas discussões para já irem evitando certas ‘construções’ que não farão mais parte da linguagem no futuro. Existe uma quantidade considerável dessas ‘construções’, portanto, não vou ficar listando-as por aqui. Elas podem ser vistas em forma de propostas na PEP3000.

A sensação de acompanhar as discussões é: tensão. Eventualmente o Guido (BDFL) opta por algumas regras sintáticas e/ou construções na linguagem que me deixam consternados. Mesmo quando elas não passam apenas de propostas. Um caso recente foi quando ele sugeriu trocar os operadores lógicos “and”, “or” e “not” por “&&”, “||” e “!” como em linguagens com sintaxe baseadas na sintaxe da linguagem C.

Eu fiquei tenso por algumas horas até que várias pessoas votaram para que essa modificação não ocorresse. Eu fiquei preocupado porque eu gosto de ler uma expressão lógica como se estivesse lendo um parágrafo de um livro (if foo and bar:…) e não como se tivesse lendo uma tábua com hieroglífos (if foo && bar:…).

Outra sugestão que deram foi a de mudar o comportamento do retorno de expressões lógicas. Atualmente a linguagem Python usa um mecanismo de short-circuit para avaliar uma expressão lógica e o último elemento avaliado será retornado. Queriam que esse tipo de expressão retorne apenas “True” ou “False”. Acho que ambos comportamentos possuem vantagens e desvantagens e mudá-lo por mudar só faria com que mais código se quebrasse gerando erros realmente muito difíceis de encontrar. Ok, eu disse que já foi avisado que compatibilidade retroativa não é uma preocupação para o Py3, mas realmente é necessário quebrar compatibilidade com algo tão gratuito? Acho que não e parece que tem mais pessoas que pensam assim. A discussão saiu dessa linha de raciocínio e partiu para uma linha de proposta para criar um equivalente ao operador ternário da lingagem C (?:). Evidente que estão procurando uma sintaxe mais adequada do que a sintaxe usada pela linguagem C.

Eu gosto muito de Python e confio no julgamento do GvR para tomar decisões no desenho da linguagem, mas acompanhar as discussões na lista em tempos de mudanças tão grandes realmente não é indicado para programadores Python com coração fraco.

Em tempo: O pessoal do INdT e eu organizamos um pequeno “Planet” que ainda está hospedado em local temporário esperando pela liberação do domínio “maemo.org.br”. A versão provisória do Planet pode ser encontrada em “http://evolutum.gotdns.com/~osvaldo/planet/“.

Publicado por

Osvaldo Santana

Desenvolvedor Python e Django, Empreendedor, dono de uma motocicleta esportiva, hobbysta de eletrônica, fã de automobilismo e corinthiano