CORAZZA.DEV

Estação #01

Capa de A História do .NET e do C#

A História do .NET e do C#

Marcos Corazza | 26 junho 2026
#csharp#dotnet#historia#fundamentos

Descubra a fascinante jornada do C# e do ecossistema .NET! Neste artigo, exploramos desde a sua criação por Anders Hejlsberg para resolver o "DLL Hell" e competir com o Java, até sua grande revolução open-source com o .NET Core. Entenda a diferença vital entre a linguagem (C#) e a plataforma de execução (.NET), veja como recursos como LINQ e async moldaram o mercado e descubra por que o .NET moderno é hoje uma das tecnologias multiplataforma mais rápidas e requisitadas da indústria.

RESUMO
Palavras:~1.940
Leitura:8 min
Linha01 Fundamentos
Progresso: 5.6% [■-------------------]

Toda grande jornada precisa de um ponto de partida. Antes de mergulharmos em interfaces complexas, gerenciamento de memória, concorrência assíncrona ou injeção de dependência, precisamos entender o "porquê". Por que o C# existe? Como ele sobreviveu e prosperou por mais de duas décadas na implacável indústria de tecnologia?

Para entender a força arquitetural do C# e do ecossistema .NET, precisamos fazer uma viagem no tempo. Voltaremos ao final dos anos 1990, uma época em que o desenvolvimento de software para a internet estava em sua infância, a Microsoft dominava os sistemas operacionais de desktop e o mundo da programação estava prestes a passar por um terremoto de proporções globais.

O Caos Antes da Ordem: O Famoso "DLL Hell"

No final da década de 1990, desenvolver para o ecossistema Windows significava lidar, primariamente, com C, C++ ou Visual Basic. A arquitetura dominante para a criação de componentes reutilizáveis era o COM (Component Object Model). Embora fosse revolucionário para a época por permitir que diferentes componentes de software conversassem entre si, o COM trazia consigo um pesadelo logístico que assombrava os desenvolvedores: o infame DLL Hell (Inferno das DLLs).

O que era o DLL Hell?

Era uma situação crônica onde a instalação de um novo programa substituía bibliotecas de vínculo dinâmico (DLLs) compartilhadas no sistema operacional por versões mais recentes (ou incompatíveis). Isso frequentemente quebrava softwares antigos que dependiam da versão anterior daquela mesma biblioteca. Não havia isolamento, versionamento lado a lado eficiente ou segurança de execução.

Nessa mesma época, a Sun Microsystems (posteriormente adquirida pela Oracle) lançou a linguagem Java. O Java prometia algo quase mágico: "Write Once, Run Anywhere" (Escreva uma vez, rode em qualquer lugar). Ele rodava em uma Máquina Virtual (JVM), oferecia coleta de lixo automatizada (Garbage Collection) e isolava o código do sistema operacional base. A adoção foi imediata e avassaladora.

A Microsoft tentou entrar nesse jogo criando sua própria versão do Java, o Visual J++. No entanto, a Sun processou a Microsoft por quebra de licença e por estender a linguagem com recursos específicos para Windows, ferindo o princípio multiplataforma. Impedida de evoluir o Visual J++, a Microsoft se viu diante de uma encruzilhada: ou criava algo novo e superior, ou perderia a guerra do desenvolvimento de software corporativo moderno.

O Projeto "COOL" e o Gênio Anders Hejlsberg

Em janeiro de 1999, a Microsoft reuniu uma equipe liderada por uma verdadeira lenda da programação: Anders Hejlsberg.

Hejlsberg não era um novato. Ele foi o arquiteto-chefe por trás do Turbo Pascal e do Delphi na Borland, ferramentas que revolucionaram a produtividade no desenvolvimento de software. A missão de Hejlsberg na Microsoft era clara: criar uma nova linguagem de programação orientada a objetos que combinasse o poder computacional do C++ com a facilidade e produtividade do Visual Basic.

Originalmente, a linguagem foi batizada com o codinome COOL (C-like Object Oriented Language). No entanto, por questões de direitos autorais e marcas registradas, o nome foi alterado. Nascia então o C# (pronuncia-se C-Sharp).

O nome possui duas inspirações interessantes:

  1. Musical: Na notação musical, o sustenido (sharp, representado pelo símbolo ♯) indica que a nota deve ser elevada em um semitom. O C# seria um "C" (C++) um tom acima, aprimorado.

  2. Visual: Se você olhar de perto, o símbolo # é formado por quatro sinais de +, sugerindo de forma criativa que a linguagem é o próximo passo evolutivo após o C++.

