Português English
Afie o Código Enferrujado feature
2023.04.23

Afie o Código Enferrujado

PortuguêsEnglish

Era uma vez, no mundo dos parênteses e chaves, eu, um entusiasta dedicado do C#, iniciei uma emocionante aventura para explorar o intrigante reino do Rust. Este último surgiu como uma supernova, conquistando os corações e mentes de desenvolvedores em todo o mundo. Com seu foco em segurança, desempenho e concorrência, o Rust atraiu um grupo leal de fãs, e até mesmo o kernel do Linux sucumbiu ao seu encanto. Enquanto o Rust fazia ondas no universo da programação de sistemas, o C# atuava nos bastidores, exibindo com confiança suas novas habilidades de desempenho e preparado para encarar qualquer desafio.

Apesar do Rust me seduzir com seus recursos de segurança e rápido desempenho, sua sintaxe enigmática e opções de design peculiares logo me fizeram desejar o conforto familiar do C#. Ouvi dizer que o C# e o .NET 7 estavam se fortalecendo na academia de desempenho, então decidi retomar nosso relacionamento. Neste artigo, compartilharei minha jornada de retorno ao C# e compararei sua renovada potência com o Rust, usando alguns resultados de benchmarking.

C# Afia Sua Lâmina

Acontece que, enquanto eu flertava com o Rust, o C# estava aperfeiçoando suas habilidades como um mestre ferreiro. Os desenvolvedores do .NET se dedicaram incansavelmente para melhorar o desempenho do C# e do ambiente de execução .NET, resultando no afiado .NET 7.

O Computer Language Benchmarks Game destacou os frutos do trabalho árduo do C#, mostrando avanços notáveis no tempo de execução e no uso de memória. O C# agora rivaliza com o Rust nos benchmarks de desempenho, provando que não é mais um competidor discreto no cenário.

Enquanto isso, os benchmarks de frameworks web do TechEmpower colocaram o ASP.NET Core entre os melhores, demonstrando que o C# e o .NET podem entregar aplicativos web de alta performance com a precisão de uma lâmina bem forjada, competindo com frameworks web baseados em Rust, como o Axum.

“Novo” Superpoder do C#

Durante seu tempo na forja, o C# descobriu um novo superpoder: a compilação Ahead-of-Time (AOT). Essa habilidade permite que o C# compile o código em código nativo de máquina antes da execução, eliminando o processo de compilação Just-In-Time (JIT) mais demorado.

A compilação AOT não apenas diminui os tempos de inicialização, mas também aperfeiçoa a otimização do desempenho. As compilações AOT e JIT são como dois super-heróis com diferentes histórias de origem, cada um com seus pontos fortes e fracos. AOT, o mais proativo dos dois, compila o código em código nativo de máquina antes da execução, exibindo sua força para diminuir os tempos de inicialização e otimizar o desempenho. Por outro lado, o JIT, o herói mais calmo e reflexivo, compila o código durante a execução, dedicando tempo para otimizar com base no uso real do aplicativo.

O C#, sendo o camaleão voltado para aplicações e versátil que é, inicialmente escolheu o JIT como seu parceiro leal. No entanto, à medida que o C# percebeu que poderia atender a cenários de desempenho mais exigentes, como jogos, adotou o AOT, saindo de sua zona de conforto e expandindo seus horizontes.

O Lado “Enferrujado” da Moeda

O Rust é, sem dúvida, uma linguagem fascinante, exibindo foco em segurança e desempenho notável. No entanto, sua sintaxe e escolhas de design às vezes podem parecer decifrar hieróglifos antigos. Com várias palavras-chave abreviadas, como fn, mut e impl, o Rust pode muito bem-estar se comunicando em código.

Além disso, a sintaxe do Rust se desvia significativamente de linguagens mais familiares, como C# e Java. Os conceitos de tempo de vida e propriedade do Rust podem deixar desenvolvedores acostumados a linguagens com gerenciamento automático de memória (garbage collection) confusos e perplexos.

Marque uma caixa sobre qual conceito você já ouviu falar:

Parabéns: você marcou Zero pontos!

Enquanto isso, o C# mantém sua elegante simplicidade, com palavras-chave significativas e escolhas de design que priorizam a legibilidade e a facilidade de uso. Com o tempo, o C# começou a adotar recursos modernos como correspondência de padrões, tipos de referência nulos e async/await, mantendo seu charme.

De Volta para O Futuro

Minha aventura no Rust foi, sem dúvida, uma experiência reveladora, permitindo-me apreciar as poderosas capacidades de ambas as linguagens. No entanto, a sintaxe enigmática e as escolhas de design do Rust me deixaram desejando o conforto quente e familiar do C#. Ao retornar ao C# mais recente, descobri uma linguagem que evoluiu e se adaptou, oferecendo uma combinação potente de desempenho, elegância e facilidade de uso.

Enquanto o C# e o .NET 7 desfrutam dos holofotes, eles pouco sabem que o .NET 8 está nos forno, pronto para nos deslumbrar com ainda mais melhorias. O boato é que o .NET 8 incorporará ainda mais funcionalidades de bibliotecas populares de terceiros, tornando-se uma opção ainda mais atraente para os desenvolvedores. Com o ritmo de inovação acelerando, o futuro do C# e do universo .NET parece mais brilhante do que nunca.

Então, meus colegas desenvolvedores, que minha história seja um testemunho da importância de manter a mente aberta e ousar explorar novos horizontes. No entanto, às vezes, a grama não é sempre mais verde do outro lado. No meu caso, descobri que o C# era a mistura de poder e familiaridade que eu estava procurando o tempo todo.

Ao navegar pelos mares tumultuados das linguagens de programação, lembre-se de considerar as necessidades específicas do seu projeto, os requisitos de desempenho e as preferências pessoais. Cada linguagem tem suas peculiaridades e encantos, e a escolha certa dependerá das suas circunstâncias únicas. No final, trata-se de encontrar a linguagem que faz seu coração bater e seu código voar.


Bruno MASSA