Blockchain e o estado da arte do desenvolvimento de software
A programação poliglota e a unificação dos ambientes de execução removem barreiras significativas ao desenvolvimento de aplicativos descentralizados
Lucas Josa
Publicado em 20 de dezembro de 2021 às 10h04.
Quando criança, queria falar várias línguas. Estudei duas ou três, mas ganhei fluência apenas em inglês, pois a quantidade de conteúdo que consumi depois de aprender este idioma me distraiu do meu objetivo.
Não cometi o mesmo erro quando aprendi linguagens de programação. Comecei com Java, mas aprendi C/C++, Go e Python, entre outras, durante a minha carreira.
Em meu trabalho atual com blockchain, é comum eu misturar algumas linguagens, principalmente em exemplos de código-fonte para clientes.
Apesar de ser um exercício divertido, a variedade de linguagens de programação pode ser um grande desafio para projetos de tecnologia.
Quer um exemplo? Os criadores de aplicativos descentralizados (dApps) podem escrever as interfaces web nas linguagens de sua escolha, mas não os contratos inteligentes, que contêm um código-fonte específico para registrar efetivamente as transações no blockchain.
Atualmente, a maioria dos desenvolvedores prefere programar em JavaScript com bibliotecas populares como Node.js ou React, mas precisa utilizar a Solidity para escrever esses contratos inteligentes.
Além da complexidade de combinar diferentes linguagens no mesmo projeto - o que equivaleria a falar vários idiomas na mesma reunião -, faltam muitos profissionais de Solidity.
Enquanto JavaScript ocupa a 7ª posição no índice de 100 linguagens mais populares globalmente, Solidity nem consta do índice. Para piorar, uma pesquisa recente da comunidade revelou que mais de 80% dos profissionais já estão empregados.
Escreva contratos inteligentes em qualquer linguagem
A boa notícia é que converter várias linguagens em formatos “genéricos” que rodam em várias plataformas não é mais um grande desafio em desenvolvimento de software. Os projetos de código aberto LLVM e asm.js, por exemplo, já fornecem essa funcionalidade há anos.
No entanto, a programação “poliglota” só se tornou comum nesta geração após a adoção de tecnologias de desenvolvimento nativo para a nuvem (cloud native).
No desenvolvimento cloud native, os aplicativos não se comunicam diretamente, mas por meio de serviços de mensagens oferecidos pelo Google Cloud, AWS ou Azure.
No Google Cloud, por exemplo, os “microsserviços” no Google Kubernetes Engine (GKE) e as “funções” no Google Cloud Functions comunicam-se por meio do Google Pub/Sub.
Não importa em qual linguagem os programadores escrevem cada aplicativo, contanto que eles se comuniquem por meio de serviços de mensagens.
Porém, cada linguagem ainda exige um ambiente de execução específico. Os aplicativos Java, por exemplo, são executados na Java Virtual Machine (JVM), e os aplicativos Solidity são executados na Ethereum Virtual Machine (EVM).
Para resolver esse problema, Google, Mozilla e Microsoft criaram o WebAssembly em 2017, que acabou de vencer o “Oscar” das linguagens de programação. Essa tecnologia permite que aplicativos escritos em qualquer linguagem compartilhem o mesmo ambiente de execução, incluindo as próximas gerações da EVM.
Com essa ferramenta, os contratos inteligentes também podem ser criados em JavaScript, Kotlin e Rust, entre outras linguagens.
A mudança pode por si só adicionar milhões de desenvolvedores à comunidade para acelerar a jornada de empresas e governos, de forma a construir softwares mais confiáveis, seguros e transparentes baseados em blockchain.
Rode contratos inteligentes em qualquer lugar
Além de serem escritos em qualquer linguagem, os contratos inteligentes poderão rodar em qualquer lugar com o WebAssembly - desde nuvens como Google Cloud até dispositivos de Internet das Coisas (Internet of Things ou IoT) ou edge (borda).
Um ótimo exemplo é o projeto de código aberto Krustlet, criado pela Microsoft no ano passado, que permite lançar aplicativos compilados para WebAssembly sem empacotá-los em contêineres, máquinas virtuais ou servidores bare metal. Embora experimental, o Krustlet está disponível para Google Cloud, AWS e Azure.
Ainda que a capacidade de executar contratos inteligentes na borda não seja um desafio tão urgente quanto o crescimento da comunidade de desenvolvedores, essa é uma possibilidade de aplicação fascinante da tecnologia blockchain.
Reúna todas as comunidades na blockchain
Conforme o mercado de blockchain amadurece, o desenvolvimento de dApps segue as mesmas tendências do desenvolvimento de software geral, como a programação poliglota e a unificação dos ambientes de execução.
Esse movimento natural e desejado reduz o número de linguagens, ferramentas e outras tecnologias que os programadores precisam utilizar diariamente, agilizando a integração de novos profissionais ao mercado.
Afinal, construir aplicativos que sejam mais confiáveis, seguros e transparentes para nossas famílias e comunidades exigirá muito mais desenvolvedores do que temos hoje.
Embora não seja uma prioridade tão alta quanto os rollups de Camada 2, o suporte à WebAssembly na Ethereum 2.0 será essencial para aumentar a oferta de programadores e acelerar a adoção de blockchain em massa por empresas e governos nos próximos anos.
As opiniões expressas aqui são minhas e não refletem necessariamente as opiniões da Globant ou da EXAME.
Quando criança, queria falar várias línguas. Estudei duas ou três, mas ganhei fluência apenas em inglês, pois a quantidade de conteúdo que consumi depois de aprender este idioma me distraiu do meu objetivo.
Não cometi o mesmo erro quando aprendi linguagens de programação. Comecei com Java, mas aprendi C/C++, Go e Python, entre outras, durante a minha carreira.
Em meu trabalho atual com blockchain, é comum eu misturar algumas linguagens, principalmente em exemplos de código-fonte para clientes.
Apesar de ser um exercício divertido, a variedade de linguagens de programação pode ser um grande desafio para projetos de tecnologia.
Quer um exemplo? Os criadores de aplicativos descentralizados (dApps) podem escrever as interfaces web nas linguagens de sua escolha, mas não os contratos inteligentes, que contêm um código-fonte específico para registrar efetivamente as transações no blockchain.
Atualmente, a maioria dos desenvolvedores prefere programar em JavaScript com bibliotecas populares como Node.js ou React, mas precisa utilizar a Solidity para escrever esses contratos inteligentes.
Além da complexidade de combinar diferentes linguagens no mesmo projeto - o que equivaleria a falar vários idiomas na mesma reunião -, faltam muitos profissionais de Solidity.
Enquanto JavaScript ocupa a 7ª posição no índice de 100 linguagens mais populares globalmente, Solidity nem consta do índice. Para piorar, uma pesquisa recente da comunidade revelou que mais de 80% dos profissionais já estão empregados.
Escreva contratos inteligentes em qualquer linguagem
A boa notícia é que converter várias linguagens em formatos “genéricos” que rodam em várias plataformas não é mais um grande desafio em desenvolvimento de software. Os projetos de código aberto LLVM e asm.js, por exemplo, já fornecem essa funcionalidade há anos.
No entanto, a programação “poliglota” só se tornou comum nesta geração após a adoção de tecnologias de desenvolvimento nativo para a nuvem (cloud native).
No desenvolvimento cloud native, os aplicativos não se comunicam diretamente, mas por meio de serviços de mensagens oferecidos pelo Google Cloud, AWS ou Azure.
No Google Cloud, por exemplo, os “microsserviços” no Google Kubernetes Engine (GKE) e as “funções” no Google Cloud Functions comunicam-se por meio do Google Pub/Sub.
Não importa em qual linguagem os programadores escrevem cada aplicativo, contanto que eles se comuniquem por meio de serviços de mensagens.
Porém, cada linguagem ainda exige um ambiente de execução específico. Os aplicativos Java, por exemplo, são executados na Java Virtual Machine (JVM), e os aplicativos Solidity são executados na Ethereum Virtual Machine (EVM).
Para resolver esse problema, Google, Mozilla e Microsoft criaram o WebAssembly em 2017, que acabou de vencer o “Oscar” das linguagens de programação. Essa tecnologia permite que aplicativos escritos em qualquer linguagem compartilhem o mesmo ambiente de execução, incluindo as próximas gerações da EVM.
Com essa ferramenta, os contratos inteligentes também podem ser criados em JavaScript, Kotlin e Rust, entre outras linguagens.
A mudança pode por si só adicionar milhões de desenvolvedores à comunidade para acelerar a jornada de empresas e governos, de forma a construir softwares mais confiáveis, seguros e transparentes baseados em blockchain.
Rode contratos inteligentes em qualquer lugar
Além de serem escritos em qualquer linguagem, os contratos inteligentes poderão rodar em qualquer lugar com o WebAssembly - desde nuvens como Google Cloud até dispositivos de Internet das Coisas (Internet of Things ou IoT) ou edge (borda).
Um ótimo exemplo é o projeto de código aberto Krustlet, criado pela Microsoft no ano passado, que permite lançar aplicativos compilados para WebAssembly sem empacotá-los em contêineres, máquinas virtuais ou servidores bare metal. Embora experimental, o Krustlet está disponível para Google Cloud, AWS e Azure.
Ainda que a capacidade de executar contratos inteligentes na borda não seja um desafio tão urgente quanto o crescimento da comunidade de desenvolvedores, essa é uma possibilidade de aplicação fascinante da tecnologia blockchain.
Reúna todas as comunidades na blockchain
Conforme o mercado de blockchain amadurece, o desenvolvimento de dApps segue as mesmas tendências do desenvolvimento de software geral, como a programação poliglota e a unificação dos ambientes de execução.
Esse movimento natural e desejado reduz o número de linguagens, ferramentas e outras tecnologias que os programadores precisam utilizar diariamente, agilizando a integração de novos profissionais ao mercado.
Afinal, construir aplicativos que sejam mais confiáveis, seguros e transparentes para nossas famílias e comunidades exigirá muito mais desenvolvedores do que temos hoje.
Embora não seja uma prioridade tão alta quanto os rollups de Camada 2, o suporte à WebAssembly na Ethereum 2.0 será essencial para aumentar a oferta de programadores e acelerar a adoção de blockchain em massa por empresas e governos nos próximos anos.
As opiniões expressas aqui são minhas e não refletem necessariamente as opiniões da Globant ou da EXAME.