Uma das maiores fontes de confusão e desinformação para as pessoas que querem aprender Python é qual a versão que devem aprender.
Deveria aprender Python 2.x ou Python 3.x?
Indeed, esta é uma das questões que nos são mais frequentemente colocadas na Dataquest, onde ensinamos Python como parte do nosso currículo de Ciência de Dados.
Este post dá algum contexto por detrás da pergunta, explica a pespectiva, e diz-lhe qual a versão que deve aprender.
Comecemos por dar uma breve vista de olhos à história.
Python 3.0 foi lançado em 2008 (não uma gralha – 9 anos atrás!)
A 3 de Dezembro de 2008, Python lançou a versão 3.0 . O que era especial nisto era que se tratava de um lançamento incompatível ao contrário (se quiser ler mais sobre o porquê, recomendo este excelente post de Brett Cannon)
Como resultado, para qualquer pessoa que estivesse a utilizar Python 2.x naquela altura, a migração do seu projecto para 3.x exigiu grandes alterações. Isto incluiu não só projectos e aplicações individuais, mas também todas as bibliotecas que fazem parte do ecossistema Python.
A mudança foi vista como extremamente controversa, e muitos projectos resistiram à dor da mudança, especialmente na comunidade científica Python. Levou dois anos para a principal biblioteca numérica NumPy lançar a sua primeira versão 3.x, após o que outros projectos começaram a lançar versões compatíveis com 3.x nos anos seguintes.
Até 2012, muitas bibliotecas tinham suporte para 3.x, mas a maioria ainda estava a ser escrita em 2.x. Com o tempo, foram lançadas ferramentas que facilitaram a portabilidade do código, mas ainda havia uma grande resistência à mudança.
Uma grande leitura sobre o tópico é o post de Jake VanderPlas a partir de 2013: Will Scientists Ever Move to Python 3?
Nos poucos anos que se seguiram, várias ferramentas foram lançadas para ajudar a transição de bases de código mais antigas de Python 2 para Python 3.
Originalmente, Python tinha programado a data de ‘fim de vida’ para Python 2.x para 2015, mas em 2014 anunciaram que o prolongariam por 5 anos até 2020, em parte para aliviar as preocupações dos utilizadores que ainda não podem migrar para Python 3.
Fast-forward to today
Hoje em dia, existem muito poucas bibliotecas que não suportem Python 3. Python 3 Readiness mostra que 344 dos 360 pacotes superiores para suporte Python 3.x.
Além disso, muitos pacotes estão a anunciar o fim do suporte para 2.x. Python 3 Statement é um projecto onde muitas das principais bibliotecas (científicas) estão a comprometer-se a deixar de apoiar o 2.x em 2020 ou mais cedo.
Recentemente, o popular web-framework Django anunciou que o seu novo 2.0 não suportaria Python 2.x.
Então, porque é que isto ainda é uma questão?
Existem muitos recursos online mais antigos e gratuitos para aprender Python 2, incluindo a maioria dos cursos MOOC em locais como Coursera, Udemy e edX.
Adicionado a isto, o extremamente popular ‘Learn Python the Hard Way’ de Zed Shaw foi escrito em Python 2.x e não foi actualizado. Até recentemente, pensava que isto se devia apenas ao facto de Zed ser demasiado preguiçoso para actualizar o seu curso, mas recentemente ele publicou um artigo controverso: O Caso contra Python 3.
Vocês também podem gostar de ler a excelente refutação de Eevee: A Rebuttal For Python 3, bem como os pensamentos de muitos programadores de software no tópico Hacker News do artigo de Zed).
Em suma – o número de pessoas que concordam com a reclamação de Zed está na minoria extrema.
Então que devo aprender?
Porquê aprender Python 3
De uma perspectiva, tive a sorte de entrar no mundo de Python muito mais recentemente, no início de 2016. Comecei a aprender Python como parte do currículo de ciência de dados na Dataquest. Dataquest só ensina 3.x, e durante bastante tempo não soube de toda esta controvérsia 2 vs 3.
Utilizei Python 3.x exclusiva e raramente me deparei com problemas de compatibilidade.
Muitas vezes (talvez uma vez a cada 3-4 meses), vou descobrir que estou a tentar executar algo que requer suporte Python 2, e o virtualenv de Python permite-me criar instantaneamente um 2.x na minha máquina para executar aquele software antigo.
Python 3.x é o futuro, e com o suporte Python 2.x a diminuir, deve dedicar o seu tempo a aprender a versão que o ajudará no futuro.
Porque deve aprender Python 2
Não deve. Muito em breve não haverá segurança futura ou correcções de bugs para Python 2.x, e o seu tempo será melhor gasto aprendendo 3.x.
Na improvável eventualidade de acabar a trabalhar com uma base de código Python 2, ferramentas como python-future facilitarão a sua utilização tendo aprendido apenas Python 3.
Espero que isto o tenha ajudado a compreender este tópico controverso e a tomar a sua decisão de aprender Python 3.
Dataquest é a melhor plataforma online para aprender a ser um Cientista de Dados usando Python (3.x, claro!).
Temos licenciados a trabalhar no SpaceX, Amazon e muito mais. Se isso lhe interessa, pode inscrever-se e completar o nosso primeiro curso gratuitamente no Dataquest.io
Este post é baseado nesta resposta Quora