WEB3DEV

Cover image for Uma comparação entre Solidity, Rust, Vyper e Move
Fatima Lima
Fatima Lima

Posted on

Uma comparação entre Solidity, Rust, Vyper e Move

O que é uma linguagem de programação? É um conjunto de regras para converter texto e cadeias numéricas em código legível por máquina.

Em termos simples, uma linguagem de programação permite que um computador entenda as instruções inseridas por um ser humano. Se imaginarmos a civilização humana como um carro, então o setor de desenvolvimento de software é equivalente ao motor do carro e as linguagens de programação são como o combustível para o motor.

Com o desenvolvimento dos computadores, surgiram as linguagens de programação clássicas, incluindo C/C++, Java, Python etc. E essas diferentes linguagens de programação foram inventadas para resolver problemas em diferentes campos. E, à medida que a indústria de blockchain continua a evoluir e novas redes de blockchain surgem, novas linguagens de programação, como Solidity, Vyper e Move também foram criadas, e linguagens de programação bastante clássicas foram introduzidas no campo, como o Rust.

Quando um desenvolvedor entra na Web3, com qual linguagem de programação ele deve começar? Ou qual linguagem de programação é a melhor para você? Neste artigo, selecionaremos quatro linguagens de programação convencionais: Solidity, Rust, Vyper e Move para oferecer aos leitores um pouco de inspiração para a escolha de uma linguagem de desenvolvimento.

Image description

Solidity

O Solidity é uma linguagem de programação estática de alto nível, orientada a objetos, que foi originariamente executada na Máquina Virtual Ethereum (EVM) para a criação de contratos inteligentes. Originariamente teorizada por Gavin Wood e eventualmente desenvolvida por Christian Reitwiessner em 2014, o Solidity oferece conceitos disponíveis na maioria das linguagens de programação modernas, com funções, manipulação de strings, classes, variáveis, operações aritméticas e muito mais, com semelhanças com linguagens de programação como JavaScript, C++ e Python. Linguagem de programação com completude de Turing.

Principais Recursos

  • Orientada a objeto — uma abordagem de programação que se concentra no desenvolvimento de software em torno de dados e objetos, em vez de lógica e funcionalidade.

  • Linguagem de alto nível — uma linguagem que torna o desenvolvimento de software mais fácil de usar por ser independente da arquitetura de hardware do computador.

  • Tipagem estática — uma linguagem que verifica erros e tipos no momento da compilação.

  • A seguir, um exemplo de um contrato inteligente usando o Solidity.

Image description

Vantagens na Web3

Como a primeira linguagem programável de contrato inteligente de blockchains, as vantagens de usar o Solidity como linguagem de programação de blockchain são: O Solidity é mais fácil de aprender e há mais ferramentas de desenvolvimento para o Solidity.

1. Mais fácil para aprender

O Solidity é uma linguagem de alto nível, seu código é legível e fácil de entender, e a sintaxe é semelhante à do Javascript, portanto, os desenvolvedores que têm experiência em escrever em Javascript não terão dificuldade em aprender o Solidity.

2、Várias ferramentas de desenvolvimento

O Solidity tem um grande número de excelentes ferramentas de desenvolvimento disponíveis, apoiadas por plataformas como o OpenZeppelin, que fornece bibliotecas de código aberto para o desenvolvimento seguro de contratos inteligentes. O Solidity também tem vários ambientes de desenvolvimento (IDEs), como o IDE on-line Remix e o Hardhat, um ambiente de desenvolvedor local. Esses IDEs fornecem ferramentas e recursos que facilitam o desenvolvimento de DApps.

3. Maior escopo de aplicativos

O Solidity é amplamente utilizado na Ethereum e em Layer2, portanto, os desenvolvedores familiarizados com o Solidity têm uma gama maior de opções para trabalhar em projetos de blockchain.

Considerações para o aprendizado

No entanto, antes de aprender a usar o Solidity, é importante observar que o processo de desenvolvimento do Solidity é propenso a vulnerabilidades que são difíceis de detectar em tempo hábil e, portanto, exige testes repetidos e completos do código.

Em 2021, houve pelo menos 189 incidentes de segurança relatados publicamente em todo o setor de criptomoedas, e pelo menos US$ 7,6 bilhões em ativos de criptografia foram perdidos nesses incidentes de segurança, dos quais 80% dos 181 incidentes de segurança de DApp foram causados por vulnerabilidades de contratos inteligentes. Uma das causas das vulnerabilidades dos contratos inteligentes foi uma falha no design da própria linguagem Solidity, bem como erros introduzidos pelos desenvolvedores durante o processo de desenvolvimento.

Rust

Inicialmente projetada e lançada por Graydon Hoare, funcionário do Mozilla, em 2006, o Rust é uma linguagem projetada para desempenho e segurança, especialmente simultaneidade segura, e é sintaticamente semelhante ao C++.

Principais Recursos