Em julho de 2000, no Professional Developers Conference (PDC), a Microsoft anunciou publicamente o C# e a plataforma .NET Framework.

A Base do Ecossistema: O que é o .NET?

Muitos iniciantes confundem o C# com o .NET. Para ter sucesso na nossa jornada (e nas próximas estações deste roadmap), é crucial separar os dois conceitos desde já:

  • C# (A Linguagem): É a sintaxe, as regras gramaticais, o vocabulário. É como você expressa a sua lógica.

  • .NET (A Plataforma/Ecossistema): É o ambiente onde o seu código C# vive, respira e é executado. Ele fornece o compilador, as bibliotecas base (arquivos, rede, coleções) e a máquina de execução.

A grande sacada de Anders Hejlsberg e sua equipe não foi apenas criar uma nova linguagem, mas sim uma arquitetura de execução completamente nova, baseada no Common Language Runtime (CLR).

Quando você compila um código C#, ele não é transformado diretamente em código de máquina (0s e 1s que o processador entende na hora). Em vez disso, ele é compilado para uma linguagem intermediária chamada IL (Intermediate Language).

Quando o usuário executa o programa, o CLR entra em ação. Um componente interno chamado JIT (Just-In-Time Compiler) lê esse código IL e o compila para código de máquina nativo no exato momento da execução, otimizando-o especificamente para o hardware onde o programa está rodando.

