Antes mesmo de falar sobre o C# e .Net se você ainda não conhece sobre linguagens de programação e suas características recomendo a leitura do meu post Linguagens de Programação – Tio Aguiar .
O que é o C# (C-Sharp)?
O C# é uma linguagem de programação compilada, fortemente tipada e de alto nível. Esta linguagem permite aplicar a programação orientada a objetos e orientada a componentes. Outra característica do C# é que ela é uma linguagem de código gerenciado, mas o que isso significa?
Código gerenciado – É o código que para ser executado necessita de um gerenciador. Esse gerenciador cuida automaticamente da memória, segurança e outros recursos básicos da máquina, isso significa que o desenvolvedor irá interagir menos com os recursos de máquina.
Você sabia? Além do C# o Java e o Kotlin também é uma linguagem de código gerenciado.
No C# este gerenciador é chamado de CLR – Common Language Runtime. O CLR é pega o código de linguagem intermediária gerada pelo compilador do C#, ele compila em linguagem de máquina ou binária e executa o mesmo. Este gerenciador é responsável em cuidar do acesso a memória, define os limites de segurança entre outras funções.
O fato do desenvolvedor não controlar esses recursos não quer dizer que ele fique limitado. Em linguagem não gerenciada como C++ ou Pascal(popular Delphi), o desenvolvedor tinha que se preocupar com acesso a memória, segurança e outros. Mas com o C# você não tem essa preocupação, isso não significa que o desenvolvedor fica limitado, pelo contrário, na verdade ele ganha em produtividade e se concentra no mais importante – desenvolver software para atender os requisitos de negócio.
Origem do C#
O C# foi desenvolvido pela Microsoft por uma equipe liderada por Anders Hejlsberg (responsável também pelo desenvolvimento do Delphi e Turbo Pascal). O seu desenvolvimento iniciou em 1999 e a linguagem foi lançada em 2002 como parte da plataforma .NET.
Porque aprender C#?
O C# é uma excelente linguagem para quem está começando aprender a programar. Por que?
- Fácil aprendizado: Além de ter uma ampla documentação disponível e rico conteúdo na internet, ela é simples e objetiva.
- Versatilidade: Permite a criação de aplicações web, mobile e desktop. Você pode desenvolver até mesmo jogos e softwares para dispositivos eletrônicos e muito mais.
- Maturidade: Embora lançado em 2002, a linguagem está em constante evolução simplificando e melhorando a produtividade dos desenvolvedores. Encontramos bastante conteúdo disponibilizado pela comunidade técnica como soluções para problemas comuns em fóruns e blogs. Possui várias bibliotecas que resolvem tarefas do dia a dia e com certa complexidade que os desenvolvedores levariam tempo para desenvolver (exemplo: leitura de arquivos nos formatos XML, JSON e acesso a banco de dados)
- Mercado de trabalho: Muitas das grandes empresas hoje em dia tem adotado o C# como uma de suas principais stacks. Com isso a necessidade de mão de obra na área torna-se cada vez maior.
O que é o .NET?
O .NET (dotnet) é uma plataforma de desenvolvimento (framework) open source (software livre), criada pela Microsoft para criar diferentes tipos de aplicativos em uma variedade de linguagens – isso mesmo você pode usar não somente o C# mas também outras linguagens como o Visual Basic, F# e outras.
Framework – É uma estrutura para que o desenvolvedor possa construir suas aplicações. Os frameworks permitem ao desenvolvedor ter acesso a recursos já desenvolvidos, prontos de tarefas que eles irão utilizar no dia a dia, como escrita de arquivos, acesso a dados e muitos outros.
Por que usar um framework? – (1) Poupam tempo e aumentam a produtividade e reduz riscos. (2) Já foi validado e testado o que torna confiável seu uso. (3) Não compensa começar algo que já está pronto do zero.
Dica Importante- Frameworks melhoram nossa produtividade, mas a medida que você pegar mais experiência tente entender como eles funcionam. Com frameworks de código aberto você tem a oportunidade de conhecer o código fonte, faça isso para a medida que evolui seu aprendizado.
Como o .NET trabalha?
Você talvez tenha ficado curioso e se perguntado como é possível o .NET suportar múltiplas linguagens para desenvolver aplicações?
Com o .NET é possível compartilhar bibliotecas escritas em C# e com outras escritas em Visual Basic.
Para saber como isso é possível vamos entender como tudo funciona: cada linguagem suportada pelo .NET tem o seu próprio compilador, esse compilador NÃO gera um código em linguagem binária ou de máquina como ocorre em linguagens não gerenciada, para chegar em uma linguagem de máquina o .NET dá dois passos importantes:
Passo 1: Os compiladores das linguagens geram um código intermediário chamado de IL ou MSIL (linguagem intermediária).
Dica: Para você entender melhor esse processo do compilador C#, Visual Basic e F# convertendo o código para o IL recomendo olhar o sharplab.io. Nele você pode ver a geração do IL pelo compilador C#. Veja a imagem abaixo no lado esquerdo onde temos um código C# e do lado direito temos o IL gerado pelo compilador C#. Você pode trocar no combo box “code” a linguagem e verá que o resultado em IL do lado direito será praticamente o mesmo.
Passo 2: O gerenciador que cuida dos recursos de máquina como memória e outros do .NET é chamado de CLR (Common Language Runtime) ou o runtime. Ele é responsável por este segundo passo. O que ele faz? O código IL é direcionado ao CLR que possui um compilador JIT (Just in time) que converte a IL em código de máquina específico para o ambiente do computador onde o CLR é executado.
Veja abaixo como é este processo:
Esta forma do .NET trabalhar viabiliza dois de seus maiores diferenciais, (1) suporte a múltiplas linguagens, o fato do compilador da linguagem gerar a IL permite isso. (2) suporte multiplataforma, como o CLR (runtime) gera o código em linguagem de máquina ele é capaz de fazer isso para Windows, Linux ou Mac.
Importante: O segundo diferencial só foi possível a partir da versão .NET Core.
Conclusão
Entender o C# e o .NET nos dá um insight importante: embora o .NET e o C# estejam próximos, interligados, eles são coisas diferentes.
O .NET é uma plataforma ou um framework que (1)permite criar uma variedade de aplicações e (2)oferece suporte a várias linguagens, (3)oferece ao desenvolvedor acesso a bibliotecas com rotinas já desenvolvidas que resolvem problemas comuns do desenvolvedor no dia a dia e (4)possui um gerenciador que cuida dos recursos de máquina durante a execução do programa no computador.
O C# é uma linguagem de programação compilada, fortemente tipada, de alto nível e gerenciada (pelo .NET).
Opinião: Muitas pessoas costumam a encarar o .NET e o C# como uma coisa só. Já ouvi coisas do tipo: “fulano é programador .net”. Muitos falam assim porque tem a percepção que os dois são uma coisa só, a razão disso está no pouco ou na falta de entendimento do que é o .NET e C#. Para quem está começando na área é muito importante entender essas diferenças.
Referências:
O livro C# para Iniciantes foi escrito por profissionais referência no mercado que fizeram um trabalho voluntário para compartilhar um conteúdo altamente rico para quem está dando o seus primeiros passos.
A plataforma do Balta do André Baltiere tem um conteúdo de primeira linha e ele é bastante didático para quem quer aprender C# e muito mais. Vale a pena conferir, inclusive ele tem alguns cursos gratuito.
A Microsoft possui um amplo conteúdo para quem quer começar aprender o desenvolvimento com C# e .NET. Veja abaixo:
O que é o .NET? Uma plataforma de desenvolvedor de software livre. (microsoft.com)
Dê seus primeiros passos com o C# – Training | Microsoft Learn
[…] a estudar o .NET quero dar a você meus parabéns! Talvez você já tenha olhado o meu artigo Entendendo o C# e o .NET. Este artigo ajuda a entender que o .NET é um framework e você entendeu como ele funciona. Mas se […]