O Python é muito útil, mas pode não ser a linguagem de programação do futuro
Python supera Java, C# e C++ somados em presença no Stack Overflow; interesse é alto, mas há desvantagens nessa linguagem de programação
Python supera Java, C# e C++ somados em presença no Stack Overflow; interesse é alto, mas há desvantagens nessa linguagem de programação
A comunidade de programadores levou algumas décadas para dar valor ao Python. Mas desde o início dos anos 2010, ele vem crescendo – e inclusive superando C, C#, Java e JavaScript em popularidade. Mas até quando essa tendência continuará? Quando o Python acabará sendo substituído por outras linguagens, e por quê?
Colocar uma data de validade no Python seria uma especulação no nível de ficção científica. Em vez disso, vamos avaliar as virtudes que estão impulsionando a popularidade do Python agora, e os pontos fracos que poderão quebrá-lo no futuro.
O sucesso do Python se reflete nas tendências do Stack Overflow, que medem a contagem de tags nos posts na plataforma. Dado o tamanho do Stack Overflow, este é um bom indicador para a popularidade da linguagem.
Cerca de 16% de todas as perguntas do Stack Overflow são marcadas como “python” – mais do que Java, C# e C++ somados. Enquanto isso, o R estagnou nos últimos anos e muitas outras linguagens passaram por um declínio constante. Há várias razões para o alto interesse em Python.
O Python existe desde os anos 90. Isso não significa apenas que ele teve muito tempo para crescer: ele também pôde conquistar uma comunidade grande e solidária.
Se você tiver algum problema ao escrever código em Python, as chances são altas de que você poderá resolver isso com uma única busca no Google – simplesmente porque alguém já encontrou seu problema e escreveu algo útil sobre ele.
O Python existe há décadas, dando aos programadores tempo para criar tutoriais brilhantes. Além disso, a sintaxe desta linguagem é muito legível por humanos.
Para começar, não há necessidade de especificar o tipo de dado. Você apenas declara uma variável, e o Python entende pelo contexto se é um número inteiro, um valor flutuante, um booleano ou qualquer outra coisa. Esta é uma vantagem enorme para iniciantes. Quem trabalha com C++ sabe como é frustrante quando o programa não é compilado porque você trocou um float por um inteiro.
E se você já teve que ler código em Python e C++ lado a lado, deve entender como o Python é compreensível. Embora o C++ tenha sido projetado com o idioma inglês em mente, essa é uma leitura mais complicada em relação ao código em Python.
Como o Python existe há bastante tempo, os desenvolvedores criaram um pacote para cada propósito. Hoje em dia, você pode encontrar um pacote para quase tudo.
Quer processar números, vetores e matrizes? Vá de NumPy. Quer fazer cálculos para tecnologia e engenharia? Use o SciPy. Quer trabalhar com preparo e análise de dados? Experimente o Pandas. Quer começar a explorar inteligência artificial? Conheça o Scikit-Learn.
Qualquer que seja a tarefa computacional, é provável que exista um pacote Python para ela. Isso faz com que o Python seja relevante para desenvolvimentos recentes, o que pode ser visto no aumento de interesse pelo aprendizado de máquina nos últimos anos.
Com base no que eu disse antes, você talvez imagine que o Python vai permanecer no topo por muito tempo. Mas, como toda tecnologia, o Python tem seus pontos fracos. Vamos passar pelas falhas mais importantes, uma a uma, a seguir.
À medida que migramos do desktop para o smartphone, fica claro que precisamos de linguagens robustas para criar software pensado para dispositivos móveis.
No entanto, poucos aplicativos mobile estão sendo desenvolvidos com Python. Não se trata de algo impossível: existe um pacote Python chamado Kivy para essa finalidade.
Mas o Python não foi feito pensando em dispositivos móveis. Portanto, embora ele possa produzir resultados aceitáveis para tarefas básicas, a melhor aposta é usar uma linguagem criada para desenvolvimento de aplicativos móveis. Alguns frameworks de programação amplamente usados para dispositivos móveis incluem React Native, Flutter, Ionic e Cordova.
Claro, notebooks e PCs devem continuar existindo por muitos anos. Mas como os dispositivos móveis há muito ultrapassaram a quantidade de desktops, é seguro dizer que aprender Python não basta para se tornar um desenvolvedor versátil experiente.
Um script em Python não é primeiro compilado e então executado. Em vez disso, ele compila toda vez que você o executa, portanto, qualquer erro de codificação se manifesta no tempo de execução (runtime). Isso leva a um baixo desempenho, consome tempo e exige muitos testes – muitos mesmo.
Isso é ótimo para iniciantes, pois os testes ensinam bastante. Mas para desenvolvedores experientes, pode ser um problema depurar um programa complexo em Python.
O Python costumava ser bem lento na execução, rodando de 2 a 10 vezes mais devagar do que a maioria das outras linguagens. Ele melhorou muito nos últimos anos: o pacote Numpy, por exemplo, é incrivelmente rápido ao lidar com listas, matrizes e afins.
O suporte a multiprocessamento também ajudou bastante: isso permite que você use todos os núcleos do processador no seu PC, em vez de apenas um. Eu venho rodando processos em 20 núcleos por vez e, olha, isso já me economizou semanas em tempo de computação.
Ainda assim, o Python continua sendo mais lento que algumas alternativas. Ele é dinamicamente tipado, ou seja, você não precisa especificar tipos de dados como em outras linguagens. Isso significa que o programa precisa reservar espaço suficiente para cada variável que ele computa, o que consome muita memória – e resulta em um tempo maior de processamento.
No Python, você usa espaços em branco e recuos para indicar diferentes níveis de código. Isso o torna visualmente atraente e intuitivo de entender.
Outras linguagens, como o C++, dependem mais de chaves e ponto-e-vírgula. Embora possa não ser visualmente atraente e amigável para iniciantes, isso torna o código muito mais fácil de manter. Para projetos maiores, é muito mais útil.
Linguagens mais recentes inspiradas pelo Haskell resolvem esse problema ao adotar o uso dos espaços em branco, ao mesmo tempo oferecendo uma sintaxe alternativa sem eles.
Em programação, o escopo de uma variável determina se você pode ou não acessá-la e modificá-la em certas partes do software. Trata-se do contexto no qual essa variável pode ser “vista” e usada. Por exemplo, se você declarar uma variável “x” dentro de uma função, ela só ficará visível dentro do corpo dessa função.
Originalmente, o Python tinha escopo dinâmico. Isso basicamente significa que, para avaliar uma expressão, o compilador primeiro analisa o bloco atual do código, depois vai passando sucessivamente por todas as funções.
O problema do escopo dinâmico é que toda expressão precisa ser testada em todo contexto possível — o que é tedioso. É por isso que a maioria das linguagens de programação modernas usa escopo estático.
O Python tentou fazer a transição para o escopo estático, o que não deu muito certo. Normalmente, escopos internos — por exemplo, funções dentro de funções — seriam capazes de ver e alterar escopos externos. No Python, os escopos internos podem apenas ver os escopos externos, mas não podem alterá-los. Isso leva a muita confusão.
Em Python, uma função lambda é um tipo especial de função que não tem nome definido e fica contida em apenas uma linha de código.
Por exemplo, se você quiser obter o dobro de um número, pode criar uma função tradicional que faz isso:
def dobro_de_x(x):
return x*2
Ou você pode fazer o seguinte:
lambda x: x*2
Ainda há esta opção:
dobro_de_x(x) = lambda x: x*2
Apesar de toda a flexibilidade do Python, o uso de funções lambda é bastante restritivo. Elas só podem ser expressões, não declarações.
No Python, uma declaração é uma instrução que o interpretador pode executar – como “if”, “for” e “while”. Por outro lado, uma expressão é uma combinação de elementos que precisam ser avaliados – isso inclui valores, variáveis, operadores e chamadas de funções.
A distinção entre expressões e declarações é bastante arbitrária e não ocorre em outras linguagens.
Existem alguns concorrentes relativamente novos no mercado de linguagens de programação:
Embora existam muitas outras linguagens por aí, o Rust, o Go e a Julia são as que corrigem pontos fracos do Python. Todas elas se destacam em tecnologias que vêm ganhando força, principalmente no ramo de inteligência artificial. A participação de mercado delas ainda é pequena, como você pode ver abaixo no número de tags no Stack Overflow, mas a tendência parece promissora:
Sim, o Python ainda deve continuar em alta demanda por mais alguns anos. Dada a popularidade dele no momento, certamente levará meia década, talvez até uma década inteira, para que qualquer uma dessas novas linguagens o substitua.