terça-feira, 24 de junho de 2008

Python 3000 está chegando...

Python 3000 está chegando, atualmente se encontra na versão alpha, e quem programa nesta poderosa linguagem interpretada, tem que estar preparado para as grandes mudanças que ocorrerão.

Guido van Rossum, já apontou em um slide entitulado Python 3000 and You, datado de março de 2008, algumas das principais mudanças que ocorrerão na linguagem, este artigo, soará mais como um resumo do mesmo, para quem já o conhece, este texto não trará nada de novo, para quem não o conhece e quiser beber na fonte, poderá acessar: Py3kAndYou.

Três das principais preocupações e dúvidas dos desenvolvedores Python são imediatamente desmistificadas, são elas:
  • Python 3, Python 3k e Python 3000 tratam da mesma coisa: A nova versão da linguagem;
  • Python 3 não será uma nova linguagem de programação;
  • Python 2 continuará a ser desenvolvida por 5 anos ou mais, haverá 2.7 e muito provavelmente 2.8.
As motivações por trás do Python 3 são simples, o Software Livre tem que se atualizar ou acaba morrendo, é necessário consertar problemas e erros de design e adicionar novos paradigmas para manter a linguagem sempre em movimento, atualizada.

Há também uma lista de quebras de código, as principais e que chamam mais atenção:
  • função print, agora ganhará argumentos e, portanto, será chamada entre parênteses, na verdade, ficará apenas mais organizada;
  • Distinção entre strings de texto e dados, quem trabalha com arquivos sabe que isso aqui é um verdadeiro calvário em Python;
  • A função de dicionário keys, agora retornará uma lista contendo chave e valor;
  • Melhoria da divisão de inteiros, isso aqui é interessante... alguém já tentou 1/2 no interpretador? Pois é, retorna 0, agora finalmente retornará 0.5;
  • Limpeza na biblioteca, trazer as pilhas embutidas tem suas vantagens, mas dá trabalho quando o assunto é ter que trocar as pilhas velhas e sem carga.
Há também algumas outras quebras menores, vou citar as mais importantes:
  • Função map e filter retornarão iterators e ao invés de usar map(None, ...) use zip(), isso é importante para quem gosta dos truquezinhos de map;
  • Removidos '...' e <>, quem gostava de comparar diferentes com <>, esqueça agora é != mesmo e ponto.
  • None, True e False serão palavras reservadas da linguagem;
  • Novas palavras reservadas: as, with e nonlocal, with já pode ser importada de __future__, agora ficará mais simples trabalhar com bancos de dados e grandes consultas;
  • xrange() é range(), isso aqui já era sem tempo.
  • Adeus para dict.has_key() e dict.iteritems();
  • Muitas outras.
Há também grandes novidades, as maiores são a extensão do unpack de iteradores e poder formatas strings com keywords. Outras pequenas mudanças são: O código-fonte, por padrão será UTF-8, decorators para classes, sabe o list comprehension? Agora haverá dict comprehension, entre outros.

Neste momento, você deve estar dizendo... puxa, é muita coisa, mas Guido adverte, não é preciso pressa! A versão 2 continuará em desenvolvimento, por até 5 anos, migre apenas quando você estiver pronto e todas as suas dependências (as que você usa no dia a dia) estiverem portadas e haverão ferramentas para ajudá-lo a se adequar, mas também chama a atenção: Pare de usar módulos obsoletos e comece a usar iterators e generators e aconselha: Mantenha uma versão compatível com 2.6+ e a versão 3 por algum tempo.

Precisa correr? Não, a versão 3 final está prevista para Agosto de 2008.

Um comentário:

Falleco disse...

/me aponta para ondinha e grita: GREAT!

( para quem nunca assistiu: GTO )