Neste guia, compararemos as linguagens de programação Rust e Python. Discutiremos os casos de uso aplicáveis para cada um, revisaremos os prós e os contras do uso do Rust versus Python e explicaremos por que o Rust está prestes a superar o Python em popularidade.
Abordaremos o seguinte:
- O que é ferrugem?
- O que é Python?
- Quando usar Rust
- Quando usar Python
- Por que o Rust poderia substituir o Python
O que é ferrugem?
Rust é uma linguagem multiparadigma que capacita os desenvolvedores a criar softwares confiáveis e eficientes. O Rust se concentra na segurança e no desempenho, semelhante a C e C ++, e é rápido e tem uso eficiente de memória sem coleta de lixo. Ele se integra com outras linguagens e também é executado em um sistema embarcado.
Rust tem documentação excelente , um compilador amigável com mensagens de erro úteis e ferramentas de última geração, incluindo um gerenciador de pacotes integrado, ferramentas de compilação, suporte a multi-editor inteligente com preenchimento automático e inspeções de tipo, um autoformatador e muito mais.
O Rust foi introduzido em 2010 por Graydon Hoare da Mozilla Research. Embora seja uma linguagem jovem em comparação com Python, Rust tem um comunidade em constante crescimento . Na verdade, 86 por cento dos entrevistados do “ Pesquisa de desenvolvedores de 2020 ” nomeou Rust como sua linguagem de programação favorita de 2020.
À primeira vista, Rust ser tipificado de forma estática e forte pode parecer extremo. Como você verá, isso ajuda a longo prazo a evitar comportamento inesperado do código.
O que é Python?
Python é uma linguagem de programação projetada para ajudar os desenvolvedores a trabalhar com mais eficiência e integrar sistemas com mais eficácia. Como Rust, Python é multiparadigma e projetado para ser extensível. Você pode usar chamadas de API de nível inferior, como CPython , se a velocidade for primordial.
Python, que remonta a 1991 quando foi introduzido por Guido van Rossum, é notável por sua legibilidade de código, eliminação de ponto-e-vírgulas e chaves.
Além de sua natureza extensível, Python é uma linguagem interpretada, o que a torna mais lenta do que a maioria das linguagens compiladas. Como você pode esperar, dada sua maturidade, Python tem um grande ecossistema de bibliotecas e uma grande comunidade dedicada.
Quando usar Rust
Rust é usado no desenvolvimento de sistemas, sistemas operacionais, sistemas corporativos, aplicativos de microcontroladores, sistemas incorporados, sistemas de arquivos, componentes de navegador, mecanismos de simulação para realidade virtual e muito mais.
Rust é uma linguagem ideal quando o desempenho é importante porque funciona bem para processar grandes quantidades de dados. Ele pode lidar com operações com uso intenso de CPU, como a execução de algoritmos, motivo pelo qual Rust é mais adequado do que Python para desenvolvimento de sistema.
Rust garante a segurança da memória e permite que você controle o comportamento das threads e como os recursos são alocados entre as threads. Isso permite que você crie sistemas complexos, o que dá a Rust uma vantagem sobre Python.
Para resumir, você deve usar Rust quando:
- Seu projeto exige alto desempenho
- Você está construindo sistemas complexos
- Você valoriza a segurança da memória acima da simplicidade
Quando usar Python
Python pode ser usado em muitos domínios de aplicativo, desde desenvolvimento da Web, ciência e análise de dados, IA e aprendizado de máquina a desenvolvimento de software.
Python é amplamente usado para aprendizado de máquina, ciência de dados e IA porque é:
- Simples e fácil de codificar em
- Flexível
- Embalado com uma ampla seleção de pacotes e bibliotecas orientados a dados
- Suportado por um excelente ecossistema de ferramentas e bibliotecas
Você deve usar Python quando:
- Você precisa de uma linguagem flexível que ofereça suporte ao desenvolvimento da Web, ciência e análise de dados, aprendizado de máquina e IA
- Você valoriza a legibilidade e a simplicidade
- Você precisa de uma linguagem amigável para iniciantes
- Você prefere simplicidade de sintaxe e velocidade de desenvolvimento em vez de desempenho
Por que a ferrugem pode substituir o Python
Dada a popularidade crescente do Rust e a ampla variedade de casos de uso, parece quase inevitável que ele supere o Python em um futuro próximo. Abaixo estão alguns motivos.
Desempenho
Um dos principais motivos pelos quais o Rust está ultrapassando o Python é o desempenho. Como o Rust é compilado diretamente no código de máquina, não há máquina virtual ou intérprete entre seu código e o computador.
Outra vantagem importante sobre o Python é o gerenciamento de memória e thread de Rust. Embora Rust não tenha coleta de lixo como Python, o compilador em Rust impõe verificações de vazamentos de referência de memória inválida e outros comportamentos perigosos ou irregulares.
Linguagens compiladas são geralmente mais rápidas do que linguagens interpretadas. Mas o que coloca o Rust em um nível diferente é que ele é quase tão rápido quanto C e C ++, mas sem sobrecarga.
Vamos ver um exemplo de um programa O (log n) escrito em Python e calcular o tempo que leva para completar a tarefa usando uma abordagem iterativa:
importar aleatório importar data e hora def binary_searcher (search_key, arr): baixo=0 alto=len (arr)-1 enquanto baixo <=alto: mid=int (low + (high-low)//2) if search_key==arr [mid]: retornar verdadeiro if search_keyarr [mid]: baixo=médio + 1 retorna falso
Resultado:
> python-m binny.py Demorou 0,0086 ms para pesquisar
Agora vamos dar uma olhada em um programa O (log n) cronometrado escrito em Rust usando uma abordagem iterativa:
> use rand:: thread_rng; use std:: time:: Instant; use floating_duration:: TimeFormat; fn binary_searcher (search_key: i32, vec: & mut Vec)-> bool { deixe mut baixo: usize=0; deixe mut alto: usize=vec.len ()-1; deixe mut _mid: usize=0; enquanto baixo <=alto { _mid=baixo + (alto-baixo)/2; if search_key==vec [_mid] { return true; } if search_key vec [_mid] { baixo=_mid + 1; } } retorna falso; } fn main () { deixe mut _rng=thread_rng (); deixe mut int_vec=Vec:: new (); deixe max_num=1000000; para num em 1..max_num { int_vec.push (num como i32); } vamos começar=Instant:: now (); let _result=binary_searcher (384723, & mut int_vec); println! ("Demorou: {} para pesquisar", TimeFormat (start.elapsed ())); }
Resultado:
> corrida de carga Destino (s) de dev [unoptimized + debuginfo] concluído em 0,04s Executando target \ debug \ algo_rusty.exe Demorou: 4.600μs para pesquisar
Demorou Rust 0,0000046 segundos para concluir a tarefa, em comparação com 0,0086 segundos para Python.
É evidente que Rust supera Python.
Gerenciamento de memória
Python, assim como a maioria das linguagens de programação modernas, é projetado para ser seguro para a memória. Ainda assim, o Rust dá ao Python uma chance de perder seu dinheiro quando se trata de segurança de memória, mesmo sem a coleta de lixo.
Rust adotou uma maneira única de garantir a segurança da memória que envolve um sistema de propriedade e um verificador de empréstimo. O verificador de empréstimo de Rust garante que as referências e ponteiros não sobrevivam aos dados para os quais apontam.
Verificação e diagnóstico de erros
Python, como qualquer outra linguagem, fornece verificação de erros e mecanismos de registro. Mas há um certo contraste entre Rust e Python quando se trata de informar ao desenvolvedor o que deu errado.
Veja este exemplo típico de um erro de variável Python:
maçã=15 print ('As maçãs disponíveis são:', maçã)
Saída Python:
Traceback (última chamada mais recente): Arquivo"binny.py", linha 2, emprint ('As maçãs disponíveis são:', aple) NameError: o nome'aple'não foi definido
Um exemplo semelhante em Rust:
fn main () { deixe maçã=15; println! ("As maçãs disponíveis são:", maçã); }
Saída de ferrugem:
println! ("As maçãs disponíveis são:", aple); ^^^^ help: existe uma variável local com um nome semelhante: `apple`
Aqui, Rust recomenda possíveis variáveis que podem ser o que você deseja digitar. Python apenas lança o erro sem dar sugestões sobre como corrigi-lo.
Veja, por exemplo:
fn main () { deixe grama=13; grama +=1; }
Este código gera um erro porque as variáveis em Rust são imutáveis por padrão. A menos que tenha a palavra-chave ou``t
, não pode ser alterado.
Erro:
deixe grama=13; |----- | | | primeira atribuição para `grama` | ajuda: tornar este vínculo mutável: `mut grass`
Erro corrigido:
fn main () { deixe mut _grass: i32=13; _grass +=1; }
Como você pode ver, agora ele não gera erros. Além disso, o Rust não permite que diferentes tipos de dados operem entre si, a menos que sejam convertidos para o mesmo tipo.
Devido a esse comportamento, manter uma base de código Rust geralmente é fácil. A ferrugem não permite mudanças a menos que especificado. Python permite mudanças dessa natureza.
Rust é desejável devido à sua velocidade, segurança de memória garantida, incrível confiabilidade, consistência e facilidade de uso em comparação com a maioria das linguagens compiladas. Estamos chegando a um ponto na programação em que a velocidade começa a se tornar um acéfalo.
À medida que a tecnologia evolui, ela se torna mais rápida, tentando fazer mais em menos tempo sem tantas compensações. Rust ajuda a conseguir isso sem atrapalhar o desenvolvedor. À medida que a tecnologia tenta ultrapassar os limites do que pode ser alcançado, ela também considera a segurança e a confiabilidade do sistema, que é a principal ideologia por trás da ferrugem.
Computação paralela
Além da velocidade, o Python também tem limitações quando se trata de computação paralela.
Python usa Global Interpreter Lock (GIL), que incentiva apenas uma única thread a ser executada ao mesmo tempo para aumentar o desempenho de threads únicas. Este processo é um obstáculo porque significa que você não pode usar vários núcleos de CPU para computação intensiva.
Comunidade
Conforme mencionado anteriormente, 86 por cento dos entrevistados no “ 2020 Developer Survey ”nomeou Rust como sua linguagem de programação favorita de 2020.
Da mesma forma, os entrevistados do “ Relatório de habilidades do desenvolvedor do HackerRank 2020 ”Colocou o Rust entre as 10 principais linguagens de programação que eles planejam aprender a seguir:
Em contraste, a pesquisa de 2019 colocou Rust no final da lista, sugerindo que a comunidade de desenvolvedores do Rust está crescendo rapidamente.
Como mostram os dados, Rust está se tornando parte da comunidade de desenvolvedores principal. Muitas grandes empresas usam o Rust e alguns desenvolvedores até o usam para construir bibliotecas que outras linguagens de programação usam. Usuários notáveis do Rust incluem Mozilla, Dropbox, Atlassian, npm e Cloudflare, para citar apenas alguns.
O Amazon Web Service também adotou o Rust para componentes sensíveis ao desempenho em Lambda, EC2 e S3. Em 2019, a AWS anunciou seu patrocínio do projeto Rust e desde que forneceu ao Rust o SDK da AWS.
As empresas estão substituindo cada vez mais linguagens de programação mais lentas por outras mais eficientes, como Rust. Nenhuma outra linguagem acerta o equilíbrio entre simplicidade e velocidade como o Rust.
Conclusão
Rust evoluiu para uma linguagem de programação padrão e, como resultado, teve um aumento em sua adoção. Embora o Python ocupe um lugar firme na comunidade de aprendizado de máquina/ciência de dados, o Rust provavelmente será usado no futuro como um back-end mais eficiente para bibliotecas Python.
Rust tem um grande potencial para substituir Python. Com a tendência atual como uma linguagem de programação preferida em termos de aplicativo, desempenho e velocidade, Rust não é apenas uma linguagem de programação, é uma forma de pensar.
A postagem Rust vs. Python: Por que Rust poderia substituir Python apareceu primeiro no LogRocket Blog .