História do Python - History of Python
A linguagem de programação Python foi concebida no final dos anos 1980 e sua implementação foi iniciada em dezembro de 1989 por Guido van Rossum no CWI na Holanda como um sucessor do ABC capaz de lidar com exceções e fazer interface com o sistema operacional Amoeba . Van Rossum é o autor principal do Python, e seu papel central contínuo na decisão da direção do Python se reflete no título dado a ele pela comunidade Python, Benevolent Dictator for Life (BDFL) . (No entanto, van Rossum deixou o cargo de líder em 12 de julho de 2018.). Python foi batizado com o nome do programa de TV da BBC Monty Python's Flying Circus .
O Python 2.0 foi lançado em 16 de outubro de 2000, com muitos novos recursos importantes, incluindo um coletor de lixo com detecção de ciclo (além da contagem de referência ) para gerenciamento de memória e suporte para Unicode . No entanto, a mudança mais importante foi no próprio processo de desenvolvimento, com uma mudança para um processo mais transparente e apoiado pela comunidade.
Python 3.0, uma versão principal incompatível com versões anteriores, foi lançado em 3 de dezembro de 2008 após um longo período de testes. Muitos de seus principais recursos também foram adaptados para o Python 2.6 e 2.7 compatível com versões anteriores, embora agora sem suporte.
História antiga
Em fevereiro de 1991, Van Rossum publicou o código (rotulado como versão 0.9.0) para alt.sources. Já está presente nesta fase em desenvolvimento foram classes com a herança , o processamento de excepções, as funções e os principais tipos de dados de list
, dict
, str
e assim por diante. Também nesta versão inicial estava um sistema de módulo emprestado do Modula-3 ; Van Rossum descreve o módulo como "uma das principais unidades de programação do Python". O modelo de exceção do Python também se assemelha ao do Modula-3, com a adição de uma else
cláusula. Em 1994 , comp.lang.python , o fórum de discussão principal do Python, foi formado, marcando um marco no crescimento da base de usuários do Python.
Versão 1
Python chegou a versão 1.0 em janeiro de 1994. As principais novas funcionalidades incluídas nesta versão foram as ferramentas de programação funcional lambda
, map
, filter
e reduce
. Van Rossum afirmou que "Python adquiriu lambda, reduz (), filtro () e mapa (), cortesia de um hacker Lisp que os perdeu e enviou patches de trabalho ".
A última versão lançada enquanto Van Rossum estava no CWI foi o Python 1.2. Em 1995, Van Rossum continuou seu trabalho em Python na Corporation for National Research Initiatives (CNRI) em Reston , Virgínia , de onde lançou várias versões.
Na versão 1.4, Python adquiriu vários novos recursos. Notáveis entre eles são os argumentos de palavra - chave inspirados em Modula-3 (que também são semelhantes aos argumentos de palavra-chave do Common Lisp ) e suporte integrado para números complexos . Também está incluída uma forma básica de ocultação de dados por mutilação de nome , embora isso seja facilmente contornado.
Durante a estada de Van Rossum no CNRI, ele lançou a iniciativa Computer Programming for Everybody (CP4E), com a intenção de tornar a programação mais acessível a mais pessoas, com uma "alfabetização" básica em linguagens de programação, semelhante à alfabetização básica em inglês e habilidades matemáticas exigidas por a maioria dos empregadores. Python desempenhou um papel central nisso: por causa de seu foco na sintaxe limpa, já era adequado e os objetivos do CP4E eram semelhantes aos de seu predecessor, o ABC. O projeto foi financiado pela DARPA . A partir de 2007, o projeto CP4E está inativo e, embora o Python tente ser facilmente aprendido e não muito misterioso em sua sintaxe e semântica, o alcance a não programadores não é uma preocupação ativa.
Esta aberto
Em 2000, a equipe de desenvolvimento principal do Python mudou-se para BeOpen.com para formar a equipe BeOpen PythonLabs, sob a direção do ex- aluno do Google Domenic Merenda. O CNRI solicitou o lançamento de uma versão 1.6, resumindo o desenvolvimento do Python até o ponto em que a equipe de desenvolvimento deixou o CNRI. Consequentemente, os cronogramas de lançamento para 1.6 e 2.0 tiveram uma quantidade significativa de sobreposição. Python 2.0 foi o único lançamento da BeOpen.com. Depois que o Python 2.0 foi lançado pela BeOpen.com, Guido van Rossum e os outros desenvolvedores do PythonLabs se juntaram à Digital Creations .
A versão Python 1.6 incluiu uma nova licença CNRI que era substancialmente mais longa do que a licença CWI que tinha sido usada para versões anteriores. A nova licença incluía uma cláusula declarando que a licença era regida pelas leis do estado da Virgínia . A Free Software Foundation argumentou que a cláusula de escolha da lei era incompatível com a GNU General Public License . BeOpen, CNRI e a FSF negociaram uma mudança na licença de software livre do Python que o tornaria compatível com a GPL. O Python 1.6.1 é essencialmente o mesmo que o Python 1.6, com algumas pequenas correções de bugs e com a nova licença compatível com GPL.
Versão 2
O Python 2.0, lançado em outubro de 2000, introduziu as compreensões de lista , um recurso emprestado das linguagens de programação funcionais SETL e Haskell . A sintaxe do Python para esta construção é muito semelhante à de Haskell, exceto pela preferência de Haskell por caracteres de pontuação e pela preferência de Python por palavras-chave alfabéticas. Python 2.0 também introduziu um coletor de lixo capaz de coletar ciclos de referência.
O Python 2.1 era próximo ao Python 1.6.1, assim como o Python 2.0. Sua licença foi renomeada como Licença Python Software Foundation . Todo o código, documentação e especificações adicionadas, a partir do momento do lançamento alfa do Python 2.1, são propriedade da Python Software Foundation (PSF), uma organização sem fins lucrativos formada em 2001, modelada a partir da Apache Software Foundation . O lançamento incluiu uma mudança na especificação da linguagem para suportar escopos aninhados, como outras linguagens com escopo estático . (O recurso estava desativado por padrão e não era obrigatório até o Python 2.2.)
Python 2.2 foi lançado em dezembro de 2001; uma grande inovação foi a unificação dos tipos de Python (tipos escritos em C ) e classes (tipos escritos em Python) em uma hierarquia. Essa unificação tornou o modelo de objeto do Python pura e consistentemente orientado a objetos. Também foram adicionados geradores inspirados no Icon .
Python 2.5 foi lançado em setembro de 2006 e introduziu a with
instrução, que inclui um bloco de código dentro de um gerenciador de contexto (por exemplo, obter um bloqueio antes de o bloco de código ser executado e liberar o bloqueio depois, ou abrir um arquivo e fechá-lo) , permitindo um comportamento semelhante ao RAII ( Resource Acquisition Is Initialization ) e substituindo um idioma try / finally comum.
O Python 2.6 foi lançado para coincidir com o Python 3.0 e incluiu alguns recursos desse lançamento, bem como um modo de "avisos" que destacou o uso de recursos que foram removidos no Python 3.0. Da mesma forma, o Python 2.7 coincidiu e incluiu recursos do Python 3.1, que foi lançado em 26 de junho de 2009. As versões paralelas 2.xe 3.x cessaram, e o Python 2.7 foi a última versão da série 2.x. Em novembro de 2014, foi anunciado que o Python 2.7 teria suporte até 2020, mas os usuários foram incentivados a migrar para o Python 3 o mais rápido possível. O suporte ao Python 2.7 terminou em 1º de janeiro de 2020, junto com o congelamento do código do branch de desenvolvimento 2.7. Uma versão final, 2.7.18, ocorreu em 20 de abril de 2020 e incluiu correções para bugs críticos e bloqueadores de versão. Isso marcou o fim da vida útil do Python 2.
Versão 3
Python 3.0 (também chamado de "Python 3000" ou "Py3K") foi lançado em 3 de dezembro de 2008. Ele foi projetado para retificar falhas de design fundamentais na linguagem - as alterações necessárias não puderam ser implementadas, mantendo a compatibilidade total com versões anteriores com o 2. série x, que exigia um novo número de versão principal. O princípio orientador do Python 3 era: "reduza a duplicação de recursos removendo velhas formas de fazer as coisas".
Python 3.0 foi desenvolvido com a mesma filosofia das versões anteriores. No entanto, como o Python acumulou maneiras novas e redundantes de programar a mesma tarefa, o Python 3.0 enfatizou a remoção de construções e módulos duplicados, de acordo com "Deve haver uma - e de preferência apenas uma - maneira óbvia de fazer isso".
No entanto, Python 3.0 permaneceu uma linguagem multiparadigma . Os codificadores ainda podiam seguir paradigmas de programação orientada a objetos , estruturada e funcional , entre outros, mas dentro dessas opções amplas, os detalhes deveriam ser mais óbvios no Python 3.0 do que no Python 2.x.
Compatibilidade
O Python 3.0 quebrou a compatibilidade com versões anteriores e grande parte do código do Python 2 não é executado sem modificações no Python 3. A tipagem dinâmica do Python combinada com os planos para alterar a semântica de certos métodos de dicionários, por exemplo, fez uma tradução mecânica perfeita de Python 2.x para Python 3.0 muito difícil. Uma ferramenta chamada "2to3" faz as partes da tradução que podem ser feitas automaticamente. Com isso, o 2to3 pareceu ser bastante bem-sucedido, embora uma revisão inicial tenha observado que havia aspectos da tradução que essa ferramenta nunca seria capaz de lidar. Antes do lançamento do Python 3, os projetos que exigiam compatibilidade com as séries 2.xe 3.x eram recomendados para ter uma fonte (para a série 2.x) e produzir versões para a plataforma Python 3.x usando 2to3. As edições no código Python 3.x foram desencorajadas enquanto o código precisava ser executado no Python 2.x. Isso não é mais recomendado; a partir de 2012, a abordagem preferida era criar uma única base de código que pudesse ser executada em Python 2 e 3 usando módulos de compatibilidade.
Recursos
Algumas das principais mudanças incluídas no Python 3.0 foram:
- Mudar
print
para que seja uma função embutida , não uma instrução. Isso tornou mais fácil alterar um módulo para usar uma função de impressão diferente, além de tornar a sintaxe mais regular. No Python 2.6 e 2.7print()
está disponível como integrado, mas é mascarado pela sintaxe da instrução de impressão, que pode ser desativada digitandofrom __future__ import print_function
no topo do arquivo - Remoção da
input
função Python 2 e renomeação daraw_input
função parainput
. Ainput
função do Python 3 se comporta como araw_input
função do Python 2 , em que a entrada é sempre retornada como uma string em vez de ser avaliada como uma expressão - Movendo-se
reduce
(mas nãomap
oufilter
) para fora do namespace integrado e para dentrofunctools
(a lógica é que o código que usareduce
é menos legível do que o código que usa um loop for e uma variável de acumulador) - Adicionando suporte para anotações de função opcionais que podem ser usadas para declarações de tipo informal ou outros fins
- Unificando os tipos
str
/unicode
, representando o texto e introduzindo umbytes
tipo imutável separado ; e umbytearray
tipo mutável geralmente correspondente , sendo que ambos representam matrizes de bytes - Remover recursos de compatibilidade com versões anteriores, incluindo classes de estilo antigo, exceções de string e importações relativas implícitas
- Uma mudança na funcionalidade da divisão inteira : no Python 2,
5 / 2
é2
; em Python 3,5 / 2
é2.5
. (Tanto no Python 2 (2.2 em diante) quanto no Python 3, existe um operador separado para fornecer o comportamento antigo:5 // 2
é2
)
Versões subsequentes da série Python 3.x incluíram novos recursos adicionais substanciais; todo o desenvolvimento contínuo da linguagem é feito na série 3.x.
Tabela de versões
Versões antes das versões numeradas:
- Implementação iniciada - dezembro de 1989
- Lançamentos internos no Centrum Wiskunde & Informatica - 1990
Versão | Versão micro mais recente | Data de lançamento | Fim do suporte total | Fim das correções de segurança |
---|---|---|---|---|
0.9 | 0.9.9 | 20/02/1991 | 29/07/1993 | |
1.0 | 1.0.4 | 26/01/1994 | 15/02/1994 | |
1,1 | 1.1.1 | 11/10/1994 | 10/11/1994 | |
1,2 | 13/04/1995 | Sem suporte | ||
1,3 | 13/10/1995 | Sem suporte | ||
1,4 | 25/10/1996 | Sem suporte | ||
1,5 | 1.5.2 | 03/01/1998 | 13/04/1999 | |
1,6 | 1.6.1 | 05/09/2000 | 2009-09 | |
2.0 | 2.0.1 | 16/10/2000 | 22/06/2001 | |
2,1 | 2.1.3 | 15/04/2001 | 09/04/2002 | |
2,2 | 2.2.3 | 21/12/2001 | 30/05/2003 | |
2,3 | 2.3.7 | 29/06/2003 | 11/03/2008 | |
2,4 | 2.4.6 | 30/11/2004 | 19/12/2008 | |
2,5 | 2.5.6 | 19/09/2006 | 26/05/2011 | |
2,6 | 2.6.9 | 01/10/2008 | 24-08-2010 | 29/10/2013 |
2,7 | 2.7.18 | 03/07/2010 | 01-01-2020 | |
3,0 | 3.0.1 | 03-12-2008 | 27/06/2009 | |
3,1 | 3.1.5 | 27/06/2009 | 12/06/2011 | 06/04/2012 |
3,2 | 3.2.6 | 20/02/2011 | 13/05/2013 | 20/02/2016 |
3,3 | 3.3.7 | 29/09/2012 | 08/03/2014 | 29/09/2017 |
3,4 | 3.4.10 | 16/03/2014 | 09/08/2017 | 18/03/2019 |
3,5 | 3.5.10 | 13/09/2015 | 08/08/2017 | 30/09/2020 |
3,6 | 3.6.15 | 23-12-2016 | 24/12/2018 | 2021-12 |
3,7 | 3.7.12 | 27/06/2018 | 27/06/2020 | 2023-06 |
3,8 | 3.8.12 | 14/10/2019 | 2021-05-03 | 2024-10 |
3,9 | 3.9.7 | 05/10/2020 | 2022-05 | 2025-10 |
3,10 | 3.10.0 | 2021-10-04 | 2023-05 | 2026-10 |
3,11 | 3.11.0a0 | 2022-10-03 | 2024-05 | 2027-10 |
Lenda: |
Versão antiga
Versão mais antiga, ainda mantida
Última versão
Versão de visualização mais recente
Lançamento futuro
|
|||
Itálico indica a micro versão mais recente das versões atualmente suportadas em 2021-07-15. |
Notas de mesa: