Por que o futuro não é para Python

Embora, é claro, essa linguagem de programação seja procurada por muitos mais anos.



A comunidade de programação levou décadas para apreciar o Python. Desde o início dos anos 2010, ele vem crescendo - e, em última análise, supera popularidade em C ++, C #, Java e JavaScript.

Mas por quanto tempo essa tendência continuará? Quando o Python será substituído por outras linguagens? Por que isso inevitavelmente acontecerá?
EDISON Software - desenvolvimento web
A tradução foi apoiada pela EDISON.

Estamos desenvolvendo aplicativos em Python , além de fazer testes de software .

Adoramos e usamos o Python extensivamente! ;-)

O que torna o Python popular hoje


A popularidade do Python pode ser julgada pelo StackOverflow, se você observar o número de tags nas postagens. Dada a escala do StackOverflow, este é um indicador bastante objetivo da popularidade do idioma.


Mencione o StackOverflow de algumas linguagens de programação populares - a dinâmica das mudanças ao longo dos anos. O desempenho do Python está crescendo constantemente, enquanto os concorrentes estão em declínio.

Embora o R esteja no platô nos últimos anos e muitas outras línguas estejam em declínio constante, o crescimento do Python parece imparável. Quase 14% de todas as perguntas do StackOverflow são rotuladas como "python" e essa tendência está crescendo apenas. E há várias razões para isso.

Tempo testado


O Python existe desde os anos noventa. Não é apenas que ele tenha tempo de sobra para crescer. E também que uma comunidade grande e solidária se formou.

Portanto, se você encontrar algum problema ao escrever o código Python, há uma alta probabilidade de resolvê-los rapidamente usando a Pesquisa Google. Só porque alguém já encontrou um problema semelhante e escreveu algo útil sobre isso.

Amigável para iniciantes


E a questão não é apenas que a linguagem existe há várias décadas, para a qual os programadores escreveram vários livros brilhantes. A sintaxe do Python também é muito legível.

Primeiro, não há necessidade de especificar um tipo de dados. Você simplesmente declara uma variável - a partir do contexto, o Python entenderá se é um número inteiro, um valor de ponto flutuante, um booleano ou qualquer outra coisa. Esta é uma grande ajuda para iniciantes. Se você já teve que programar em C ++, sabe como é triste quando um programa não é compilado porque um número inteiro é substituído em vez de um número de ponto flutuante.

E se você já teve que comparar o código Python e C ++, então sabe o quanto o Python é mais compreensível. Apesar de o C ++ ter sido projetado levando em consideração o idioma inglês, essa é uma leitura muito difícil em comparação com o código Python.

Universal


O Python existe há muito tempo, durante o qual os desenvolvedores criaram muitas bibliotecas para todas as ocasiões. Hoje em dia, para quase tudo, você encontra a ferramenta necessária.

Muitos números, vetores e matrizes? NumPy para o resgate.
Cálculos de engenharia técnica? Use SciPy .
Análise de big data? Pandas vão descobrir isso.
Aprendizado de máquina, redes neurais, IA? Por que não o Scikit-Learn ?

Não importa em qual tarefa computacional você se depara, há uma chance de que exista um pacote Python para ela. Isso permite que o idioma permaneça em tendência, o que é notável pela crescente popularidade do aprendizado de máquina nos últimos anos.

Falhas no Python - e eles podem enterrar a linguagem


Inspirado pelo estado atual das coisas, pode-se imaginar que o Python é sério e de longo prazo. Mas, como qualquer tecnologia, o Python tem suas fraquezas. Vamos examinar em ordem as deficiências mais importantes e avaliar se são fatais ou não.

Rapidez


Python é lento. Não, bem, muito lento. Em média, uma tarefa é executada de 2 a 10 vezes mais que nos idiomas concorrentes.

Há razões para isso. Primeiro, digitação dinâmica - lembre-se, dissemos acima que é muito conveniente quando você não precisa especificar tipos de dados, como em outros idiomas? O outro lado da moeda é a necessidade de usar uma grande quantidade de memória, porque o programa precisa reservar espaço suficiente para cada variável para que funcione de qualquer maneira. E a memória "com margem" leva a uma maior despesa de tempo computacional.

Em segundo lugar, o Python pode executar apenas uma tarefa por vez. Isso também é uma conseqüência de tipos de dados flexíveis - o Python deve garantir que apenas um tipo de dados corresponda a cada variável, e processos paralelos podem interferir nisso.

Mas, em geral, a velocidade não é crítica. Computadores e servidores produtivos são tão acessíveis que só podemos falar sobre frações de segundo. O usuário final não se importa se o aplicativo é carregado em 0,001 ou em 0,01 segundos.

Área de visibilidade


Python foi inicialmente limitado dinamicamente. Isso basicamente significa que, para avaliar a expressão, o compilador primeiro pesquisa o bloco atual e, em seguida, sequencialmente todas as funções de chamada.

O problema do escopo dinâmico é que todas as expressões precisam ser verificadas em todos os contextos possíveis, o que é tedioso. É por isso que a maioria das linguagens de programação modernas usa escopo estático.

O Python tentou passar para o escopo estático, mas falhou. Normalmente, escopos internos, como funções dentro de funções, podem ver e alterar escopos externos. No Python, as regiões internas podem ver apenas regiões externas, mas não alterá-las. Isso leva a muita confusão.

Funções Lambda


Apesar de toda a flexibilidade do Python, o uso do lambda é bastante limitado. Eles podem ser apenas expressões em Python, mas não operadores.

Declarações e operadores variáveis, por outro lado, são sempre operadores. Isso significa que lambdas não podem ser usadas para eles.

Essa distinção entre expressões e declarações é bastante arbitrária e não ocorre em outros idiomas.


O recuo estrito torna o código mais legível, mas sua inevitabilidade prejudica o suporte.

Espaços e Guias


No Python, espaços e guias são usados ​​para indicar diferentes níveis de código. Isso o torna visualmente atraente e intuitivo.

Em outras linguagens, como C ++, colchetes com ponto e vírgula são usados ​​para estruturas aninhadas. Embora isso possa não ser tão bonito e inconveniente para iniciantes, torna o código mais conveniente de manter. Com o crescimento do projeto, a importância dessa abordagem também aumenta.

Novas linguagens (relativamente) como Haskell resolvem esse problema: elas dependem de espaços, mas oferecem sintaxe alternativa para quem quer ficar sem elas.

Desenvolvimento móvel


Como há uma grande mudança de PCs desktop para smartphones, é óbvio que há uma necessidade crescente de idiomas confiáveis ​​para a criação de software móvel.

Mas aplicativos móveis em Python cerca de duas vezes e mal calculados. Isso não significa que isso não seja possível - para isso, existe um pacote chamado Kivy.

Python não foi criado para dispositivos móveis. Mesmo que possa fornecer resultados aceitáveis ​​para resolver problemas básicos nessa área, é melhor usar uma linguagem personalizada para o desenvolvimento de aplicativos móveis. Algumas plataformas de programação móvel comumente usadas incluem React Native, Flutter, Iconic e Cordova.

Obviamente, laptops e PCs de mesa ainda serão usados ​​por muitos anos. No entanto, os dispositivos móveis ultrapassam o tráfego de computadores há muito tempo. É seguro dizer que aprender Python não é suficiente para ser considerado um desenvolvedor experiente e abrangente .

Erros de tempo de execução


Primeiro, compilação separadamente, depois execução - em algumas outras linguagens, mas não no Python. Em vez disso, o código é compilado sempre que é executado, portanto, qualquer erro no código aparece durante a execução do programa. Isso resulta em desempenho reduzido, desperdício desnecessário de tempo e necessidade de um grande número de testes. Mais testes para o deus dos testes!

Isso é ótimo para iniciantes, pois o teste sozinho ensina muito. Mas para desenvolvedores experientes, ter que depurar um programa complexo em Python os faz errar. Essa falta de desempenho é o fator mais sério, indicando que o Python passará no futuro próximo.

O que poderia substituir o Python no futuro - e quando


Vários novos concorrentes apareceram no mercado de linguagens de programação:

  • Rust , Python — . . StackOverflow Insights, .
  • Go , Python. , . : Go — .
  • Julia é uma linguagem muito nova que concorre diretamente com o Python. Ele preenche a lacuna nos cálculos técnicos em larga escala: geralmente você pode usar Python ou Matlab, executando parte das tarefas (às vezes uma parte muito significativa) usando bibliotecas C ++. Agora, em vez de fazer malabarismos com dois idiomas, você pode simplesmente usar Julia.

Embora existam outros idiomas no mercado, Rust, Go e Julia corrigem os pontos fracos do Python. Todos esses idiomas são excelentes em tecnologias futuras, especialmente em inteligência artificial. Embora sua participação no mercado ainda seja pequena (o que se reflete no número de tags StackOverflow), a tendência para cada uma delas é óbvia: em alta e apenas em alta.


Menção no StackOverflow para Go / Rust / Julia - dinâmica de mudanças ao longo dos anos. Os indicadores ainda são modestos, mas esses idiomas têm uma tendência de alta constante.

Dada a popularidade generalizada do Python hoje, levará meia década, talvez até um todo, para que qualquer uma dessas novas linguagens o substitua.

É difícil dizer qual será o idioma - Rust, Go, Julia ou algum outro novo idioma do futuro. Mas, considerando os problemas de desempenho que são fundamentais para o Python por causa de sua arquitetura, o inevitável acontecerá mais cedo ou mais tarde.

All Articles