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?

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_key  arr [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, em  print ('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.

Rust vs. Python: Stack Overflow Survey

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:

Rust vs. Python: HackerRank Survey 2020

Em contraste, a pesquisa de 2019 colocou Rust no final da lista, sugerindo que a comunidade de desenvolvedores do Rust está crescendo rapidamente.

Rust vs. Python: HackerRank Survey 2019

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 .

Source link