Ele aproveita as vantagens das linguagens estáticas - em comparação com a depuração e a incerteza do tempo de execução das linguagens dinâmicas, as linguagens tipadas estaticamente permitem verificações e restrições antecipadas em nível de compilador sobre os dados e seu comportamento, com apenas uma pequena quantidade de verificação de tipo retida no tempo de execução, o que evita muito o aborrecimento do programador e, ao mesmo tempo, incentiva a manutenção de longo prazo.

Facilitar a simultaneidade - A contenção de dados ocorre quando dois threads acessam a mesma memória ao mesmo tempo, o que pode levar a um comportamento imprevisível. O Rust elimina a contenção de dados desde o estágio de compilação, garantindo a segurança dos threads.

Melhores recursos de segurança de memória - O mecanismo de segurança de memória sem coletor de lixo é um dos designs clássicos e essenciais do Rust.

Aqui está um exemplo de um contrato inteligente usando Rust.

Image description

Vantagens na Web3

Em comparação com o Solidity, o Rust é uma linguagem de programação de baixo nível e multiparadigma que é rápida e eficiente em termos de memória - promissora quando a escalabilidade é limitada e, de fato, na Web3, a segurança da memória e o alto desempenho do Rust são favoráveis ao desenvolvimento de DApps. De fato, na Web3, a segurança de memória e o alto desempenho do Rust são muito favoráveis ao desenvolvimento de DApps, e a Polkadot, Solana e Near estão atualmente usando a linguagem Rust como sua principal linguagem de desenvolvimento.

1、Segurança de Memória

A segurança de memória é uma propriedade de algumas linguagens de programação que impede que os programadores cometam certos tipos de erros relacionados à memória. O Rust implementa a segurança de memória usando os princípios de propriedade e empréstimo. O Rust garante a segurança de memória eliminando erros relacionados à memória durante a compilação, o que o torna eficiente em termos de memória sem a necessidade de coletores de lixo, como em outras linguagens seguras para memória.

2. Rápido e Produtivo

O Rust permite a criação de programas descentralizados com alto rendimento e alto desempenho, que são recursos essenciais para DApps em grande escala. O Rust é executado com mais eficiência porque pode obter segurança de memória sem o uso de um coletor de lixo.

Considerações para o Aprendizado

Ao mesmo tempo, é importante observar que, embora o Rust compense as deficiências de segurança e desempenho do Solidity, a sintaxe do Rust é muito mais difícil de aprender, escrever e ler, e muitas vezes é intimidante. No entanto, o roteiro do time de design da linguagem Rust para 2024, publicado no blog oficial da equipe de design da linguagem Rust, indica que a redução da curva de aprendizado é o caminho a seguir para o Rust, já que a equipe Lang procura simplificar os programas, facilitando aos desenvolvedores expressar a intenção do código sem ter que lidar com as minúcias da implementação lógica.

Para saber mais sobre a linguagem Rust, consulte o artigo anterior da OneBlock sobre a série Rust: Deseja saber mais sobre a linguagem Rust?? Aqui está tudo o que você quer saber (acima), e Aqui está tudo o que você quer saber sobre a linguagem Rust? Aqui está o que você quer saber (abaixo).

Vyper

O Vyper é uma linguagem de contrato inteligente Pythonica criada em 2017 que compila um bytecode EVM como o Solidity. Os desenvolvedores aprenderam com os problemas do Solidity e projetaram a linguagem para ser mais simples, mais segura e mais fácil de auditar.

Ela remove recursos que se mostraram problemáticos no Solidity. Não é um substituto para o Solidity, mas uma linguagem a ser usada quando o mais alto nível de segurança for necessário. Exemplos de projetos escritos em Vyper incluem a Uniswap v1 e o primeiro contrato de depósito ETH 2.0.

Principais Recursos

Segurança: "Deve ser possível e natural criar contratos inteligentes seguros no Vyper."

Simplicidade da linguagem e do compilador: "A implementação da linguagem e do compilador deve ter o objetivo de ser simples."

Auditabilidade: O Vyper também tem o objetivo de dificultar ao máximo que alguém escreva códigos enganosos. A simplicidade para o leitor (ou seja, o auditor) é mais importante do que a simplicidade para o autor (ou seja, o desenvolvedor). Isso facilitará a identificação de códigos maliciosos em contratos inteligentes ou aplicativos descentralizados (DApps).

A seguir, um exemplo de um contrato inteligente usando o Vyper.

Image description

Considerações para o aprendizado

Nesse meio tempo, é importante observar que poucos projetos adotaram o Vyper como sua linguagem de contrato inteligente e, no momento em que este artigo foi escrito, o número de contratos Vyper e Solidity no Github era de 3.549 e 2.389.529, respectivamente. A eficácia e a segurança do Vyper ainda estão em processo de aprimoramento.

Move

O Move é uma linguagem de programação que se tornou muito popular nos últimos meses. De fato, o Move é uma linguagem de programação baseada em uma adaptação do Rust que foi criada em 2019 e originalmente desenvolvida para o projeto de blockchain Diem da Meta. Depois que o projeto Diem foi dissolvido, seu time fundador saiu para criar o Aptos e o Sui, respectivamente, que também usam o Move como sua linguagem de programação principal.