Essa arquitetura resolveu dezenas de problemas de uma só vez:

  • Trouxe a tão sonhada coleta de lixo (Garbage Collector), libertando o desenvolvedor de alocar e desalocar memória manualmente.

  • Permitiu que múltiplas linguagens (C#, F#, VB.NET) conversassem entre si perfeitamente, já que todas eram compiladas para o mesmo IL.

  • Acabou com o DLL Hell, introduzindo um sistema de versionamento robusto e isolamento de dependências.

A Evolução do C#: De Copiador a Pioneiro

Logo após seu lançamento, o C# 1.0 (2002) foi duramente criticado por alguns puristas que o chamavam de "clone do Java da Microsoft". De fato, a versão 1.0 era básica, focada estritamente em Orientação a Objetos pura.

No entanto, a partir da versão 2.0, o C# deixou de seguir tendências para ditar o futuro do desenvolvimento de software. Vamos observar os marcos evolutivos mais importantes dessa jornada:

C# 2.0 (2005) - A Era dos Generics

Introduziu os tipos genéricos (Generics). Isso mudou o jogo da performance. Antes, para criar uma lista que aceitasse qualquer tipo de dado, usava-se o tipo base object, o que causava operações lentas e de alto custo computacional na memória (chamadas de Boxing e Unboxing). Os Generics permitiram a criação de coleções fortemente tipadas e incrivelmente rápidas.

C# 3.0 (2007) - A Revolução do LINQ

Para muitos, este foi o momento em que o C# se consagrou como a melhor linguagem de mercado. A introdução do LINQ (Language Integrated Query), expressões Lambda e tipos anônimos trouxe conceitos de programação funcional para o C#. Pela primeira vez, os desenvolvedores podiam consultar coleções de dados em memória, bancos de dados e arquivos XML usando uma sintaxe declarativa nativa na linguagem.

C# 4.0 (2010) - O Mundo Dinâmico

Com o advento da linguagem dynamic, o C# tornou-se capaz de interoperar perfeitamente com linguagens de tipagem dinâmica (como Python e Ruby) e com o ecossistema Office, facilitando automações corporativas.

C# 5.0 (2012) - A Assincronia Descomplicada

Enquanto o mundo lutava com callbacks aninhados e concorrência complexa, o C# 5 introduziu as palavras-chave async e await. Essa abstração matemática elegante tornou a escrita de código assíncrono (como chamadas de rede e leitura de arquivos) tão simples quanto escrever código síncrono. O modelo foi tão bem-sucedido que foi posteriormente copiado por JavaScript, Python, Rust e muitas outras linguagens.

C# 6.0 ao 8.0 (2015-2019) - O Compilador como Serviço (Roslyn)

A Microsoft reescreveu o compilador do C# em... C#. O projeto Roslyn abriu o compilador para o mundo, permitindo análise de código em tempo real. O C# 8 introduziu um paradigma que salvou bilhões de dólares na indústria: os Nullable Reference Types, forçando os desenvolvedores a lidar com exceções de referência nula de forma explícita em tempo de compilação.

C# 9.0+ (O Presente e o Futuro)

Foco total em concisão, imutabilidade com Records, Pattern Matching avançado e alta performance estrutural (como o uso de Span). O C# moderno é elegante, exige menos verbosidade para inicialização de projetos e foca brutalmente em performance em cloud e edge computing.

A Crise de Identidade e o Renascimento: A Era Open Source

Apesar do sucesso esmagador do C# entre 2002 e 2014, um problema arquitetural fundamental prendia a linguagem: O .NET Framework só rodava no Windows.

Com a ascensão exponencial da Computação em Nuvem (AWS, Azure), contêineres (Docker) e microsserviços, o Linux se tornou o rei absoluto dos servidores mundiais. O .NET Framework era pesado, fortemente acoplado ao Windows (usava bibliotecas baseadas na API Win32) e exigia instalações globais nos servidores. A Microsoft estava perdendo espaço rapidamente para Node.js, Go e Python no mundo do desenvolvimento moderno para nuvem.

Em 2014, sob a nova liderança de Satya Nadella, a Microsoft chocou o mundo da tecnologia ao abraçar o movimento Open Source e o Linux.

A equipe de engenharia decidiu que não seria possível apenas "remendar" o .NET Framework antigo. Eles começaram do zero. Em 2016, nasceu o .NET Core.

O .NET Core foi reescrito para ser:

  1. Multiplataforma (Cross-platform): Roda nativamente no Windows, Linux e macOS.

  2. Open Source: Todo o código-fonte foi aberto no GitHub para a comunidade contribuir.

  3. Modular: Em vez de instalar um pacote monolítico de 500 MB no servidor, o .NET Core permite enviar apenas as bibliotecas que seu aplicativo usa, tornando as aplicações leves e perfeitas para Docker e Kubernetes.

  4. Altamente Performático: A reescrita dos fundamentos internos tornou o .NET Core um dos frameworks de web backend mais rápidos do planeta nos famosos benchmarks da TechEmpower.

A Grande Unificação

Ter duas linhas de desenvolvimento (O .NET Framework legado para Windows e o .NET Core moderno para o resto do mundo) gerou confusão na comunidade de desenvolvedores. Bibliotecas precisavam ser feitas em um formato chamado .NET Standard para rodar em ambos.

Para resolver isso, em 2020 a Microsoft lançou o .NET 5. A palavra "Core" foi abandonada para simbolizar que a partir daquele momento existiria apenas um .NET.

Característica.NET Framework (Legado).NET Core (Transição).NET 5+ (O Moderno)
SistemasApenas WindowsWindows, Linux, macOSMultiplataforma total, IoT, Mobile, Cloud
Código FonteProprietário (Fechado)Open SourceOpen Source
DeployMonolítico, no Sistema OperacionalLado-a-lado, Self-containedMicro-otimizado (AOT), Cross-compilation
Status AtualManutenção de segurança (Não recebe novos recursos)Descontinuado em favor do .NET 5+É o padrão atual da indústria. Evolução anual garantida.

Hoje, todo o desenvolvimento de novas aplicações — sejam elas APIs REST de alto tráfego bancário, aplicativos móveis cruzados (.NET MAUI), jogos (Unity engine), ou Inteligência Artificial e Machine Learning corporativos — é feito nas versões modernas do .NET unificado (como .NET 8 e sucessores).

Por que estudar C# Hoje?

Você está iniciando este roadmap em um dos melhores momentos da história para aprender C#.

A linguagem conseguiu um feito raríssimo na ciência da computação: envelheceu como um bom vinho. Ao invés de se prender ao peso de suas versões legadas, a equipe de engenharia (que ainda conta com a supervisão genial de Anders Hejlsberg e de gigantes como Mads Torgersen) teve a coragem de modernizar o compilador, abraçar o código aberto e otimizar até o último ciclo de CPU e alocação de memória no servidor.

O ecossistema é maduro, a documentação oficial da Microsoft é amplamente considerada a melhor do mercado, e as oportunidades de carreira são sólidas — abrangendo desde grandes corporações bancárias até startups de vanguarda que exigem altíssima performance estrutural.

Nesta nossa primeira estação, compreendemos o cenário macro. Entendemos por que o código roda como roda, a diferença entre a sintaxe (C#) e a plataforma de hospedagem (.NET), e como a evolução histórica moldou o ecossistema em que você vai programar a partir de agora.

Com a bagagem histórica consolidada, prepare-se. Na próxima estação da Linha 1, deixaremos a teoria de lado e sujaremos as mãos com instalação, configuração do SDK, escolha das melhores IDEs (Visual Studio) e o entendimento prático de como a estrutura física de um projeto .NET funciona no seu computador.