No mundo da computação existem atualmente pelo menos alguns 8900 linguagens de programação diferentes e muitos deles têm usos no mundo Web3. Este é um número enorme de linguagens, principalmente se levarmos em conta que a lista das linguagens de programação mais utilizadas é bem menor (menos que 100). Isso nos dá uma ideia clara de que as linguagens de programação são uma ferramenta amplamente difundida no mundo da computação em geral e o mesmo vale para o mundo Web3.
Pode-se dizer que o mundo das linguagens de programação para Web3 começou com Bitcoin Script, e isso por um motivo simples: O Web3 é a descentralização da Web, e o Bitcoin Script, mesmo com sua capacidade limitada, permite construir essa descentralização.
Na verdade, desenvolvimentos como o Colored Coins, projetos como Counterparty ou DPOC de ChromaWay (que se tornaria parte do OpenAssets), são apenas as primeiras tentativas de tornar a Web3 uma realidade maior construída sobre o Bitcoin. Atualmente, essas tentativas são replicadas em projetos como RSK e Bisq, que deixam claro que o Web3 no Bitcoin é possível, e projetos em construção, como RGB e Taro Protocol, reafirmam essa ideia.
No entanto, a chegada de Ethereum deu um grande impulso à ideia de construir o Web3. Isso se deve à chegada do contratos inteligentes e linguagens de programação Turing Complete, como Solidity. Desta forma, as possibilidades foram ampliadas e agora temos a capacidade de usar um grande número de linguagens de programação para construir o Web3.
As 10 linguagens de programação que você precisa saber para construir Web3
Já vimos que a lista de linguagens de programação é bem extensa, mas as mais utilizadas para construir Web3 são:
HTML5
O HTML5 não pode realmente ser definido como uma linguagem de programação em si (é estritamente uma linguagem de marcação), mas como uma união de ferramentas padronizadas projetadas para construir ambientes da Web. É, para simplificar, o estrutura sobre a qual construir a Web visual e interativa que conhecemos hoje.
HTML5 une HTML, JavaScript e CSS para criar e projetar aplicativos em Web2 e Web3. Por exemplo, toda vez que você visita o Facebook, o HTML5 está presente. Mas quando você visita o Uniswap, o HTML5 também, afinal ambos são páginas da web, apenas seu funcionamento interno os torna diferentes.
Assim, a primeira "linguagem" que você deve levar em conta na hora de criar serviços em Web3 é justamente o HTML5, já que lhe dará as ferramentas para desenvolver a seção visual de sua aplicação Web.
Solidez (ou a linguagem da smart contract da cadeia de blocos)
A segunda linguagem a ter em conta na hora de programar em blockchain é Solidity, a linguagem de programação de smart contracts de grande parte das blockchains mais utilizadas.
Solidity É a linguagem por excelência, já que a maioria dos projetos Web3 são desenvolvidos em Ethereum ou redes compatíveis com o Ethereum Virtual Machine (EVM). Então, conhecer o Solidity te ajuda não só a agendar contratos inteligentes no Ethereum, mas em uma ampla seleção de blockchains que Solidity e EVM usam para criar suas soluções de contratos inteligentes.
Por exemplo, Solidity é usado em:
- Polygon
- Cadeia BNB
- Avalanche
- arbitragem
- Fantom
- Cronos
- Klaytn
- GNOSE
- Kava
- Zelo
- Moonbeam
- RSK
- Astar
- Rio de lua
- Mestiço
- Oásis
- Telos
- Theta
- Wanchain
- o Harmony
E esta é uma pequena lista de mais de 100 blockchains suportados por EVM, o que deixa claro o fato de que conhecer o Solidity abre enormes possibilidades no desenvolvimento Web3.
Claro, o outro lado desta situação também entra em jogo: existem plataformas blockchain com capacidade para Web3 que não são compatíveis com o Solidity. Nesse caso, outras linguagens de programação entram em jogo, como:
- C++ usado em EOS e Ontologia.
- Haskell usado em Cardano.
- Míssil usado em NEO e sua NEO Virtual Machine, que oferece suporte nativo para .NET (C#, VB.Net e F#), bem como Python, Go, Java, Kotlin e JavaScript.
- Rust é usado em redes como Cosmos, por meio do CosmosWASM, embora também haja suporte para outros idiomas.
Como você pode ver, o suporte a linguagens de programação no blockchain é muito amplo e as possibilidades de criar contratos inteligentes usando-as são praticamente infinitas.
Python
Python é uma linguagem de programação com enormes possibilidades, não apenas para a construção de aplicativos de desktop, mas para campos tão diversos quanto pesquisa científica, análise de dados, IA e, claro, blockchain.
Em blockchain, o Python é amplamente utilizado para análise de dados, desenvolvimento de aplicações Web (utilizando frameworks como Django ou Flask), aplicações desktop (Electrum Wallet, é um exemplo) ou simplesmente para habilitar o acesso a APIs Web3 utilizando esta linguagem amplamente adotada no mundo da computação (por exemplo, Web3 Python permite criar aplicativos descentralizados compatíveis com EVM).
É justamente a grande versatilidade do Python que o torna tão amplamente utilizado no ecossistema. E, de fato, agora com o advento de poderosas interfaces de IA, a maioria delas desenvolvidas em Python, essa linguagem terá uma enorme explosão de uso para integrar Web3 e IA de maneira mais eficaz.
Ferrugem
Rust é outra linguagem de programação que está sendo usada no mundo do blockchain, pois foi projetada para estar seguro por padrão no nível da memória (memória segura). Isso significa que os programas criados em Rust possuem proteções que por padrão os tornam mais seguros sem perder velocidade.
Rust é amplamente utilizado em blockchain para gerar as conhecidas Máquinas Virtuais (VM) ou para contratos inteligentes que buscam evitar problemas relacionados ao gerenciamento de espaços de memória e gerenciamento de variáveis. Além disso, também é utilizado na implementação de nodes e softwares de infraestrutura que buscam ser mais seguros para atender usuários ávidos por descentralização.
Um bom exemplo desse uso pode ser visto em Rust-Web3, uma implementação do Web3 para Ethereum. Também podemos encontrá-lo na construção do SputnikVM, um EVM compatível com WASM para redes baseadas em Ethereum que é implementado em Rust.
CosmosWasm ou CosmWasm também é capaz de usar Rust para gerar contratos inteligentes com suporte multi-chain ou multi-chain. Solana e NEAR também usam Rust para a geração de seus contratos inteligentes.
De fato, Rust é uma das linguagens de programação mais usadas para construir sistemas de privacidade como zk-SNARKs e zk-STARKs em diferentes blockchains, o que é considerado o futuro de muitas dessas redes.
TypeScript
TypeScript é um superconjunto de JavaScript, ou seja, TypeScript é JavaScript com vitaminas na forma de pequenas alterações de sintaxe, digitação forte e várias adições destinadas a melhorar a legibilidade e a pureza do código.
Sendo um superconjunto, quem conhece JavaScript se adapta rapidamente ao TypeScript, e geralmente quem chega ao TypeScript não o abandona. Afinal, o que você pode fazer em JavaScript, você pode fazer em TypeScript, geralmente muito mais fácil e com ferramentas melhores se você estiver interessado em tem código mais seguro.
Aqui não falaremos sobre o típico flamewar de JavaScript vs TypeScript, já que no final ambos são linguagens de programação perfeitamente capazes que os desenvolvedores podem usar em seus projetos.
Mas o crescimento do TypeScript na indústria o coloca na lista por um motivo: muitos projetos Web3 estão migrando do JavaScript para o TypeScript. Um bom exemplo disso é a própria biblioteca web3.js, que inicialmente foi escrita em JavaScript e desde 2020 começou a migração para TypeScript (a partir da versão 1.3.0).
Go
Go ou Golang, é outra linguagem de programação que tem sofrido uma rápida expansão em seu uso devido a uma situação muito parecida com a que vemos em Rust: a segurança.
Go é uma linguagem de programação focada em fornecer um ambiente de memória seguro, um grande sistema de coletor de lixo, facilitar a compilação cruzada (Cruz cadeia, permitindo suporte multiplataforma rapidamente), entre outros recursos que o tornam eficiente em nível computacional.
No mundo blockchain e P2P existem dois grandes projetos que se destacam pelo uso do Go como principal linguagem de programação. O primeiro projeto é Vá Ethereum ou GETH, o software líder para nós Ethereum e redes compatíveis. Enquanto o segundo projeto é IPFS ou sistema de arquivos interplanetário, a principal plataforma para armazenar dados descentralizados usados em DApps.
Razões suficientes para aprender Go? A verdade é que existem muitos mais, especialmente se você estiver interessado em implantar infraestruturas de blockchain. Por exemplo, o Docker, um dos softwares de contêineres mais usados no mundo, é escrito em Go, portanto, conhecer a linguagem ajuda os programadores a criar ferramentas personalizadas (soluções internas) para sua infraestrutura, caso usem o Docker.
Projetos como Kubernetes, InfluxDB, OpenShift e lnd (uma implementação da Lightning Network do Bitcoin) são outros projetos relacionados ao mundo blockchain que também são construídos em Go.
Ruby
Ruby é uma daquelas linguagens mais incompreendidas no mundo da programação. Muitos vão te dizer que não vale a pena aprender, que é complexo e difícil. A realidade é que Ruby é amplamente utilizado na indústria para criar soluções confiáveisDe fato, muitas exchanges dependem de Ruby para desenvolver o software que executa suas plataformas e, não se engane, o mesmo vale para o mundo descentralizado.
Redes como a Ethereum têm tudo o que é necessário para usar essa linguagem no desenvolvimento de Dapps. O mesmo acontece em outras redes como NEO, Cosmos, Avalanche ou Polkadot. Um projeto bastante conhecido que utiliza essa linguagem é o Peatio, considerado um dos maiores projetos de código aberto para o desenvolvimento de bolsas e que pode ser usado para criar trocas descentralizadas (DEX).
GraphQL
GraphQL não é uma linguagem de programação como tal, mas uma linguagem para criar solicitações de dados por meio de APIs.
O GraphQL permite que você escrever esquemas de solicitação que usam APIs de uma plataforma para obter acesso a tais informações. Dessa forma, fica mais fácil para os programadores acessarem os dados que estão dentro de uma plataforma, utilizando uma estrutura padronizada para isso.
O GraphQL começou como um desenvolvimento interno do Facebook e, desde seu lançamento como software livre, tem sido utilizado em diferentes projetos com o mesmo objetivo: facilitar a vida dos desenvolvedores.
No blockchain, o GraphQL é usado para acessar dados de terceiros acessíveis por meio de APIs. Por exemplo, Bitquery tem um acesso de API compatível com GraphQL com o qual você pode acessar dados de blockchains como Bitcoin, Bitcoin Cash, Ethereum, Litecoin e outras criptomoedas e blockchains.
A utilidade disso é que você pode acessar essas informações sem ter diretamente essa infraestrutura, reduzindo custos e acelerando o desenvolvimento. Se você não gosta de soluções centralizadas, pode ir para outros projetos como The Graph, que também oferecem esse potencial, mas usando soluções descentralizadas.
SQL e noSQL
Este último, claro, pode ser complementado com o conhecimento de linguagens como SQL e noSQL. Ambas as linguagens são úteis para desenvolver aplicativos Web3 ou aplicativos não Web3, mas ainda úteis no espaço blockchain.
Por exemplo, um explorador de blocos é especialmente útil para usuários de criptomoedas, mas não seria tão útil se não fosse pelos bancos de dados SQL que suportam sua operação.
Neste mundo há muitas escolhas a fazer, mas as mais importantes são:
- SQL: MySQL, MariaDB, MSSQL, OracleDB ou PostgreSQL
- noSQL: MongoDB, Redis, Cassandra, Firebase, InfluxDB.
Conclusão
Como você pode ver nesta lista, nomeamos mais de 10 idiomas (especialmente ao programar contratos inteligentes), mas, mesmo assim, mencionamos as principais áreas de interesse que você deve levar em consideração ao desenvolver aplicativos Web3.
A realidade é que o mundo da programação está em constante mudança, que existem ferramentas que podem ou não ser mais adequadas para uma determinada tarefa, mas isso é algo que você deve estudar ao começar a desenvolver um aplicativo, para finalmente decidir quais linguagens e ferramentas você usará para tornar seu projeto uma realidade.