Principais Recursos

Programação orientada a ativos: recursos como cidadãos de primeira classe foi a filosofia de design por trás da linguagem Move desde o seu início; o Move introduz o conceito de um "recurso" que nunca pode ser copiado ou implicitamente descartado, mas que só pode ser movido entre os locais de armazenamento do programa. Isso significa que cada recurso no Move tem propriedades de escassez nativa e controle de acesso.

Segurança: A linguagem Move herda muitos dos recursos de segurança do Rust durante o processo de design e, também, o time do Move. Ela é complementada pelo Move Prover, um verificador formal, e pelo bytecode verifier, um verificador de tempo de execução, para fornecer segurança para contratos inteligentes.

Modularidade: Ao contrário do Solidity, os dados em um contrato inteligente só podem ser modificados dentro do escopo do contrato e não podem ser modificados externamente a partir de outros contratos. No desenvolvimento do Move, muitos dos módulos básicos são continuamente iteráveis e atualizáveis.

Veja a seguir exemplos de código.

Image description

Considerações para o aprendizado

Ao mesmo tempo, é importante observar que a linguagem Move ainda é muito nova e ainda não está pronta para uso em engenharia de larga escala, e ainda precisa de tempo para provar que é segura e à prova de erros. Alguns dos recursos de personalização do Move no Aptos e no Sui também trazem problemas para os desenvolvedores de aplicativos de multi-chain ou de full-chain; o ecossistema de contratos do Move ainda não é perfeito e o desenvolvimento de contratos do Move enfrentará muitos problemas de cold start (partida a frio).

Conclusão

Em resumo, cada linguagem de programação possui características diferentes. Como a primeira linguagem programável de contrato inteligente de blockchain e como a principal linguagem de programação na Ethereum e na maioria das outras grandes redes de blockchain, o Solidity ainda é procurado como a linguagem número um no setor Web3 para desenvolvedores que podem dominá-la e, como resultado, o Solidity é visto por muitos desenvolvedores como uma linguagem introdutória para o desenvolvimento de blockchain.

Para o desenvolvimento do Solidity, a OneBlock e a Moonbeam estão oferecendo atualmente o curso Moonbeam Getting Started - Easy to Start Cross-Chain Solidity Development em 18 de outubro de 2022, para desenvolvedores do Solidity que desejam desenvolver aplicativos no ecossistema Poca, desenvolvedores de Substrate que desejam iniciar o desenvolvimento de contratos inteligentes do Solidity e desenvolvedores juniores de contratos inteligentes que desejam conhecer as diferentes ferramentas de desenvolvimento do Solidity. O curso tem certificação oficial + instrutor profissional do curso + conteúdo sistemático do curso + tarefas práticas simples + feedback individual do assistente de ensino.

Antes que o Vyper e o Move precisem de tempo para serem verificados, o Rust é visto como uma linguagem de programação de blockchain em potencial nos últimos anos. Da mesma forma, para o desenvolvimento do Rust, o "Curso introdutório de desenvolvimento de blockchain do Substrate", co-organizado pela OneBlock e pela Parity, se concentrará na tecnologia básica de blockchain, nas habilidades básicas do Rust e do Substrate etc. Ele foi realizado com sucesso em 9 sessões. O 10º "Curso de introdução ao desenvolvimento de blockchain com o Substrate" será realizado em 18 de novembro de 2022 para todos os desenvolvedores de blockchain "0-1" interessados no desenvolvimento de blockchain, mas que não têm experiência ou habilidades e métodos sistemáticos. Novatos.

É muito difícil julgar o desenvolvimento de uma linguagem porque ninguém pode ver o quadro completo de seu desenvolvimento. Antes de decidir qual linguagem é mais adequada, os desenvolvedores precisam pesar o valor e a importância em sua mente.

A demanda por empregos em cada linguagem está aumentando, e os desenvolvedores que são multilíngues terão mais oportunidades de escolher empregos.

Sobre a OneBlock+

A OneBlock+ é a primeira e a maior comunidade de desenvolvedores de blockchain em todo o mundo. Na OneBlock+, fornecemos suporte total aos desenvolvedores com seus estudos de Substrate e iniciamos suas carreiras. Realizamos Hackathons Polkadot a cada temporada para atrair desenvolvedores de alto nível para criar e inovar para a prosperidade do ecossistema. Como um grande integrador global de recursos tecnológicos, a OneBlock+ também faz parcerias com desenvolvedores, comunidades, elites empresariais e mídias importantes que têm percepções e experiências empresariais no setor de blockchain para oferecer eventos educacionais, como cursos técnicos, webinars, AMAs e eventos off-line para o setor. Quer moldar o mundo das criptomoedas juntos? Junte-se a nós agora mesmo!

Twitter / Telegram / Discord / YouTube

Esse artigo foi escrito por OneBlock+ e traduzido por Fátima Lima. O original pode ser lido aqui.

Oldest comments (0)